@@ -45,6 +45,8 @@ TEST_F(ScriptTest, Bytecode)
4545static Target *targetTest = 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{
@@ -58,6 +60,8 @@ TEST_F(ScriptTest, HatPredicate)
5860 targetTest = vm->target ();
5961 engineTest = vm->engine ();
6062 scriptTest = vm->script ();
63+ variablesTest = vm->variables ();
64+ listsTest = vm->lists ();
6165 return 0 ;
6266 };
6367
@@ -69,16 +73,28 @@ TEST_F(ScriptTest, HatPredicate)
6973 targetTest = vm->target ();
7074 engineTest = vm->engine ();
7175 scriptTest = vm->script ();
76+ variablesTest = vm->variables ();
77+ listsTest = vm->lists ();
7278 return 0 ;
7379 };
7480
7581 std::vector<BlockFunc> functions1 = { f1 };
7682 std::vector<BlockFunc> functions2 = { f1, f2, f3 };
7783
84+ Variable var1 (" " , " var1" , " a" );
85+ Variable var2 (" " , " var2" , 4 );
86+ script.setVariables ({ &var1, &var2 });
87+
88+ List list1 (" " , " list1" );
89+ List list2 (" " , " list2" );
90+ script.setLists ({ &list1, &list2 });
91+
7892 EXPECT_CALL (m_engine, blockFunctions ()).WillOnce (ReturnRef (functions1));
7993 targetTest = nullptr ;
8094 engineTest = nullptr ;
8195 scriptTest = nullptr ;
96+ variablesTest = nullptr ;
97+ listsTest = nullptr ;
8298 script.setConstValues ({ " test" });
8399 script.setHatPredicateBytecode ({ vm::OP_START, vm::OP_CONST, 0 , vm::OP_PRINT, vm::OP_EXEC, 0 , vm::OP_HALT });
84100 testing::internal::CaptureStdout ();
@@ -87,11 +103,19 @@ TEST_F(ScriptTest, HatPredicate)
87103 ASSERT_EQ (targetTest, &target);
88104 ASSERT_EQ (engineTest, &m_engine);
89105 ASSERT_EQ (scriptTest, &script);
106+ ASSERT_TRUE (variablesTest);
107+ ASSERT_EQ (variablesTest[0 ], var1.valuePtr ());
108+ ASSERT_EQ (variablesTest[1 ], var2.valuePtr ());
109+ ASSERT_TRUE (listsTest);
110+ ASSERT_EQ (listsTest[0 ], &list1);
111+ ASSERT_EQ (listsTest[1 ], &list2);
90112
91113 EXPECT_CALL (m_engine, blockFunctions ()).WillOnce (ReturnRef (functions2));
92114 targetTest = nullptr ;
93115 engineTest = nullptr ;
94116 scriptTest = nullptr ;
117+ variablesTest = nullptr ;
118+ listsTest = nullptr ;
95119 script.setHatPredicateBytecode ({ vm::OP_START, vm::OP_CONST, 0 , vm::OP_PRINT, vm::OP_EXEC, 1 , vm::OP_HALT });
96120 script.setConstValues ({ 5 });
97121 testing::internal::CaptureStdout ();
@@ -105,6 +129,8 @@ TEST_F(ScriptTest, HatPredicate)
105129 targetTest = nullptr ;
106130 engineTest = nullptr ;
107131 scriptTest = nullptr ;
132+ variablesTest = nullptr ;
133+ listsTest = nullptr ;
108134 script.setHatPredicateBytecode ({ vm::OP_START, vm::OP_EXEC, 2 , vm::OP_HALT });
109135 ASSERT_FALSE (script.runHatPredicate (&target));
110136 ASSERT_EQ (targetTest, &target);
0 commit comments