@@ -377,8 +377,6 @@ TEST(EngineTest, WhenKeyPressed)
377377 Project p (" when_key_pressed.sb3" );
378378 ASSERT_TRUE (p.load ());
379379
380- p.run ();
381-
382380 auto engine = p.engine ();
383381
384382 Stage *stage = engine->stage ();
@@ -400,12 +398,12 @@ TEST(EngineTest, WhenKeyPressed)
400398
401399 // space
402400 engine->setKeyState (" space" , true );
403- p. run ();
401+ engine-> step ();
404402
405403 ASSERT_VAR (stage, " space_pressed" );
406404 ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
407405 engine->setKeyState (" space" , false );
408- p. run ();
406+ engine-> step ();
409407
410408 ASSERT_VAR (stage, " space_pressed" );
411409 ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
@@ -422,12 +420,12 @@ TEST(EngineTest, WhenKeyPressed)
422420
423421 // right arrow
424422 engine->setKeyState (" right arrow" , true );
425- p. run ();
423+ engine-> step ();
426424
427425 ASSERT_VAR (stage, " right_arrow_pressed" );
428426 ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 1 );
429427 engine->setKeyState (" right arrow" , false );
430- p. run ();
428+ engine-> step ();
431429
432430 ASSERT_VAR (stage, " space_pressed" );
433431 ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
@@ -444,12 +442,12 @@ TEST(EngineTest, WhenKeyPressed)
444442
445443 // right arrow - key object
446444 engine->setKeyState (KeyEvent (" right arrow" ), true );
447- p. run ();
445+ engine-> step ();
448446
449447 ASSERT_VAR (stage, " right_arrow_pressed" );
450448 ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 2 );
451449 engine->setKeyState (" right arrow" , false );
452- p. run ();
450+ engine-> step ();
453451
454452 ASSERT_VAR (stage, " space_pressed" );
455453 ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
@@ -466,12 +464,12 @@ TEST(EngineTest, WhenKeyPressed)
466464
467465 // any key
468466 engine->setAnyKeyPressed (true );
469- p. run ();
467+ engine-> step ();
470468
471469 ASSERT_VAR (stage, " any_key_pressed" );
472470 ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 4 );
473471 engine->setAnyKeyPressed (false );
474- p. run ();
472+ engine-> step ();
475473
476474 ASSERT_VAR (stage, " space_pressed" );
477475 ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
@@ -488,12 +486,12 @@ TEST(EngineTest, WhenKeyPressed)
488486
489487 // a
490488 engine->setKeyState (" a" , true );
491- p. run ();
489+ engine-> step ();
492490
493491 ASSERT_VAR (stage, " a_pressed" );
494492 ASSERT_EQ (GET_VAR (stage, " a_pressed" )->value ().toInt (), 1 );
495493 engine->setKeyState (" a" , false );
496- p. run ();
494+ engine-> step ();
497495
498496 ASSERT_VAR (stage, " space_pressed" );
499497 ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
@@ -510,12 +508,12 @@ TEST(EngineTest, WhenKeyPressed)
510508
511509 // x
512510 engine->setKeyState (" x" , true );
513- p. run ();
511+ engine-> step ();
514512
515513 ASSERT_VAR (stage, " x_pressed" );
516514 ASSERT_EQ (GET_VAR (stage, " x_pressed" )->value ().toInt (), 1 );
517515 engine->setKeyState (" x" , false );
518- p. run ();
516+ engine-> step ();
519517
520518 ASSERT_VAR (stage, " space_pressed" );
521519 ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
@@ -532,12 +530,12 @@ TEST(EngineTest, WhenKeyPressed)
532530
533531 // 4
534532 engine->setKeyState (" 4" , true );
535- p. run ();
533+ engine-> step ();
536534
537535 ASSERT_VAR (stage, " 4_pressed" );
538536 ASSERT_EQ (GET_VAR (stage, " 4_pressed" )->value ().toInt (), 1 );
539537 engine->setKeyState (" 4" , false );
540- p. run ();
538+ engine-> step ();
541539
542540 ASSERT_VAR (stage, " space_pressed" );
543541 ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
@@ -555,15 +553,15 @@ TEST(EngineTest, WhenKeyPressed)
555553 // multiple
556554 engine->setKeyState (" space" , true );
557555 engine->setKeyState (" x" , true );
558- p. run ();
556+ engine-> step ();
559557
560558 ASSERT_VAR (stage, " space_pressed" );
561559 ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 2 );
562560 ASSERT_VAR (stage, " x_pressed" );
563561 ASSERT_EQ (GET_VAR (stage, " x_pressed" )->value ().toInt (), 2 );
564562 engine->setKeyState (" space" , false );
565563 engine->setKeyState (" x" , false );
566- p. run ();
564+ engine-> step ();
567565
568566 ASSERT_VAR (stage, " space_pressed" );
569567 ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 2 );
@@ -1392,17 +1390,42 @@ TEST(EngineTest, ResetRunningHats)
13921390 engine->setKeyState (KeyEvent (KeyEvent::Type::Space), false );
13931391 engine->setKeyState (KeyEvent (KeyEvent::Type::Space), true );
13941392 engine->setKeyState (KeyEvent (KeyEvent::Type::Space), false );
1395- engine->run ();
1393+ engine->step ();
13961394
13971395 ASSERT_VAR (stage, " test" );
13981396 ASSERT_EQ (GET_VAR (stage, " test" )->value ().toInt (), 1 );
13991397
1400- engine->run ();
1398+ engine->step ();
14011399 ASSERT_EQ (GET_VAR (stage, " test" )->value ().toInt (), 1 );
14021400
14031401 engine->setKeyState (KeyEvent (KeyEvent::Type::Space), true );
14041402 engine->setKeyState (KeyEvent (KeyEvent::Type::Space), false );
1405- engine->run ();
1403+ engine->step ();
14061404
14071405 ASSERT_EQ (GET_VAR (stage, " test" )->value ().toInt (), 2 );
14081406}
1407+
1408+ TEST (EngineTest, StopBeforeStarting)
1409+ {
1410+ // Regtest for #394
1411+ Project p (" regtest_projects/394_stop_before_starting.sb3" );
1412+ ASSERT_TRUE (p.load ());
1413+
1414+ auto engine = p.engine ();
1415+
1416+ Stage *stage = engine->stage ();
1417+ ASSERT_TRUE (stage);
1418+
1419+ engine->broadcast (0 );
1420+ engine->step ();
1421+
1422+ ASSERT_VAR (stage, " test" );
1423+ ASSERT_FALSE (GET_VAR (stage, " test" )->value ().toBool ());
1424+
1425+ GET_VAR (stage, " test" )->setValue (true );
1426+ engine->broadcast (0 );
1427+ engine->start ();
1428+ engine->step ();
1429+ ASSERT_VAR (stage, " test" );
1430+ ASSERT_TRUE (GET_VAR (stage, " test" )->value ().toBool ());
1431+ }
0 commit comments