Skip to content

Commit 13d6cd6

Browse files
authored
Merge pull request #339 from scratchcpp/check_broadcast_test
Add missing tests for the broadcast block
2 parents fd5e514 + 3360bde commit 13d6cd6

File tree

1 file changed

+44
-10
lines changed

1 file changed

+44
-10
lines changed

test/blocks/event_blocks_test.cpp

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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)
199199
TEST_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

226260
TEST_F(EventBlocksTest, WhenBroadcastReceived)

0 commit comments

Comments
 (0)