Skip to content

Commit 740bcb3

Browse files
committed
Add tests for Cpp::Evaluate that use more runtime symbols
1 parent e8a6b27 commit 740bcb3

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

unittests/CppInterOp/InterpreterTest.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,38 @@ TEST(InterpreterTest, Evaluate) {
8484
EXPECT_FALSE(HadError) ;
8585
}
8686

87+
TEST(InterpreterTest, EvaluateExtensive) {
88+
#ifdef EMSCRIPTEN
89+
GTEST_SKIP() << "Test fails for Emscipten builds";
90+
#endif
91+
#ifdef _WIN32
92+
GTEST_SKIP() << "Disabled on Windows. Needs fixing.";
93+
#endif
94+
if (llvm::sys::RunningOnValgrind())
95+
GTEST_SKIP() << "XFAIL due to Valgrind report";
96+
Cpp::CreateInterpreter();
97+
EXPECT_TRUE(Cpp::Evaluate("__cplusplus") == 201402);
98+
99+
bool HadError;
100+
EXPECT_TRUE(Cpp::Evaluate("#error", &HadError) == (intptr_t)~0UL);
101+
EXPECT_TRUE(HadError);
102+
// for llvm < 19 this tests all different overloads of __clang_Interpreter_SetValueNoAlloc
103+
EXPECT_EQ(Cpp::Evaluate("int i = 11; ++i", &HadError), 12);
104+
EXPECT_FALSE(HadError) ;
105+
EXPECT_EQ(Cpp::Evaluate("double a = 12.; a", &HadError), 12.);
106+
EXPECT_FALSE(HadError) ;
107+
EXPECT_EQ(Cpp::Evaluate("float b = 13.; b", &HadError), 13.);
108+
EXPECT_FALSE(HadError) ;
109+
EXPECT_EQ(Cpp::Evaluate("long double c = 14.; c", &HadError), 14.);
110+
EXPECT_FALSE(HadError) ;
111+
EXPECT_EQ(Cpp::Evaluate("long double d = 15.; d", &HadError), 15.);
112+
EXPECT_FALSE(HadError);
113+
EXPECT_EQ(Cpp::Evaluate("unsigned long long e = 16; e", &HadError), 16);
114+
EXPECT_FALSE(HadError) ;
115+
EXPECT_NE(Cpp::Evaluate("struct S{} s; s", &HadError), (intptr_t)~0UL);
116+
EXPECT_FALSE(HadError) ;
117+
}
118+
87119
TEST(InterpreterTest, DeleteInterpreter) {
88120
auto* I1 = Cpp::CreateInterpreter();
89121
auto* I2 = Cpp::CreateInterpreter();

0 commit comments

Comments
 (0)