@@ -96,6 +96,7 @@ TEST_F(LooksBlocksTest, RegisterBlocks)
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));
9898 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " looks_setsizeto" , &LooksBlocks::compileSetSizeTo));
99+ EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " looks_size" , &LooksBlocks::compileSize));
99100
100101 // Inputs
101102 EXPECT_CALL (m_engineMock, addInput (m_section.get (), " CHANGE" , LooksBlocks::CHANGE));
@@ -261,3 +262,37 @@ TEST_F(LooksBlocksTest, SetSizeToImpl)
261262 ASSERT_EQ (vm.registerCount (), 0 );
262263 ASSERT_EQ (sprite.size (), 87.654 );
263264}
265+
266+ TEST_F (LooksBlocksTest, Size)
267+ {
268+ Compiler compiler (&m_engineMock);
269+
270+ auto block = std::make_shared<Block>(" a" , " looks_size" );
271+
272+ EXPECT_CALL (m_engineMock, functionIndex (&LooksBlocks::size)).WillOnce (Return (0 ));
273+
274+ compiler.init ();
275+ compiler.setBlock (block);
276+ LooksBlocks::compileSize (&compiler);
277+ compiler.end ();
278+
279+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_EXEC, 0 , vm::OP_HALT }));
280+ ASSERT_TRUE (compiler.constValues ().empty ());
281+ }
282+
283+ TEST_F (LooksBlocksTest, SizeImpl)
284+ {
285+ static unsigned int bytecode[] = { vm::OP_START, vm::OP_EXEC, 0 , vm::OP_HALT };
286+ static BlockFunc functions[] = { &LooksBlocks::size };
287+
288+ Sprite sprite;
289+ sprite.setSize (-51.0684 );
290+
291+ VirtualMachine vm (&sprite, nullptr , nullptr );
292+ vm.setBytecode (bytecode);
293+ vm.setFunctions (functions);
294+ vm.run ();
295+
296+ ASSERT_EQ (vm.registerCount (), 1 );
297+ ASSERT_EQ (vm.getInput (0 , 1 )->toDouble (), -51.0684 );
298+ }
0 commit comments