logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git

test_tri_layer.cpp (3590B)


  1. // Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include "test_common.hpp"
  4. using testing::_;
  5. using testing::InSequence;
  6. class TriLayer : public TestFixture {};
  7. TEST_F(TriLayer, TriLayerLowerTest) {
  8. TestDriver driver;
  9. KeymapKey lower_layer_key = KeymapKey{0, 0, 0, QK_TRI_LAYER_LOWER};
  10. set_keymap({lower_layer_key, KeymapKey{1, 0, 0, KC_TRNS}});
  11. /* Press Lower. */
  12. EXPECT_NO_REPORT(driver);
  13. lower_layer_key.press();
  14. run_one_scan_loop();
  15. EXPECT_TRUE(layer_state_is(get_tri_layer_lower_layer()));
  16. EXPECT_FALSE(layer_state_is(get_tri_layer_upper_layer()));
  17. EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
  18. VERIFY_AND_CLEAR(driver);
  19. /* Release Lower. */
  20. EXPECT_NO_REPORT(driver);
  21. lower_layer_key.release();
  22. run_one_scan_loop();
  23. EXPECT_FALSE(layer_state_is(get_tri_layer_lower_layer()));
  24. EXPECT_FALSE(layer_state_is(get_tri_layer_upper_layer()));
  25. EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
  26. VERIFY_AND_CLEAR(driver);
  27. }
  28. TEST_F(TriLayer, TriLayerUpperTest) {
  29. TestDriver driver;
  30. KeymapKey upper_layer_key = KeymapKey{0, 0, 0, QK_TRI_LAYER_UPPER};
  31. set_keymap({upper_layer_key, KeymapKey{2, 0, 0, KC_TRNS}});
  32. /* Press Raise. */
  33. EXPECT_NO_REPORT(driver);
  34. upper_layer_key.press();
  35. run_one_scan_loop();
  36. EXPECT_FALSE(layer_state_is(get_tri_layer_lower_layer()));
  37. EXPECT_TRUE(layer_state_is(get_tri_layer_upper_layer()));
  38. EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
  39. VERIFY_AND_CLEAR(driver);
  40. /* Release Raise. */
  41. EXPECT_NO_REPORT(driver);
  42. upper_layer_key.release();
  43. run_one_scan_loop();
  44. EXPECT_FALSE(layer_state_is(get_tri_layer_lower_layer()));
  45. EXPECT_FALSE(layer_state_is(get_tri_layer_upper_layer()));
  46. EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
  47. VERIFY_AND_CLEAR(driver);
  48. }
  49. TEST_F(TriLayer, TriLayerAdjustTest) {
  50. TestDriver driver;
  51. KeymapKey lower_layer_key = KeymapKey{0, 0, 0, QK_TRI_LAYER_LOWER};
  52. KeymapKey upper_layer_key = KeymapKey{0, 1, 0, QK_TRI_LAYER_UPPER};
  53. set_keymap({
  54. upper_layer_key,
  55. lower_layer_key,
  56. KeymapKey{1, 0, 0, KC_TRNS},
  57. KeymapKey{1, 1, 0, KC_TRNS},
  58. KeymapKey{2, 0, 0, KC_TRNS},
  59. KeymapKey{2, 1, 0, KC_TRNS},
  60. KeymapKey{3, 0, 0, KC_TRNS},
  61. KeymapKey{3, 1, 0, KC_TRNS},
  62. });
  63. /* Press Lower, then upper, and release upper and then lower. */
  64. EXPECT_NO_REPORT(driver);
  65. lower_layer_key.press();
  66. run_one_scan_loop();
  67. EXPECT_TRUE(layer_state_is(get_tri_layer_lower_layer()));
  68. EXPECT_FALSE(layer_state_is(get_tri_layer_upper_layer()));
  69. EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
  70. upper_layer_key.press();
  71. run_one_scan_loop();
  72. EXPECT_TRUE(layer_state_is(get_tri_layer_lower_layer()));
  73. EXPECT_TRUE(layer_state_is(get_tri_layer_upper_layer()));
  74. EXPECT_TRUE(layer_state_is(get_tri_layer_adjust_layer()));
  75. lower_layer_key.release();
  76. run_one_scan_loop();
  77. EXPECT_FALSE(layer_state_is(get_tri_layer_lower_layer()));
  78. EXPECT_TRUE(layer_state_is(get_tri_layer_upper_layer()));
  79. EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
  80. upper_layer_key.release();
  81. run_one_scan_loop();
  82. EXPECT_FALSE(layer_state_is(get_tri_layer_lower_layer()));
  83. EXPECT_FALSE(layer_state_is(get_tri_layer_upper_layer()));
  84. EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
  85. VERIFY_AND_CLEAR(driver);
  86. }