@@ -94,6 +94,10 @@ TEST_F(LooksBlocksTest, RegisterBlocks)
9494 // Blocks
9595 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " looks_show" , &LooksBlocks::compileShow));
9696 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " looks_hide" , &LooksBlocks::compileHide));
97+ EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " looks_changesizeby" , &LooksBlocks::compileChangeSizeBy));
98+
99+ // Inputs
100+ EXPECT_CALL (m_engineMock, addInput (m_section.get (), " CHANGE" , LooksBlocks::CHANGE));
97101
98102 m_section->registerBlocks (&m_engineMock);
99103}
@@ -177,3 +181,42 @@ TEST_F(LooksBlocksTest, HideImpl)
177181 ASSERT_EQ (vm.registerCount (), 0 );
178182 ASSERT_FALSE (sprite.visible ());
179183}
184+
185+ TEST_F (LooksBlocksTest, ChangeSizeBy)
186+ {
187+ Compiler compiler (&m_engineMock);
188+
189+ // change size by (10.05)
190+ auto block = std::make_shared<Block>(" a" , " looks_changesizeby" );
191+ addValueInput (block, " CHANGE" , LooksBlocks::CHANGE, 10.05 );
192+
193+ EXPECT_CALL (m_engineMock, functionIndex (&LooksBlocks::changeSizeBy)).WillOnce (Return (0 ));
194+
195+ compiler.init ();
196+ compiler.setBlock (block);
197+ LooksBlocks::compileChangeSizeBy (&compiler);
198+ compiler.end ();
199+
200+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_CONST, 0 , vm::OP_EXEC, 0 , vm::OP_HALT }));
201+ ASSERT_EQ (compiler.constValues ().size (), 1 );
202+ ASSERT_EQ (compiler.constValues ()[0 ].toDouble (), 10.05 );
203+ }
204+
205+ TEST_F (LooksBlocksTest, ChangeSizeByImpl)
206+ {
207+ static unsigned int bytecode[] = { vm::OP_START, vm::OP_CONST, 0 , vm::OP_EXEC, 0 , vm::OP_HALT };
208+ static BlockFunc functions[] = { &LooksBlocks::changeSizeBy };
209+ static Value constValues[] = { 10.05 };
210+
211+ Sprite sprite;
212+ sprite.setSize (1.308 );
213+
214+ VirtualMachine vm (&sprite, nullptr , nullptr );
215+ vm.setBytecode (bytecode);
216+ vm.setFunctions (functions);
217+ vm.setConstValues (constValues);
218+ vm.run ();
219+
220+ ASSERT_EQ (vm.registerCount (), 0 );
221+ ASSERT_EQ (sprite.size (), 11.358 );
222+ }
0 commit comments