@@ -95,9 +95,11 @@ TEST_F(LooksBlocksTest, RegisterBlocks)
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));
9797 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " looks_changesizeby" , &LooksBlocks::compileChangeSizeBy));
98+ EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " looks_setsizeto" , &LooksBlocks::compileSetSizeTo));
9899
99100 // Inputs
100101 EXPECT_CALL (m_engineMock, addInput (m_section.get (), " CHANGE" , LooksBlocks::CHANGE));
102+ EXPECT_CALL (m_engineMock, addInput (m_section.get (), " SIZE" , LooksBlocks::SIZE));
101103
102104 m_section->registerBlocks (&m_engineMock);
103105}
@@ -220,3 +222,42 @@ TEST_F(LooksBlocksTest, ChangeSizeByImpl)
220222 ASSERT_EQ (vm.registerCount (), 0 );
221223 ASSERT_EQ (sprite.size (), 11.358 );
222224}
225+
226+ TEST_F (LooksBlocksTest, SetSizeTo)
227+ {
228+ Compiler compiler (&m_engineMock);
229+
230+ // set size to (87.654)
231+ auto block = std::make_shared<Block>(" a" , " looks_setsizeto" );
232+ addValueInput (block, " SIZE" , LooksBlocks::SIZE, 87.654 );
233+
234+ EXPECT_CALL (m_engineMock, functionIndex (&LooksBlocks::setSizeTo)).WillOnce (Return (0 ));
235+
236+ compiler.init ();
237+ compiler.setBlock (block);
238+ LooksBlocks::compileSetSizeTo (&compiler);
239+ compiler.end ();
240+
241+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_CONST, 0 , vm::OP_EXEC, 0 , vm::OP_HALT }));
242+ ASSERT_EQ (compiler.constValues ().size (), 1 );
243+ ASSERT_EQ (compiler.constValues ()[0 ].toDouble (), 87.654 );
244+ }
245+
246+ TEST_F (LooksBlocksTest, SetSizeToImpl)
247+ {
248+ static unsigned int bytecode[] = { vm::OP_START, vm::OP_CONST, 0 , vm::OP_EXEC, 0 , vm::OP_HALT };
249+ static BlockFunc functions[] = { &LooksBlocks::setSizeTo };
250+ static Value constValues[] = { 87.654 };
251+
252+ Sprite sprite;
253+ sprite.setSize (5.684 );
254+
255+ VirtualMachine vm (&sprite, nullptr , nullptr );
256+ vm.setBytecode (bytecode);
257+ vm.setFunctions (functions);
258+ vm.setConstValues (constValues);
259+ vm.run ();
260+
261+ ASSERT_EQ (vm.registerCount (), 0 );
262+ ASSERT_EQ (sprite.size (), 87.654 );
263+ }
0 commit comments