keyboard.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. import Keyboard, { SHORTKEY, normalize } from '../../../modules/keyboard';
  2. describe('Keyboard', function() {
  3. describe('match', function() {
  4. it('no modifiers', function() {
  5. const binding = normalize({
  6. key: 'a',
  7. });
  8. expect(
  9. Keyboard.match(
  10. {
  11. key: 'a',
  12. shiftKey: false,
  13. metaKey: false,
  14. ctrlKey: false,
  15. altKey: false,
  16. },
  17. binding,
  18. ),
  19. ).toBe(true);
  20. expect(
  21. Keyboard.match(
  22. {
  23. key: 'A',
  24. shiftKey: false,
  25. metaKey: false,
  26. ctrlKey: false,
  27. altKey: true,
  28. },
  29. binding,
  30. ),
  31. ).toBe(false);
  32. });
  33. it('simple modifier', function() {
  34. const binding = normalize({
  35. key: 'a',
  36. altKey: true,
  37. });
  38. expect(
  39. Keyboard.match(
  40. {
  41. key: 'a',
  42. shiftKey: false,
  43. metaKey: false,
  44. ctrlKey: false,
  45. altKey: false,
  46. },
  47. binding,
  48. ),
  49. ).toBe(false);
  50. expect(
  51. Keyboard.match(
  52. {
  53. key: 'a',
  54. shiftKey: false,
  55. metaKey: false,
  56. ctrlKey: false,
  57. altKey: true,
  58. },
  59. binding,
  60. ),
  61. ).toBe(true);
  62. });
  63. it('optional modifier', function() {
  64. const binding = normalize({
  65. key: 'a',
  66. altKey: null,
  67. });
  68. expect(
  69. Keyboard.match(
  70. {
  71. key: 'a',
  72. shiftKey: false,
  73. metaKey: false,
  74. ctrlKey: false,
  75. altKey: false,
  76. },
  77. binding,
  78. ),
  79. ).toBe(true);
  80. expect(
  81. Keyboard.match(
  82. {
  83. key: 'a',
  84. shiftKey: false,
  85. metaKey: false,
  86. ctrlKey: false,
  87. altKey: true,
  88. },
  89. binding,
  90. ),
  91. ).toBe(true);
  92. });
  93. it('shortkey modifier', function() {
  94. const binding = normalize({
  95. key: 'a',
  96. shortKey: true,
  97. });
  98. expect(
  99. Keyboard.match(
  100. {
  101. key: 'a',
  102. shiftKey: false,
  103. metaKey: false,
  104. ctrlKey: false,
  105. altKey: false,
  106. },
  107. binding,
  108. ),
  109. ).toBe(false);
  110. expect(
  111. Keyboard.match(
  112. {
  113. key: 'a',
  114. shiftKey: false,
  115. metaKey: false,
  116. ctrlKey: false,
  117. altKey: false,
  118. [SHORTKEY]: true,
  119. },
  120. binding,
  121. ),
  122. ).toBe(true);
  123. });
  124. it('native shortkey modifier', function() {
  125. const binding = normalize({
  126. key: 'a',
  127. [SHORTKEY]: true,
  128. });
  129. expect(
  130. Keyboard.match(
  131. {
  132. key: 'a',
  133. shiftKey: false,
  134. metaKey: false,
  135. ctrlKey: false,
  136. altKey: false,
  137. },
  138. binding,
  139. ),
  140. ).toBe(false);
  141. expect(
  142. Keyboard.match(
  143. {
  144. key: 'a',
  145. shiftKey: false,
  146. metaKey: false,
  147. ctrlKey: false,
  148. altKey: false,
  149. [SHORTKEY]: true,
  150. },
  151. binding,
  152. ),
  153. ).toBe(true);
  154. });
  155. });
  156. });