diff --git a/ApplicationCode/UnitTests/CMakeLists_files.cmake b/ApplicationCode/UnitTests/CMakeLists_files.cmake index d282544f15..79baed7e47 100644 --- a/ApplicationCode/UnitTests/CMakeLists_files.cmake +++ b/ApplicationCode/UnitTests/CMakeLists_files.cmake @@ -30,6 +30,7 @@ ${CEE_CURRENT_LIST_DIR}RigCellGeometryTools-Test.cpp ${CEE_CURRENT_LIST_DIR}RigHexIntersectionTools-Test.cpp ${CEE_CURRENT_LIST_DIR}ObservedDataParser-Test.cpp ${CEE_CURRENT_LIST_DIR}EclipseRftReader-Test.cpp +${CEE_CURRENT_LIST_DIR}RicExpressionParser-Test.cpp ) if (RESINSIGHT_ENABLE_PROTOTYPE_FEATURE_FRACTURES) diff --git a/ApplicationCode/UnitTests/RicExpressionParser-Test.cpp b/ApplicationCode/UnitTests/RicExpressionParser-Test.cpp new file mode 100644 index 0000000000..053b1d7ae8 --- /dev/null +++ b/ApplicationCode/UnitTests/RicExpressionParser-Test.cpp @@ -0,0 +1,50 @@ +#include "gtest/gtest.h" + + +#include "expressionparser/ExpressionParser.h" + +#include + + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +TEST(RicExpressionParserTest, BasicUsage) +{ + std::vector a(10); + std::iota(a.begin(), a.end(), 10); + + std::vector b(10); + std::iota(b.begin(), b.end(), 100); + + std::vector c(10); + + ExpressionParser parser; + parser.assignVector("a", a); + parser.assignVector("b", b); + parser.assignVector("c", c); + + QString expr = "c := a + b"; + parser.setExpression(expr); + + EXPECT_TRUE(parser.evaluate()); + + EXPECT_DOUBLE_EQ(c[0], 110.0); + EXPECT_DOUBLE_EQ(c[9], 128.0); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +TEST(RicExpressionParserTest, DetectVariables) +{ + QString expr = "c := a + (x / y)"; + + std::vector variables = ExpressionParser::detectReferencedVariables(expr); + + EXPECT_STREQ(variables[0].toStdString().data(), "a"); + EXPECT_STREQ(variables[1].toStdString().data(), "c"); + EXPECT_STREQ(variables[2].toStdString().data(), "x"); + EXPECT_STREQ(variables[3].toStdString().data(), "y"); +} +