Skip to content

Commit 79c27c8

Browse files
committed
Add extensive Interpreter tests for Cpp::Evaluate
1 parent 4db2096 commit 79c27c8

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

unittests/CppInterOp/InterpreterTest.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,40 @@ TYPED_TEST(CppInterOpTest, InterpreterTestEvaluate) {
8383
EXPECT_FALSE(HadError) ;
8484
}
8585

86+
TYPED_TEST(CppInterOpTest, InterpreterTestEvaluateExtensive) {
87+
#ifdef EMSCRIPTEN
88+
GTEST_SKIP() << "Test fails for Emscipten builds";
89+
#endif
90+
#ifdef _WIN32
91+
GTEST_SKIP() << "Disabled on Windows. Needs fixing.";
92+
#endif
93+
if (llvm::sys::RunningOnValgrind())
94+
GTEST_SKIP() << "XFAIL due to Valgrind report";
95+
if (TypeParam::isOutOfProcess)
96+
GTEST_SKIP() << "Test fails for OOP JIT builds";
97+
98+
Cpp::CreateInterpreter();
99+
EXPECT_TRUE(Cpp::Evaluate("__cplusplus") == 201402);
100+
101+
bool HadError;
102+
EXPECT_TRUE(Cpp::Evaluate("#error", &HadError) == (intptr_t)~0UL);
103+
EXPECT_TRUE(HadError);
104+
// for llvm < 19 this tests different overloads of
105+
// __clang_Interpreter_SetValueNoAlloc
106+
EXPECT_EQ(Cpp::Evaluate("double a = 12.; a", &HadError), 12.);
107+
EXPECT_FALSE(HadError);
108+
EXPECT_EQ(Cpp::Evaluate("float b = 13.; b", &HadError), 13.);
109+
EXPECT_FALSE(HadError);
110+
EXPECT_EQ(Cpp::Evaluate("long double c = 14.; c", &HadError), 14.);
111+
EXPECT_FALSE(HadError);
112+
EXPECT_EQ(Cpp::Evaluate("long double d = 15.; d", &HadError), 15.);
113+
EXPECT_FALSE(HadError);
114+
EXPECT_EQ(Cpp::Evaluate("unsigned long long e = 16; e", &HadError), 16);
115+
EXPECT_FALSE(HadError);
116+
EXPECT_NE(Cpp::Evaluate("struct S{} s; s", &HadError), (intptr_t)~0UL);
117+
EXPECT_FALSE(HadError);
118+
}
119+
86120
TYPED_TEST(CppInterOpTest, InterpreterTestDeleteInterpreter) {
87121
if (TypeParam::isOutOfProcess)
88122
GTEST_SKIP() << "Test fails for OOP JIT builds";

0 commit comments

Comments
 (0)