@@ -373,8 +373,8 @@ TEST_F(EventBlocksTest, Broadcast)
373373 notBlock->setCompileFunction (&OperatorBlocks::compileNot);
374374 addObscuredInput (block2, " BROADCAST_INPUT" , EventBlocks::BROADCAST_INPUT, notBlock);
375375
376- EXPECT_CALL (m_engineMock, findBroadcast (" test" )).WillOnce (Return (0 ));
377- EXPECT_CALL (m_engineMock, functionIndex (&EventBlocks::broadcastByIndex)).WillOnce (Return (0 ));
376+ EXPECT_CALL (m_engineMock, findBroadcasts (" test" )).WillOnce (Return (std::vector< int >({ 0 , 3 }) ));
377+ EXPECT_CALL (m_engineMock, functionIndex (&EventBlocks::broadcastByIndex)).Times ( 2 ). WillRepeatedly (Return (0 ));
378378 EXPECT_CALL (m_engineMock, functionIndex (&EventBlocks::broadcast)).WillOnce (Return (1 ));
379379
380380 compiler.init ();
@@ -384,9 +384,8 @@ TEST_F(EventBlocksTest, Broadcast)
384384 EventBlocks::compileBroadcast (&compiler);
385385 compiler.end ();
386386
387- ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_CONST, 0 , vm::OP_EXEC, 0 , vm::OP_NULL, vm::OP_NOT, vm::OP_EXEC, 1 , vm::OP_HALT }));
388- ASSERT_EQ (compiler.constValues ().size (), 1 );
389- ASSERT_EQ (compiler.constValues ()[0 ].toDouble (), 0 );
387+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_CONST, 0 , vm::OP_EXEC, 0 , vm::OP_CONST, 1 , vm::OP_EXEC, 0 , vm::OP_NULL, vm::OP_NOT, vm::OP_EXEC, 1 , vm::OP_HALT }));
388+ ASSERT_EQ (compiler.constValues (), std::vector<Value>({ 0 , 3 }));
390389 ASSERT_TRUE (compiler.variables ().empty ());
391390 ASSERT_TRUE (compiler.lists ().empty ());
392391}
@@ -402,8 +401,9 @@ TEST_F(EventBlocksTest, BroadcastImpl)
402401 vm.setFunctions (functions);
403402 vm.setConstValues (constValues);
404403
405- EXPECT_CALL (m_engineMock, findBroadcast (" test" )).WillOnce (Return (1 ));
406- EXPECT_CALL (m_engineMock, broadcast (1 )).Times (1 );
404+ EXPECT_CALL (m_engineMock, findBroadcasts (" test" )).WillOnce (Return (std::vector<int >({ 1 , 4 })));
405+ EXPECT_CALL (m_engineMock, broadcast (1 ));
406+ EXPECT_CALL (m_engineMock, broadcast (4 ));
407407
408408 vm.setBytecode (bytecode1);
409409 vm.run ();
@@ -432,9 +432,9 @@ TEST_F(EventBlocksTest, BroadcastAndWait)
432432 notBlock->setCompileFunction (&OperatorBlocks::compileNot);
433433 addObscuredInput (block2, " BROADCAST_INPUT" , EventBlocks::BROADCAST_INPUT, notBlock);
434434
435- EXPECT_CALL (m_engineMock, findBroadcast (" test" )).WillOnce (Return (0 ));
436- EXPECT_CALL (m_engineMock, functionIndex (&EventBlocks::broadcastByIndexAndWait)).WillOnce (Return (0 ));
437- EXPECT_CALL (m_engineMock, functionIndex (&EventBlocks::checkBroadcastByIndex)).WillOnce (Return (1 ));
435+ EXPECT_CALL (m_engineMock, findBroadcasts (" test" )).WillOnce (Return (std::vector< int >({ 0 , 3 }) ));
436+ EXPECT_CALL (m_engineMock, functionIndex (&EventBlocks::broadcastByIndexAndWait)).Times ( 2 ). WillRepeatedly (Return (0 ));
437+ EXPECT_CALL (m_engineMock, functionIndex (&EventBlocks::checkBroadcastByIndex)).Times ( 2 ). WillRepeatedly (Return (1 ));
438438 EXPECT_CALL (m_engineMock, functionIndex (&EventBlocks::broadcastAndWait)).WillOnce (Return (2 ));
439439 EXPECT_CALL (m_engineMock, functionIndex (&EventBlocks::checkBroadcast)).WillOnce (Return (3 ));
440440
@@ -448,8 +448,9 @@ TEST_F(EventBlocksTest, BroadcastAndWait)
448448 ASSERT_EQ (
449449 compiler.bytecode (),
450450 std::vector<unsigned int >(
451- { vm::OP_START, vm::OP_CONST, 0 , vm::OP_EXEC, 0 , vm::OP_CONST, 1 , vm::OP_EXEC, 1 , vm::OP_NULL, vm::OP_NOT, vm::OP_EXEC, 2 , vm::OP_NULL, vm::OP_NOT, vm::OP_EXEC, 3 , vm::OP_HALT }));
452- ASSERT_EQ (compiler.constValues (), std::vector<Value>({ 0 , 0 }));
451+ { vm::OP_START, vm::OP_CONST, 0 , vm::OP_EXEC, 0 , vm::OP_CONST, 1 , vm::OP_EXEC, 0 , vm::OP_CONST, 2 , vm::OP_EXEC, 1 , vm::OP_CONST, 3 , vm::OP_EXEC, 1 ,
452+ vm::OP_NULL, vm::OP_NOT, vm::OP_EXEC, 2 , vm::OP_NULL, vm::OP_NOT, vm::OP_EXEC, 3 , vm::OP_HALT }));
453+ ASSERT_EQ (compiler.constValues (), std::vector<Value>({ 0 , 3 , 0 , 3 }));
453454 ASSERT_TRUE (compiler.variables ().empty ());
454455 ASSERT_TRUE (compiler.lists ().empty ());
455456}
@@ -467,15 +468,16 @@ TEST_F(EventBlocksTest, BroadcastAndWaitImpl)
467468 vm.setFunctions (functions);
468469 vm.setConstValues (constValues);
469470
470- EXPECT_CALL (m_engineMock, findBroadcast (" test" )).WillOnce (Return (1 ));
471- EXPECT_CALL (m_engineMock, broadcast (1 )).Times (1 );
471+ EXPECT_CALL (m_engineMock, findBroadcasts (" test" )).WillOnce (Return (std::vector<int >({ 1 , 4 })));
472+ EXPECT_CALL (m_engineMock, broadcast (1 ));
473+ EXPECT_CALL (m_engineMock, broadcast (4 ));
472474
473475 vm.setBytecode (bytecode1);
474476 vm.run ();
475477
476478 ASSERT_EQ (vm.registerCount (), 0 );
477479
478- EXPECT_CALL (m_engineMock, findBroadcast (" test" )).WillOnce (Return (2 ));
480+ EXPECT_CALL (m_engineMock, findBroadcasts (" test" )).WillOnce (Return (std::vector< int >({ 2 , 3 }) ));
479481 EXPECT_CALL (m_engineMock, broadcastRunning (2 )).WillOnce (Return (true ));
480482
481483 vm.setBytecode (bytecode2);
@@ -484,8 +486,18 @@ TEST_F(EventBlocksTest, BroadcastAndWaitImpl)
484486 ASSERT_EQ (vm.registerCount (), 1 );
485487 ASSERT_EQ (vm.atEnd (), false );
486488
487- EXPECT_CALL (m_engineMock, findBroadcast (" test" )).WillOnce (Return (2 ));
489+ EXPECT_CALL (m_engineMock, findBroadcasts (" test" )).WillOnce (Return (std::vector<int >({ 2 , 3 })));
490+ EXPECT_CALL (m_engineMock, broadcastRunning (2 )).WillOnce (Return (true ));
491+
492+ vm.reset ();
493+ vm.run ();
494+
495+ ASSERT_EQ (vm.registerCount (), 1 );
496+ ASSERT_EQ (vm.atEnd (), false );
497+
498+ EXPECT_CALL (m_engineMock, findBroadcasts (" test" )).WillOnce (Return (std::vector<int >({ 2 , 3 })));
488499 EXPECT_CALL (m_engineMock, broadcastRunning (2 )).WillOnce (Return (false ));
500+ EXPECT_CALL (m_engineMock, broadcastRunning (3 )).WillOnce (Return (false ));
489501
490502 vm.run ();
491503
0 commit comments