Add pointing tests (#24513)
This commit is contained in:
parent
d189de24a0
commit
1f7d10902a
29 changed files with 917 additions and 0 deletions
166
tests/pointing/test_pointing.cpp
Normal file
166
tests/pointing/test_pointing.cpp
Normal file
|
@ -0,0 +1,166 @@
|
|||
// Copyright 2024 Dasky (@daskygit)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "mouse_report_util.hpp"
|
||||
#include "test_common.hpp"
|
||||
#include "test_pointing_device_driver.h"
|
||||
#include "mousekey.h"
|
||||
|
||||
using testing::_;
|
||||
|
||||
class Pointing : public TestFixture {};
|
||||
class PointingButtonsViaMousekeysParametrized : public ::testing::WithParamInterface<std::pair<KeymapKey, uint8_t>>, public Pointing {};
|
||||
|
||||
TEST_F(Pointing, SendMouseIsNotCalledWithNoInput) {
|
||||
TestDriver driver;
|
||||
EXPECT_NO_MOUSE_REPORT(driver);
|
||||
run_one_scan_loop();
|
||||
}
|
||||
|
||||
TEST_F(Pointing, Xnegative) {
|
||||
TestDriver driver;
|
||||
|
||||
pd_set_x(-10);
|
||||
EXPECT_MOUSE_REPORT(driver, (-10, 0, 0, 0, 0));
|
||||
run_one_scan_loop();
|
||||
|
||||
pd_clear_movement();
|
||||
// EXPECT_EMPTY_MOUSE_REPORT(driver);
|
||||
run_one_scan_loop();
|
||||
|
||||
VERIFY_AND_CLEAR(driver);
|
||||
}
|
||||
|
||||
TEST_F(Pointing, Xpositive) {
|
||||
TestDriver driver;
|
||||
|
||||
pd_set_x(10);
|
||||
EXPECT_MOUSE_REPORT(driver, (10, 0, 0, 0, 0));
|
||||
run_one_scan_loop();
|
||||
|
||||
pd_clear_movement();
|
||||
// EXPECT_EMPTY_MOUSE_REPORT(driver);
|
||||
run_one_scan_loop();
|
||||
|
||||
VERIFY_AND_CLEAR(driver);
|
||||
}
|
||||
|
||||
TEST_F(Pointing, Ynegative) {
|
||||
TestDriver driver;
|
||||
|
||||
pd_set_y(-20);
|
||||
EXPECT_MOUSE_REPORT(driver, (0, -20, 0, 0, 0));
|
||||
run_one_scan_loop();
|
||||
|
||||
pd_clear_movement();
|
||||
// EXPECT_EMPTY_MOUSE_REPORT(driver);
|
||||
run_one_scan_loop();
|
||||
|
||||
VERIFY_AND_CLEAR(driver);
|
||||
}
|
||||
|
||||
TEST_F(Pointing, Ypositive) {
|
||||
TestDriver driver;
|
||||
|
||||
pd_set_y(20);
|
||||
EXPECT_MOUSE_REPORT(driver, (0, 20, 0, 0, 0));
|
||||
run_one_scan_loop();
|
||||
|
||||
pd_clear_movement();
|
||||
// EXPECT_EMPTY_MOUSE_REPORT(driver);
|
||||
run_one_scan_loop();
|
||||
|
||||
VERIFY_AND_CLEAR(driver);
|
||||
}
|
||||
|
||||
TEST_F(Pointing, XandY) {
|
||||
TestDriver driver;
|
||||
|
||||
pd_set_x(-50);
|
||||
pd_set_y(100);
|
||||
EXPECT_MOUSE_REPORT(driver, (-50, 100, 0, 0, 0));
|
||||
run_one_scan_loop();
|
||||
|
||||
pd_clear_movement();
|
||||
// EXPECT_EMPTY_MOUSE_REPORT(driver);
|
||||
run_one_scan_loop();
|
||||
|
||||
VERIFY_AND_CLEAR(driver);
|
||||
}
|
||||
|
||||
TEST_F(Pointing, CorrectButtonIsReportedWhenPressed) {
|
||||
TestDriver driver;
|
||||
|
||||
EXPECT_MOUSE_REPORT(driver, (0, 0, 0, 0, 1));
|
||||
pd_press_button(POINTING_DEVICE_BUTTON1);
|
||||
run_one_scan_loop();
|
||||
|
||||
EXPECT_EMPTY_MOUSE_REPORT(driver);
|
||||
pd_release_button(POINTING_DEVICE_BUTTON1);
|
||||
run_one_scan_loop();
|
||||
|
||||
EXPECT_NO_MOUSE_REPORT(driver);
|
||||
run_one_scan_loop();
|
||||
|
||||
pd_clear_all_buttons();
|
||||
run_one_scan_loop();
|
||||
|
||||
VERIFY_AND_CLEAR(driver);
|
||||
}
|
||||
|
||||
TEST_F(Pointing, CorrectButtonIsReportedWhenKeyPressed) {
|
||||
TestDriver driver;
|
||||
auto key = KeymapKey(0, 0, 0, KC_MS_BTN1);
|
||||
set_keymap({key});
|
||||
|
||||
EXPECT_MOUSE_REPORT(driver, (0, 0, 0, 0, 1));
|
||||
key.press();
|
||||
run_one_scan_loop();
|
||||
|
||||
EXPECT_EMPTY_MOUSE_REPORT(driver);
|
||||
key.release();
|
||||
run_one_scan_loop();
|
||||
|
||||
EXPECT_NO_MOUSE_REPORT(driver);
|
||||
run_one_scan_loop();
|
||||
|
||||
VERIFY_AND_CLEAR(driver);
|
||||
}
|
||||
|
||||
TEST_P(PointingButtonsViaMousekeysParametrized, MouseKeysViaPointingDriver) {
|
||||
TestDriver driver;
|
||||
KeymapKey mouse_key = GetParam().first;
|
||||
uint8_t button_mask = GetParam().second;
|
||||
|
||||
set_keymap({mouse_key});
|
||||
|
||||
EXPECT_MOUSE_REPORT(driver, (0, 0, 0, 0, button_mask));
|
||||
mouse_key.press();
|
||||
run_one_scan_loop();
|
||||
|
||||
EXPECT_EMPTY_MOUSE_REPORT(driver);
|
||||
mouse_key.release();
|
||||
run_one_scan_loop();
|
||||
|
||||
EXPECT_NO_MOUSE_REPORT(driver);
|
||||
run_one_scan_loop();
|
||||
|
||||
VERIFY_AND_CLEAR(driver);
|
||||
}
|
||||
// clang-format off
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
ButtonsOneToEight,
|
||||
PointingButtonsViaMousekeysParametrized,
|
||||
::testing::Values(
|
||||
// Key , Buttons Mask
|
||||
std::make_pair(KeymapKey{0, 0, 0, QK_MOUSE_BUTTON_1}, 1),
|
||||
std::make_pair(KeymapKey{0, 0, 0, QK_MOUSE_BUTTON_2}, 2),
|
||||
std::make_pair(KeymapKey{0, 0, 0, QK_MOUSE_BUTTON_3}, 4),
|
||||
std::make_pair(KeymapKey{0, 0, 0, QK_MOUSE_BUTTON_4}, 8),
|
||||
std::make_pair(KeymapKey{0, 0, 0, QK_MOUSE_BUTTON_5}, 16),
|
||||
std::make_pair(KeymapKey{0, 0, 0, QK_MOUSE_BUTTON_6}, 32),
|
||||
std::make_pair(KeymapKey{0, 0, 0, QK_MOUSE_BUTTON_7}, 64),
|
||||
std::make_pair(KeymapKey{0, 0, 0, QK_MOUSE_BUTTON_8}, 128)
|
||||
));
|
||||
// clang-format on
|
Loading…
Add table
Add a link
Reference in a new issue