@@ -93,6 +93,7 @@ TEST_F(LooksBlocksTest, RegisterBlocks)
9393{
9494 // Blocks
9595 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " looks_show" , &LooksBlocks::compileShow));
96+ EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " looks_hide" , &LooksBlocks::compileHide));
9697
9798 m_section->registerBlocks (&m_engineMock);
9899}
@@ -136,3 +137,43 @@ TEST_F(LooksBlocksTest, ShowImpl)
136137 ASSERT_EQ (vm.registerCount (), 0 );
137138 ASSERT_TRUE (sprite.visible ());
138139}
140+
141+ TEST_F (LooksBlocksTest, Hide)
142+ {
143+ Compiler compiler (&m_engineMock);
144+
145+ auto block = std::make_shared<Block>(" a" , " looks_hide" );
146+
147+ EXPECT_CALL (m_engineMock, functionIndex (&LooksBlocks::hide)).WillOnce (Return (0 ));
148+
149+ compiler.init ();
150+ compiler.setBlock (block);
151+ LooksBlocks::compileHide (&compiler);
152+ compiler.end ();
153+
154+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_EXEC, 0 , vm::OP_HALT }));
155+ ASSERT_TRUE (compiler.constValues ().empty ());
156+ }
157+
158+ TEST_F (LooksBlocksTest, HideImpl)
159+ {
160+ static unsigned int bytecode[] = { vm::OP_START, vm::OP_EXEC, 0 , vm::OP_HALT };
161+ static BlockFunc functions[] = { &LooksBlocks::hide };
162+
163+ Sprite sprite;
164+ sprite.setVisible (true );
165+
166+ VirtualMachine vm (&sprite, nullptr , nullptr );
167+ vm.setBytecode (bytecode);
168+ vm.setFunctions (functions);
169+ vm.run ();
170+
171+ ASSERT_EQ (vm.registerCount (), 0 );
172+ ASSERT_FALSE (sprite.visible ());
173+
174+ vm.reset ();
175+ vm.run ();
176+
177+ ASSERT_EQ (vm.registerCount (), 0 );
178+ ASSERT_FALSE (sprite.visible ());
179+ }
0 commit comments