@@ -94,6 +94,7 @@ TEST_F(ListBlocksTest, CategoryVisible)
9494TEST_F (ListBlocksTest, RegisterBlocks)
9595{
9696 // Blocks
97+ EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " data_listcontents" , &ListBlocks::compileListContents)).Times (1 );
9798 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " data_addtolist" , &ListBlocks::compileAddToList)).Times (1 );
9899 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " data_deleteoflist" , &ListBlocks::compileDeleteFromList)).Times (1 );
99100 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " data_deletealloflist" , &ListBlocks::compileDeleteAllOfList)).Times (1 );
@@ -114,6 +115,36 @@ TEST_F(ListBlocksTest, RegisterBlocks)
114115 m_section->registerBlocks (&m_engineMock);
115116}
116117
118+ TEST_F (ListBlocksTest, ListContents)
119+ {
120+ Compiler compiler (&m_engine);
121+
122+ // [list1]
123+ auto list1 = std::make_shared<List>(" b" , " list1" );
124+ auto block1 = createListBlock (" a" , " data_listcontents" , list1);
125+
126+ // [list2]
127+ auto list2 = std::make_shared<List>(" d" , " list2" );
128+ auto block2 = createListBlock (" c" , " data_listcontents" , list2);
129+
130+ compiler.init ();
131+ compiler.setBlock (block1);
132+ ListBlocks::compileListContents (&compiler);
133+ compiler.setBlock (block2);
134+ ListBlocks::compileListContents (&compiler);
135+ compiler.end ();
136+
137+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_CONST, 0 , vm::OP_CONST, 1 , vm::OP_HALT }));
138+ ASSERT_EQ (compiler.constValues (), std::vector<Value>({ 0 , 1 }));
139+ ASSERT_TRUE (compiler.variables ().empty ());
140+ ASSERT_EQ (
141+ compiler.lists (),
142+ std::vector<List *>({
143+ list1.get (),
144+ list2.get (),
145+ }));
146+ }
147+
117148TEST_F (ListBlocksTest, AddToList)
118149{
119150 Compiler compiler (&m_engine);
0 commit comments