@@ -152,3 +152,101 @@ TEST_F(ControlBlocksTest, If)
152152 builder.run ();
153153 }
154154}
155+
156+ TEST_F (ControlBlocksTest, IfElse)
157+ {
158+ auto target = std::make_shared<Sprite>();
159+
160+ {
161+ ScriptBuilder builder (m_extension.get (), m_engine, target);
162+
163+ builder.addBlock (" control_if_else" );
164+ builder.addValueInput (" CONDITION" , false );
165+ auto substack = std::make_shared<Block>(" " , " test_print_test" );
166+ builder.addObscuredInput (" SUBSTACK" , substack);
167+ auto substack2 = std::make_shared<Block>(" " , " test_print_test2" );
168+ builder.addObscuredInput (" SUBSTACK2" , substack2);
169+
170+ builder.addBlock (" control_if_else" );
171+ builder.addNullObscuredInput (" CONDITION" );
172+ substack = std::make_shared<Block>(" " , " test_print_test" );
173+ builder.addObscuredInput (" SUBSTACK" , substack);
174+ substack2 = std::make_shared<Block>(" " , " test_print_test2" );
175+ builder.addObscuredInput (" SUBSTACK2" , substack2);
176+
177+ builder.addBlock (" control_if_else" );
178+ builder.addValueInput (" CONDITION" , true );
179+ substack = std::make_shared<Block>(" " , " test_print_test" );
180+ builder.addObscuredInput (" SUBSTACK" , substack);
181+ substack2 = std::make_shared<Block>(" " , " test_print_test2" );
182+ builder.addObscuredInput (" SUBSTACK2" , substack2);
183+
184+ builder.build ();
185+
186+ testing::internal::CaptureStdout ();
187+ builder.run ();
188+ ASSERT_EQ (testing::internal::GetCapturedStdout (), " test2\n test2\n test\n " );
189+ }
190+
191+ m_engine->clear ();
192+ target = std::make_shared<Sprite>();
193+
194+ {
195+ ScriptBuilder builder (m_extension.get (), m_engine, target);
196+
197+ builder.addBlock (" control_if_else" );
198+ builder.addValueInput (" CONDITION" , false );
199+ auto substack2 = std::make_shared<Block>(" " , " test_print_test2" );
200+ builder.addObscuredInput (" SUBSTACK2" , substack2);
201+
202+ builder.addBlock (" control_if_else" );
203+ builder.addValueInput (" CONDITION" , true );
204+ substack2 = std::make_shared<Block>(" " , " test_print_test2" );
205+ builder.addObscuredInput (" SUBSTACK2" , substack2);
206+
207+ builder.build ();
208+
209+ testing::internal::CaptureStdout ();
210+ builder.run ();
211+ ASSERT_EQ (testing::internal::GetCapturedStdout (), " test2\n " );
212+ }
213+
214+ m_engine->clear ();
215+ target = std::make_shared<Sprite>();
216+
217+ {
218+ ScriptBuilder builder (m_extension.get (), m_engine, target);
219+
220+ builder.addBlock (" control_if_else" );
221+ builder.addValueInput (" CONDITION" , false );
222+ auto substack = std::make_shared<Block>(" " , " test_print_test" );
223+ builder.addObscuredInput (" SUBSTACK" , substack);
224+
225+ builder.addBlock (" control_if_else" );
226+ builder.addValueInput (" CONDITION" , true );
227+ substack = std::make_shared<Block>(" " , " test_print_test" );
228+ builder.addObscuredInput (" SUBSTACK" , substack);
229+
230+ builder.build ();
231+
232+ testing::internal::CaptureStdout ();
233+ builder.run ();
234+ ASSERT_EQ (testing::internal::GetCapturedStdout (), " test\n " );
235+ }
236+
237+ m_engine->clear ();
238+ target = std::make_shared<Sprite>();
239+
240+ {
241+ ScriptBuilder builder (m_extension.get (), m_engine, target);
242+
243+ builder.addBlock (" control_if_else" );
244+ builder.addValueInput (" CONDITION" , false );
245+
246+ builder.addBlock (" control_if_else" );
247+ builder.addValueInput (" CONDITION" , true );
248+
249+ builder.build ();
250+ builder.run ();
251+ }
252+ }
0 commit comments