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