@@ -138,21 +138,21 @@ TEST_F(EventBlocksTest, BroadcastImpl)
138138 static unsigned int bytecode1[] = { vm::OP_START, vm::OP_CONST, 0 , vm::OP_EXEC, 0 , vm::OP_HALT };
139139 static unsigned int bytecode2[] = { vm::OP_START, vm::OP_CONST, 1 , vm::OP_EXEC, 1 , vm::OP_HALT };
140140 static BlockFunc functions[] = { &EventBlocks::broadcast, &EventBlocks::broadcastByIndex };
141- static Value constValues[] = { " test" , 0 };
141+ static Value constValues[] = { " test" , 2 };
142142
143143 VirtualMachine vm (nullptr , &m_engineMock, nullptr );
144144 vm.setFunctions (functions);
145145 vm.setConstValues (constValues);
146146
147- EXPECT_CALL (m_engineMock, findBroadcast (" test" )).WillOnce (Return (0 ));
148- EXPECT_CALL (m_engineMock, broadcast (0 , &vm, false )).Times (1 );
147+ EXPECT_CALL (m_engineMock, findBroadcast (" test" )).WillOnce (Return (1 ));
148+ EXPECT_CALL (m_engineMock, broadcast (1 , &vm, false )).Times (1 );
149149
150150 vm.setBytecode (bytecode1);
151151 vm.run ();
152152
153153 ASSERT_EQ (vm.registerCount (), 0 );
154154
155- EXPECT_CALL (m_engineMock, broadcast (0 , &vm, false )).Times (1 );
155+ EXPECT_CALL (m_engineMock, broadcast (2 , &vm, false )).Times (1 );
156156
157157 vm.setBytecode (bytecode2);
158158 vm.run ();
@@ -199,28 +199,62 @@ TEST_F(EventBlocksTest, BroadcastAndWait)
199199TEST_F (EventBlocksTest, BroadcastAndWaitImpl)
200200{
201201 static unsigned int bytecode1[] = { vm::OP_START, vm::OP_CONST, 0 , vm::OP_EXEC, 0 , vm::OP_HALT };
202- static unsigned int bytecode2[] = { vm::OP_START, vm::OP_CONST, 1 , vm::OP_EXEC, 1 , vm::OP_HALT };
203- static BlockFunc functions[] = { &EventBlocks::broadcastAndWait, &EventBlocks::broadcastByIndexAndWait };
204- static Value constValues[] = { " test" , 0 };
202+ static unsigned int bytecode2[] = { vm::OP_START, vm::OP_CONST, 0 , vm::OP_EXEC, 1 , vm::OP_HALT };
203+ static unsigned int bytecode3[] = { vm::OP_START, vm::OP_CONST, 1 , vm::OP_EXEC, 2 , vm::OP_HALT };
204+ static unsigned int bytecode4[] = { vm::OP_START, vm::OP_CONST, 1 , vm::OP_EXEC, 3 , vm::OP_HALT };
205+ static BlockFunc functions[] = { &EventBlocks::broadcastAndWait, &EventBlocks::checkBroadcast, &EventBlocks::broadcastByIndexAndWait, &EventBlocks::checkBroadcastByIndex };
206+ static Value constValues[] = { " test" , 3 };
205207
206208 VirtualMachine vm (nullptr , &m_engineMock, nullptr );
207209 vm.setFunctions (functions);
208210 vm.setConstValues (constValues);
209211
210- EXPECT_CALL (m_engineMock, findBroadcast (" test" )).WillOnce (Return (0 ));
211- EXPECT_CALL (m_engineMock, broadcast (0 , &vm, true )).Times (1 );
212+ EXPECT_CALL (m_engineMock, findBroadcast (" test" )).WillOnce (Return (1 ));
213+ EXPECT_CALL (m_engineMock, broadcast (1 , &vm, true )).Times (1 );
212214
213215 vm.setBytecode (bytecode1);
214216 vm.run ();
215217
216218 ASSERT_EQ (vm.registerCount (), 0 );
217219
218- EXPECT_CALL (m_engineMock, broadcast (0 , &vm, true )).Times (1 );
220+ EXPECT_CALL (m_engineMock, findBroadcast (" test" )).WillOnce (Return (2 ));
221+ EXPECT_CALL (m_engineMock, broadcastRunning (2 , &vm)).WillOnce (Return (true ));
219222
220223 vm.setBytecode (bytecode2);
221224 vm.run ();
222225
226+ ASSERT_EQ (vm.registerCount (), 1 );
227+ ASSERT_EQ (vm.atEnd (), false );
228+
229+ EXPECT_CALL (m_engineMock, findBroadcast (" test" )).WillOnce (Return (2 ));
230+ EXPECT_CALL (m_engineMock, broadcastRunning (2 , &vm)).WillOnce (Return (false ));
231+
232+ vm.run ();
233+
234+ ASSERT_EQ (vm.registerCount (), 0 );
235+ ASSERT_EQ (vm.atEnd (), true );
236+
237+ EXPECT_CALL (m_engineMock, broadcast (3 , &vm, true )).Times (1 );
238+
239+ vm.setBytecode (bytecode3);
240+ vm.run ();
241+
242+ ASSERT_EQ (vm.registerCount (), 0 );
243+
244+ EXPECT_CALL (m_engineMock, broadcastRunning (3 , &vm)).WillOnce (Return (true ));
245+
246+ vm.setBytecode (bytecode4);
247+ vm.run ();
248+
249+ ASSERT_EQ (vm.registerCount (), 1 );
250+ ASSERT_EQ (vm.atEnd (), false );
251+
252+ EXPECT_CALL (m_engineMock, broadcastRunning (3 , &vm)).WillOnce (Return (false ));
253+
254+ vm.run ();
255+
223256 ASSERT_EQ (vm.registerCount (), 0 );
257+ ASSERT_EQ (vm.atEnd (), true );
224258}
225259
226260TEST_F (EventBlocksTest, WhenBroadcastReceived)
0 commit comments