TEST(FlagStatus, ScopedTemporaryFlagsChanger) { { FlagStatus flagStatus; flagStatus.increase(ModifierFlag::SHIFT_L); flagStatus.increase(ModifierFlag::SHIFT_L); flagStatus.increase(ModifierFlag::SHIFT_L); flagStatus.increase(ModifierFlag::SHIFT_L); flagStatus.increase(ModifierFlag::SHIFT_R); flagStatus.temporary_increase(ModifierFlag::CONTROL_L); flagStatus.lock_increase(ModifierFlag::COMMAND_R); flagStatus.sticky_increase(ModifierFlag::OPTION_R); EXPECT_EQ(Flags(ModifierFlag::SHIFT_L | ModifierFlag::SHIFT_R | ModifierFlag::CONTROL_L | ModifierFlag::COMMAND_R | ModifierFlag::OPTION_R), flagStatus.makeFlags()); { FlagStatus::ScopedTemporaryFlagsChanger stfc(flagStatus, ModifierFlag::FN | ModifierFlag::OPTION_L | ModifierFlag::SHIFT_R); EXPECT_EQ(Flags(ModifierFlag::FN | ModifierFlag::OPTION_L | ModifierFlag::SHIFT_R), flagStatus.makeFlags()); } EXPECT_EQ(Flags(ModifierFlag::SHIFT_L | ModifierFlag::SHIFT_R | ModifierFlag::CONTROL_L | ModifierFlag::COMMAND_R | ModifierFlag::OPTION_R), flagStatus.makeFlags()); flagStatus.decrease(ModifierFlag::SHIFT_L); flagStatus.decrease(ModifierFlag::SHIFT_L); flagStatus.decrease(ModifierFlag::SHIFT_L); EXPECT_EQ(Flags(ModifierFlag::SHIFT_L | ModifierFlag::SHIFT_R | ModifierFlag::CONTROL_L | ModifierFlag::COMMAND_R | ModifierFlag::OPTION_R), flagStatus.makeFlags()); flagStatus.decrease(ModifierFlag::SHIFT_L); EXPECT_EQ(Flags(ModifierFlag::SHIFT_R | ModifierFlag::CONTROL_L | ModifierFlag::COMMAND_R | ModifierFlag::OPTION_R), flagStatus.makeFlags()); } // ------------------------------------------------------------ { FlagStatus flagStatus; flagStatus.decrease(ModifierFlag::SHIFT_L); flagStatus.decrease(ModifierFlag::SHIFT_L); { Flags flags(ModifierFlag::SHIFT_R); FlagStatus::ScopedTemporaryFlagsChanger stfc(flagStatus, flags); EXPECT_EQ(Flags(ModifierFlag::SHIFT_R), flagStatus.makeFlags()); } flagStatus.increase(ModifierFlag::SHIFT_L); flagStatus.increase(ModifierFlag::SHIFT_L); EXPECT_EQ(Flags(0), flagStatus.makeFlags()); } }
TEST(FlagStatus, decrease) { FlagStatus flagStatus; flagStatus.increase(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L); EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L), flagStatus.makeFlags()); flagStatus.decrease(ModifierFlag::CONTROL_L); EXPECT_EQ(Flags(ModifierFlag::COMMAND_L), flagStatus.makeFlags()); }
TEST(FlagStatus, decrease) { FlagStatus flagStatus; { Vector_ModifierFlag v; v.push_back(ModifierFlag::COMMAND_L); v.push_back(ModifierFlag::CONTROL_L); flagStatus.increase(v); EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L), flagStatus.makeFlags()); } flagStatus.decrease(ModifierFlag::CONTROL_L); EXPECT_EQ(Flags(ModifierFlag::COMMAND_L), flagStatus.makeFlags()); }
TEST(FlagStatus, increase) { { FlagStatus flagStatus; // Do nothing with ModifierFlag::NONE. flagStatus.increase(ModifierFlag::NONE); EXPECT_EQ(Flags(0), flagStatus.makeFlags()); flagStatus.increase(ModifierFlag::SHIFT_L); EXPECT_EQ(Flags(ModifierFlag::SHIFT_L), flagStatus.makeFlags()); { Vector_ModifierFlag v; v.push_back(ModifierFlag::COMMAND_L); v.push_back(ModifierFlag::CONTROL_L); flagStatus.increase(v); EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L), flagStatus.makeFlags()); } flagStatus.increase(ModifierFlag::NONE); EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L), flagStatus.makeFlags()); } { FlagStatus flagStatus; Vector_ModifierFlag v; v.push_back(ModifierFlag::COMMAND_L); v.push_back(ModifierFlag::CONTROL_L); flagStatus.increase(ModifierFlag::SHIFT_L, v); EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L), flagStatus.makeFlags()); } { FlagStatus flagStatus; Vector_ModifierFlag v; v.push_back(ModifierFlag::COMMAND_L); v.push_back(ModifierFlag::CONTROL_L); flagStatus.increase(ModifierFlag::COMMAND_L, v); EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L), flagStatus.makeFlags()); flagStatus.decrease(v); EXPECT_EQ(Flags(0), flagStatus.makeFlags()); } }