@@ -45,6 +45,8 @@ TEST_F(ScriptTest, Bytecode)
4545static Target *stageTest = nullptr ;
4646static IEngine *engineTest = nullptr ;
4747static Script *scriptTest = nullptr ;
48+ static Value **variablesTest = nullptr ;
49+ static List **listsTest = nullptr ;
4850
4951TEST_F (ScriptTest, HatPredicate)
5052{
@@ -60,6 +62,8 @@ TEST_F(ScriptTest, HatPredicate)
6062 stageTest = vm->target ();
6163 engineTest = vm->engine ();
6264 scriptTest = vm->script ();
65+ variablesTest = vm->variables ();
66+ listsTest = vm->lists ();
6367 return 0 ;
6468 };
6569
@@ -71,16 +75,28 @@ TEST_F(ScriptTest, HatPredicate)
7175 stageTest = vm->target ();
7276 engineTest = vm->engine ();
7377 scriptTest = vm->script ();
78+ variablesTest = vm->variables ();
79+ listsTest = vm->lists ();
7480 return 0 ;
7581 };
7682
7783 std::vector<BlockFunc> functions1 = { f1 };
7884 std::vector<BlockFunc> functions2 = { f1, f2, f3 };
7985
86+ Variable var1 (" " , " var1" , " a" );
87+ Variable var2 (" " , " var2" , 4 );
88+ script.setVariables ({ &var1, &var2 });
89+
90+ List list1 (" " , " list1" );
91+ List list2 (" " , " list2" );
92+ script.setLists ({ &list1, &list2 });
93+
8094 EXPECT_CALL (m_engine, blockFunctions ()).WillOnce (ReturnRef (functions1));
8195 stageTest = nullptr ;
8296 engineTest = nullptr ;
8397 scriptTest = nullptr ;
98+ variablesTest = nullptr ;
99+ listsTest = nullptr ;
84100 script.setConstValues ({ " test" });
85101 script.setHatPredicateBytecode ({ vm::OP_START, vm::OP_CONST, 0 , vm::OP_PRINT, vm::OP_EXEC, 0 , vm::OP_HALT });
86102 testing::internal::CaptureStdout ();
@@ -89,11 +105,19 @@ TEST_F(ScriptTest, HatPredicate)
89105 ASSERT_EQ (stageTest, &stage);
90106 ASSERT_EQ (engineTest, &m_engine);
91107 ASSERT_EQ (scriptTest, &script);
108+ ASSERT_TRUE (variablesTest);
109+ ASSERT_EQ (variablesTest[0 ], var1.valuePtr ());
110+ ASSERT_EQ (variablesTest[1 ], var2.valuePtr ());
111+ ASSERT_TRUE (listsTest);
112+ ASSERT_EQ (listsTest[0 ], &list1);
113+ ASSERT_EQ (listsTest[1 ], &list2);
92114
93115 EXPECT_CALL (m_engine, blockFunctions ()).WillOnce (ReturnRef (functions2));
94116 stageTest = nullptr ;
95117 engineTest = nullptr ;
96118 scriptTest = nullptr ;
119+ variablesTest = nullptr ;
120+ listsTest = nullptr ;
97121 script.setHatPredicateBytecode ({ vm::OP_START, vm::OP_CONST, 0 , vm::OP_PRINT, vm::OP_EXEC, 1 , vm::OP_HALT });
98122 script.setConstValues ({ 5 });
99123 testing::internal::CaptureStdout ();
@@ -107,6 +131,8 @@ TEST_F(ScriptTest, HatPredicate)
107131 stageTest = nullptr ;
108132 engineTest = nullptr ;
109133 scriptTest = nullptr ;
134+ variablesTest = nullptr ;
135+ listsTest = nullptr ;
110136 script.setHatPredicateBytecode ({ vm::OP_START, vm::OP_EXEC, 2 , vm::OP_HALT });
111137 ASSERT_FALSE (script.runHatPredicate ());
112138 ASSERT_EQ (stageTest, &stage);
0 commit comments