keyboard.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import Keyboard, { SHORTKEY } from '../../../modules/keyboard';
  2. describe('Keyboard', function() {
  3. describe('match', function() {
  4. it('no modifiers', function() {
  5. let binding = {
  6. key: 'a'
  7. };
  8. expect(Keyboard.match({
  9. keyCode: 'A'.charCodeAt(0),
  10. shiftKey: false,
  11. metaKey: false,
  12. ctrlKey: false,
  13. altKey: false
  14. }, binding)).toBe(true);
  15. expect(Keyboard.match({
  16. keyCode: 'A'.charCodeAt(0),
  17. shiftKey: true,
  18. metaKey: false,
  19. ctrlKey: false,
  20. altKey: false
  21. }, binding)).toBe(false);
  22. });
  23. it('simple modifier', function() {
  24. let binding = {
  25. key: 'a',
  26. shiftKey: true
  27. };
  28. expect(Keyboard.match({
  29. keyCode: 'A'.charCodeAt(0),
  30. shiftKey: false,
  31. metaKey: false,
  32. ctrlKey: false,
  33. altKey: false
  34. }, binding)).toBe(false);
  35. expect(Keyboard.match({
  36. keyCode: 'A'.charCodeAt(0),
  37. shiftKey: true,
  38. metaKey: false,
  39. ctrlKey: false,
  40. altKey: false
  41. }, binding)).toBe(true);
  42. });
  43. it('optional modifier', function() {
  44. let binding = {
  45. key: 'a',
  46. shiftKey: null
  47. };
  48. expect(Keyboard.match({
  49. keyCode: 'A'.charCodeAt(0),
  50. shiftKey: false,
  51. metaKey: false,
  52. ctrlKey: false,
  53. altKey: false
  54. }, binding)).toBe(true);
  55. expect(Keyboard.match({
  56. keyCode: 'A'.charCodeAt(0),
  57. shiftKey: true,
  58. metaKey: false,
  59. ctrlKey: false,
  60. altKey: false
  61. }, binding)).toBe(true);
  62. });
  63. it('shortkey modifier', function() {
  64. let binding = {
  65. key: 'a',
  66. shortKey: true
  67. };
  68. expect(Keyboard.match({
  69. keyCode: 'A'.charCodeAt(0),
  70. shiftKey: false,
  71. metaKey: false,
  72. ctrlKey: false,
  73. altKey: false
  74. }, binding)).toBe(false);
  75. expect(Keyboard.match({
  76. keyCode: 'A'.charCodeAt(0),
  77. shiftKey: false,
  78. metaKey: false,
  79. ctrlKey: false,
  80. altKey: false,
  81. [SHORTKEY]: true
  82. }, binding)).toBe(true);
  83. });
  84. it('native shortkey modifier', function() {
  85. let binding = {
  86. key: 'a',
  87. [SHORTKEY]: true
  88. };
  89. expect(Keyboard.match({
  90. keyCode: 'A'.charCodeAt(0),
  91. shiftKey: false,
  92. metaKey: false,
  93. ctrlKey: false,
  94. altKey: false
  95. }, binding)).toBe(false);
  96. expect(Keyboard.match({
  97. keyCode: 'A'.charCodeAt(0),
  98. shiftKey: false,
  99. metaKey: false,
  100. ctrlKey: false,
  101. altKey: false,
  102. [SHORTKEY]: true
  103. }, binding)).toBe(true);
  104. });
  105. });
  106. });