From 278bea785be9741e779f8465f4539fd97dd20bd2 Mon Sep 17 00:00:00 2001 From: Michael Richters Date: Tue, 10 Nov 2020 10:51:54 -0800 Subject: [PATCH] Use new testing infrastructure in Redial test cases --- tests/plugins/Redial/basic/test/testcase.cpp | 144 ++++--------------- 1 file changed, 27 insertions(+), 117 deletions(-) diff --git a/tests/plugins/Redial/basic/test/testcase.cpp b/tests/plugins/Redial/basic/test/testcase.cpp index 279b9607..fd941cf3 100644 --- a/tests/plugins/Redial/basic/test/testcase.cpp +++ b/tests/plugins/Redial/basic/test/testcase.cpp @@ -27,142 +27,52 @@ constexpr KeyAddr key_addr_A{2, 1}; constexpr KeyAddr key_addr_X{3, 2}; class RedialBasic : public VirtualDeviceTest { - protected: - std::set expected_keycodes_ = {}; - std::unique_ptr state_ = nullptr; }; -TEST_F(RedialBasic, RedialFirst) { +TEST_F(RedialBasic, RedialWithoutPriorKey) { - // Press redial key - sim_.Press(key_addr_Redial); + PressKey(Millis{10}, key_addr_Redial); + ReleaseKey(Millis{25}, key_addr_Redial); - state_ = RunCycle(); + sim_.RunForMillis(10); + LoadState(); - ASSERT_EQ(state_->HIDReports()->Keyboard().size(), 0) - << "There should be no HID report for a redial key without anything pressed first"; - - // Release redial key - sim_.Release(key_addr_Redial); - sim_.RunCycle(); + ASSERT_EQ(HIDReports()->Keyboard().size(), 0) + << "There should be no HID report without a prior keypress"; } TEST_F(RedialBasic, RedialFirstKey) { - // Press `A` - sim_.Press(key_addr_A); - state_ = RunCycle(); - - ASSERT_EQ(state_->HIDReports()->Keyboard().size(), 1) - << "There should be one report after letter key press"; - - expected_keycodes_.insert(Key_A.getKeyCode()); - EXPECT_THAT(state_->HIDReports()->Keyboard(0).ActiveKeycodes(), - ::testing::ElementsAreArray(expected_keycodes_)) - << "The report should include only `A`"; - - // Release `A` - sim_.Release(key_addr_A); - state_ = RunCycle(); - - ASSERT_EQ(state_->HIDReports()->Keyboard().size(), 1) - << "There should be one report after letter key release"; - - expected_keycodes_.erase(Key_A.getKeyCode()); - EXPECT_THAT(state_->HIDReports()->Keyboard(0).ActiveKeycodes(), - ::testing::ElementsAreArray(expected_keycodes_)) - << "The report should be empty"; - - sim_.RunCycle(); - - // Press redial key - sim_.Press(key_addr_Redial); - - state_ = RunCycle(); - - ASSERT_EQ(state_->HIDReports()->Keyboard().size(), 1) - << "There should now be a redial-key report"; - - expected_keycodes_.insert(Key_A.getKeyCode()); - EXPECT_THAT(state_->HIDReports()->Keyboard(0).ActiveKeycodes(), - ::testing::ElementsAreArray(expected_keycodes_)) - << "The report should include only `A`"; - - // Release redial key - sim_.Release(key_addr_Redial); - state_ = RunCycle(); - - ASSERT_EQ(state_->HIDReports()->Keyboard().size(), 1) - << "There should be one report after redial-key release"; + PressKey(Millis{10}, key_addr_A); + ExpectReport(Cycles{1}, AddKeycodes{Key_A}, "Report should contain only `A`"); + ReleaseKey(Millis{25}, key_addr_A); + ExpectReport(Cycles{1}, RemoveKeycodes{Key_A}, "Report should be empty"); - expected_keycodes_.erase(Key_A.getKeyCode()); - EXPECT_THAT(state_->HIDReports()->Keyboard(0).ActiveKeycodes(), - ::testing::ElementsAreArray(expected_keycodes_)) - << "The report should be empty"; + PressKey(Millis{10}, key_addr_Redial); + ExpectReport(Cycles{1}, AddKeycodes{Key_A}, "Report should contain only `A`"); + ReleaseKey(Millis{25}, key_addr_Redial); + ExpectReport(Cycles{1}, RemoveKeycodes{Key_A}, "Report should be empty"); - sim_.RunCycle(); + sim_.RunForMillis(10); - state_ = RunCycle(); - ASSERT_EQ(state_->HIDReports()->Keyboard().size(), 0); + CHECK_EXPECTED_REPORTS(); } TEST_F(RedialBasic, RedialNextKey) { - // Press `X` - sim_.Press(key_addr_X); - state_ = RunCycle(); - - ASSERT_EQ(state_->HIDReports()->Keyboard().size(), 1) - << "There should be one report after letter key press"; - - expected_keycodes_.insert(Key_X.getKeyCode()); - EXPECT_THAT(state_->HIDReports()->Keyboard(0).ActiveKeycodes(), - ::testing::ElementsAreArray(expected_keycodes_)) - << "The report should include only `X`"; - - // Release `X` - sim_.Release(key_addr_X); - state_ = RunCycle(); - - ASSERT_EQ(state_->HIDReports()->Keyboard().size(), 1) - << "There should be one report after letter key release"; - - expected_keycodes_.erase(Key_X.getKeyCode()); - EXPECT_THAT(state_->HIDReports()->Keyboard(0).ActiveKeycodes(), - ::testing::ElementsAreArray(expected_keycodes_)) - << "The report should be empty"; - - sim_.RunCycle(); - - // Press redial key - sim_.Press(key_addr_Redial); - - state_ = RunCycle(); - - ASSERT_EQ(state_->HIDReports()->Keyboard().size(), 1) - << "There should now be a redial-key report"; - - expected_keycodes_.insert(Key_X.getKeyCode()); - EXPECT_THAT(state_->HIDReports()->Keyboard(0).ActiveKeycodes(), - ::testing::ElementsAreArray(expected_keycodes_)) - << "The report should include only `X`"; - - // Release redial key - sim_.Release(key_addr_Redial); - state_ = RunCycle(); - - ASSERT_EQ(state_->HIDReports()->Keyboard().size(), 1) - << "There should be one report after redial-key release"; + PressKey(Millis{10}, key_addr_X); + ExpectReport(Cycles{1}, AddKeycodes{Key_X}, "Report should contain only `X`"); + ReleaseKey(Millis{25}, key_addr_X); + ExpectReport(Cycles{1}, RemoveKeycodes{Key_X}, "Report should be empty"); - expected_keycodes_.erase(Key_X.getKeyCode()); - EXPECT_THAT(state_->HIDReports()->Keyboard(0).ActiveKeycodes(), - ::testing::ElementsAreArray(expected_keycodes_)) - << "The report should be empty"; + PressKey(Millis{10}, key_addr_Redial); + ExpectReport(Cycles{1}, AddKeycodes{Key_X}, "Report should contain only `X`"); + ReleaseKey(Millis{25}, key_addr_Redial); + ExpectReport(Cycles{1}, RemoveKeycodes{Key_X}, "Report should be empty"); - sim_.RunCycle(); + sim_.RunForMillis(10); - state_ = RunCycle(); - ASSERT_EQ(state_->HIDReports()->Keyboard().size(), 0); + CHECK_EXPECTED_REPORTS(); } } // namespace