TEST(FlagStatus, lazy_increase) { FlagStatus flagStatus; // +1 (total 1) flagStatus.lazy_increase(ModifierFlag::SHIFT_L); EXPECT_EQ(Flags(0), flagStatus.makeFlags()); // +0 (total 1) flagStatus.lazy_set_enable(true); EXPECT_EQ(Flags(ModifierFlag::SHIFT_L), flagStatus.makeFlags()); // -1 (total 0) flagStatus.lazy_decrease(ModifierFlag::SHIFT_L); EXPECT_EQ(Flags(0), flagStatus.makeFlags()); // +1 (total 1) flagStatus.lazy_increase(ModifierFlag::SHIFT_L); EXPECT_EQ(Flags(ModifierFlag::SHIFT_L), flagStatus.makeFlags()); flagStatus.lazy_set_enable(false); EXPECT_EQ(Flags(0), flagStatus.makeFlags()); // +2 (total 2) flagStatus.lazy_increase(ModifierFlag::SHIFT_L); EXPECT_EQ(Flags(0), flagStatus.makeFlags()); // +0 (total 2) flagStatus.lazy_set_enable(true); EXPECT_EQ(Flags(ModifierFlag::SHIFT_L), flagStatus.makeFlags()); // -1 (total 1) flagStatus.lazy_decrease(ModifierFlag::SHIFT_L); EXPECT_EQ(Flags(ModifierFlag::SHIFT_L), flagStatus.makeFlags()); // => 0 (lazy modifier is disabled when reset.) flagStatus.reset(); // +1 (total 1) flagStatus.lazy_increase(ModifierFlag::SHIFT_L); EXPECT_EQ(Flags(0), flagStatus.makeFlags()); }