@@ -45,6 +45,8 @@ TEST_F(ScriptTest, Bytecode)
45
45
static Target *stageTest = nullptr ;
46
46
static IEngine *engineTest = nullptr ;
47
47
static Script *scriptTest = nullptr ;
48
+ static Value **variablesTest = nullptr ;
49
+ static List **listsTest = nullptr ;
48
50
49
51
TEST_F (ScriptTest, HatPredicate)
50
52
{
@@ -60,6 +62,8 @@ TEST_F(ScriptTest, HatPredicate)
60
62
stageTest = vm->target ();
61
63
engineTest = vm->engine ();
62
64
scriptTest = vm->script ();
65
+ variablesTest = vm->variables ();
66
+ listsTest = vm->lists ();
63
67
return 0 ;
64
68
};
65
69
@@ -71,16 +75,28 @@ TEST_F(ScriptTest, HatPredicate)
71
75
stageTest = vm->target ();
72
76
engineTest = vm->engine ();
73
77
scriptTest = vm->script ();
78
+ variablesTest = vm->variables ();
79
+ listsTest = vm->lists ();
74
80
return 0 ;
75
81
};
76
82
77
83
std::vector<BlockFunc> functions1 = { f1 };
78
84
std::vector<BlockFunc> functions2 = { f1, f2, f3 };
79
85
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
+
80
94
EXPECT_CALL (m_engine, blockFunctions ()).WillOnce (ReturnRef (functions1));
81
95
stageTest = nullptr ;
82
96
engineTest = nullptr ;
83
97
scriptTest = nullptr ;
98
+ variablesTest = nullptr ;
99
+ listsTest = nullptr ;
84
100
script.setConstValues ({ " test" });
85
101
script.setHatPredicateBytecode ({ vm::OP_START, vm::OP_CONST, 0 , vm::OP_PRINT, vm::OP_EXEC, 0 , vm::OP_HALT });
86
102
testing::internal::CaptureStdout ();
@@ -89,11 +105,19 @@ TEST_F(ScriptTest, HatPredicate)
89
105
ASSERT_EQ (stageTest, &stage);
90
106
ASSERT_EQ (engineTest, &m_engine);
91
107
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);
92
114
93
115
EXPECT_CALL (m_engine, blockFunctions ()).WillOnce (ReturnRef (functions2));
94
116
stageTest = nullptr ;
95
117
engineTest = nullptr ;
96
118
scriptTest = nullptr ;
119
+ variablesTest = nullptr ;
120
+ listsTest = nullptr ;
97
121
script.setHatPredicateBytecode ({ vm::OP_START, vm::OP_CONST, 0 , vm::OP_PRINT, vm::OP_EXEC, 1 , vm::OP_HALT });
98
122
script.setConstValues ({ 5 });
99
123
testing::internal::CaptureStdout ();
@@ -107,6 +131,8 @@ TEST_F(ScriptTest, HatPredicate)
107
131
stageTest = nullptr ;
108
132
engineTest = nullptr ;
109
133
scriptTest = nullptr ;
134
+ variablesTest = nullptr ;
135
+ listsTest = nullptr ;
110
136
script.setHatPredicateBytecode ({ vm::OP_START, vm::OP_EXEC, 2 , vm::OP_HALT });
111
137
ASSERT_FALSE (script.runHatPredicate ());
112
138
ASSERT_EQ (stageTest, &stage);
0 commit comments