|
1 | 1 | import p5 from '../../../src/app.js';
|
| 2 | +import { isCode } from '../../../src/events/keyboard.js'; |
2 | 3 | import { parallelSketches } from '../../js/p5_helpers';
|
3 | 4 |
|
4 | 5 | suite('Keyboard Events', function() {
|
@@ -180,18 +181,62 @@ suite('Keyboard Events', function() {
|
180 | 181 | });
|
181 | 182 | });
|
182 | 183 |
|
| 184 | + suite('isCode', function() { |
| 185 | + test('returns false for non-string inputs', function() { |
| 186 | + assert.isFalse(isCode(null)); |
| 187 | + assert.isFalse(isCode(undefined)); |
| 188 | + assert.isFalse(isCode(123)); |
| 189 | + assert.isFalse(isCode({})); |
| 190 | + assert.isFalse(isCode([])); |
| 191 | + }); |
| 192 | + |
| 193 | + test('returns false for single non-digit characters', function() { |
| 194 | + assert.isFalse(isCode('a')); |
| 195 | + assert.isFalse(isCode('Z')); |
| 196 | + assert.isFalse(isCode('!')); |
| 197 | + assert.isFalse(isCode(' ')); |
| 198 | + }); |
| 199 | + |
| 200 | + test('returns true for multi-character strings', function() { |
| 201 | + assert.isTrue(isCode('Enter')); |
| 202 | + assert.isTrue(isCode('ArrowUp')); |
| 203 | + assert.isTrue(isCode('Shift')); |
| 204 | + assert.isTrue(isCode('Control')); |
| 205 | + assert.isTrue(isCode('ab')); |
| 206 | + }); |
| 207 | + |
| 208 | + test('handles edge cases correctly', function() { |
| 209 | + assert.isFalse(isCode('')); // empty string |
| 210 | + assert.isTrue(isCode('11')); // multi-digit number |
| 211 | + assert.isTrue(isCode('1a')); // digit + letter |
| 212 | + }); |
| 213 | + }); |
| 214 | + |
183 | 215 | suite('p5.prototype.keyIsDown', function() {
|
184 | 216 | test('keyIsDown should return a boolean', function() {
|
185 |
| - assert.isBoolean(myp5.keyIsDown(65)); |
| 217 | + assert.isBoolean(myp5.keyIsDown('a')); |
| 218 | + assert.isBoolean(myp5.keyIsDown('Enter')); |
186 | 219 | });
|
187 | 220 |
|
188 | 221 | test('keyIsDown should return true if key is down', function() {
|
189 |
| - window.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 35 })); |
190 |
| - assert.strictEqual(myp5.keyIsDown(35), true); |
191 |
| - }); |
192 |
| - |
193 |
| - test.todo('keyIsDown should return false if key is not down', function() { |
194 |
| - assert.strictEqual(myp5.keyIsDown(35), false); |
| 222 | + // Test single character keys |
| 223 | + window.dispatchEvent(new KeyboardEvent('keydown', { key: 'a' })); |
| 224 | + assert.strictEqual(myp5.keyIsDown('a'), true); |
| 225 | + |
| 226 | + // Test digit keys |
| 227 | + window.dispatchEvent(new KeyboardEvent('keydown', { key: '1', code: 'Digit1' })); |
| 228 | + assert.strictEqual(myp5.keyIsDown('1'), true); |
| 229 | + |
| 230 | + // Test special keys |
| 231 | + window.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', code: 'Enter' })); |
| 232 | + assert.strictEqual(myp5.keyIsDown('Enter'), true); |
| 233 | + }); |
| 234 | + |
| 235 | + test('keyIsDown should return false if key is not down', function() { |
| 236 | + // Ensure key is not down |
| 237 | + window.dispatchEvent(new KeyboardEvent('keyup')); |
| 238 | + assert.strictEqual(myp5.keyIsDown('z'), false); |
| 239 | + |
195 | 240 | });
|
196 | 241 | });
|
197 | 242 | });
|
0 commit comments