55#include < scratchcpp/stage.h>
66#include < scratchcpp/variable.h>
77#include < scratchcpp/list.h>
8+ #include < scratchcpp/keyevent.h>
89#include < timermock.h>
910#include < clockmock.h>
1011#include < thread>
@@ -192,6 +193,7 @@ TEST(EngineTest, KeyState)
192193 ASSERT_FALSE (engine.keyPressed (" up arrow" ));
193194 ASSERT_FALSE (engine.keyPressed (" any" ));
194195
196+ // Key name
195197 engine.setKeyState (" A" , true );
196198 ASSERT_TRUE (engine.keyPressed (" a" ));
197199 ASSERT_FALSE (engine.keyPressed (" b" ));
@@ -263,6 +265,20 @@ TEST(EngineTest, KeyState)
263265
264266 engine.setAnyKeyPressed (false );
265267 ASSERT_FALSE (engine.keyPressed (" any" ));
268+
269+ // Key object
270+ engine.setKeyState (KeyEvent (" A" ), true );
271+ ASSERT_TRUE (engine.keyPressed (" a" ));
272+ ASSERT_FALSE (engine.keyPressed (" b" ));
273+ ASSERT_FALSE (engine.keyPressed (" up arrow" ));
274+ ASSERT_TRUE (engine.keyPressed (" any" ));
275+
276+ engine.setKeyState (KeyEvent (" up arrow" ), true );
277+ ASSERT_TRUE (engine.keyPressed (" a" ));
278+ ASSERT_FALSE (engine.keyPressed (" b" ));
279+ ASSERT_TRUE (engine.keyPressed (" up arrow" ));
280+ ASSERT_FALSE (engine.keyPressed (" U" ));
281+ ASSERT_TRUE (engine.keyPressed (" any" ));
266282}
267283
268284TEST (EngineTest, WhenKeyPressed)
@@ -335,21 +351,43 @@ TEST(EngineTest, WhenKeyPressed)
335351 ASSERT_VAR (stage, " 4_pressed" );
336352 ASSERT_EQ (GET_VAR (stage, " 4_pressed" )->value ().toInt (), 0 );
337353
354+ // right arrow - key object
355+ engine->setKeyState (KeyEvent (" right arrow" ), true );
356+ p.run ();
357+
358+ ASSERT_VAR (stage, " right_arrow_pressed" );
359+ ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 2 );
360+ engine->setKeyState (" right arrow" , false );
361+ p.run ();
362+
363+ ASSERT_VAR (stage, " space_pressed" );
364+ ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
365+ ASSERT_VAR (stage, " right_arrow_pressed" );
366+ ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 2 );
367+ ASSERT_VAR (stage, " any_key_pressed" );
368+ ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 3 );
369+ ASSERT_VAR (stage, " a_pressed" );
370+ ASSERT_EQ (GET_VAR (stage, " a_pressed" )->value ().toInt (), 0 );
371+ ASSERT_VAR (stage, " x_pressed" );
372+ ASSERT_EQ (GET_VAR (stage, " x_pressed" )->value ().toInt (), 0 );
373+ ASSERT_VAR (stage, " 4_pressed" );
374+ ASSERT_EQ (GET_VAR (stage, " 4_pressed" )->value ().toInt (), 0 );
375+
338376 // any key
339377 engine->setAnyKeyPressed (true );
340378 p.run ();
341379
342380 ASSERT_VAR (stage, " any_key_pressed" );
343- ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 3 );
381+ ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 4 );
344382 engine->setAnyKeyPressed (false );
345383 p.run ();
346384
347385 ASSERT_VAR (stage, " space_pressed" );
348386 ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
349387 ASSERT_VAR (stage, " right_arrow_pressed" );
350- ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 1 );
388+ ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 2 );
351389 ASSERT_VAR (stage, " any_key_pressed" );
352- ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 3 );
390+ ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 4 );
353391 ASSERT_VAR (stage, " a_pressed" );
354392 ASSERT_EQ (GET_VAR (stage, " a_pressed" )->value ().toInt (), 0 );
355393 ASSERT_VAR (stage, " x_pressed" );
@@ -369,9 +407,9 @@ TEST(EngineTest, WhenKeyPressed)
369407 ASSERT_VAR (stage, " space_pressed" );
370408 ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
371409 ASSERT_VAR (stage, " right_arrow_pressed" );
372- ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 1 );
410+ ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 2 );
373411 ASSERT_VAR (stage, " any_key_pressed" );
374- ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 4 );
412+ ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 5 );
375413 ASSERT_VAR (stage, " a_pressed" );
376414 ASSERT_EQ (GET_VAR (stage, " a_pressed" )->value ().toInt (), 1 );
377415 ASSERT_VAR (stage, " x_pressed" );
@@ -391,9 +429,9 @@ TEST(EngineTest, WhenKeyPressed)
391429 ASSERT_VAR (stage, " space_pressed" );
392430 ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
393431 ASSERT_VAR (stage, " right_arrow_pressed" );
394- ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 1 );
432+ ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 2 );
395433 ASSERT_VAR (stage, " any_key_pressed" );
396- ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 5 );
434+ ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 6 );
397435 ASSERT_VAR (stage, " a_pressed" );
398436 ASSERT_EQ (GET_VAR (stage, " a_pressed" )->value ().toInt (), 1 );
399437 ASSERT_VAR (stage, " x_pressed" );
@@ -413,9 +451,9 @@ TEST(EngineTest, WhenKeyPressed)
413451 ASSERT_VAR (stage, " space_pressed" );
414452 ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
415453 ASSERT_VAR (stage, " right_arrow_pressed" );
416- ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 1 );
454+ ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 2 );
417455 ASSERT_VAR (stage, " any_key_pressed" );
418- ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 6 );
456+ ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 7 );
419457 ASSERT_VAR (stage, " a_pressed" );
420458 ASSERT_EQ (GET_VAR (stage, " a_pressed" )->value ().toInt (), 1 );
421459 ASSERT_VAR (stage, " x_pressed" );
@@ -439,9 +477,9 @@ TEST(EngineTest, WhenKeyPressed)
439477 ASSERT_VAR (stage, " space_pressed" );
440478 ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 2 );
441479 ASSERT_VAR (stage, " right_arrow_pressed" );
442- ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 1 );
480+ ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 2 );
443481 ASSERT_VAR (stage, " any_key_pressed" );
444- ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 8 );
482+ ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 9 );
445483 ASSERT_VAR (stage, " a_pressed" );
446484 ASSERT_EQ (GET_VAR (stage, " a_pressed" )->value ().toInt (), 1 );
447485 ASSERT_VAR (stage, " x_pressed" );
0 commit comments