Browse Source

Add test for ValueType to Expression

tempestpy_adaptions
Jip Spel 6 years ago
parent
commit
440b127880
  1. 34
      src/test/storm/storage/ExpressionTest.cpp

34
src/test/storm/storage/ExpressionTest.cpp

@ -6,7 +6,13 @@
#include "storm/storage/expressions/ExpressionManager.h"
#include "storm/storage/expressions/LinearityCheckVisitor.h"
#include "storm/storage/expressions/SimpleValuation.h"
#include "storm/storage/expressions/ExpressionEvaluator.h"
#include "storm/storage/expressions/ValueTypeToExpression.h"
#include "storm/exceptions/InvalidTypeException.h"
#include "storm/adapters/RationalFunctionAdapter.h"
#include "storm-parsers/parser/ValueParser.h"
#include "storm/storage/expressions/ToRationalFunctionVisitor.h"
TEST(Expression, FactoryMethodTest) {
std::shared_ptr<storm::expressions::ExpressionManager> manager(new storm::expressions::ExpressionManager());
@ -369,3 +375,31 @@ TEST(Expression, VisitorTest) {
storm::expressions::LinearityCheckVisitor visitor;
EXPECT_TRUE(visitor.check(tempExpression));
}
TEST(Expression, ValueTypeToExpressionTest) {
storm::parser::ValueParser<storm::RationalFunction> parser;
parser.addParameter("p");
parser.addParameter("q");
auto rationalFunction = parser.parseValue("((5*p^(3))+(q*p*7)+2)/2");
std::shared_ptr<storm::expressions::ExpressionManager> manager(new storm::expressions::ExpressionManager());
auto transformer = storm::expressions::ValueTypeToExpression<storm::RationalFunction>(manager);
storm::expressions::Expression expr;
EXPECT_NO_THROW(expr = transformer.toExpression(rationalFunction));
auto base = storm::expressions::ExpressionEvaluator<storm::RationalFunction>(*manager);
storm::expressions::ToRationalFunctionVisitor<storm::RationalFunction> visitor(base);
ASSERT_NO_THROW(rationalFunction.simplify());
storm::RationalFunction result;
ASSERT_NO_THROW(result = visitor.toRationalFunction(expr));
ASSERT_NO_THROW(result.simplify());
EXPECT_EQ(rationalFunction.toString(), result.toString());
rationalFunction = parser.parseValue("(5*((p^(3))+(q*p)))/2");
transformer = storm::expressions::ValueTypeToExpression<storm::RationalFunction>(manager);
EXPECT_NO_THROW(expr = transformer.toExpression(rationalFunction));
ASSERT_NO_THROW(rationalFunction.simplify());
ASSERT_NO_THROW(result = visitor.toRationalFunction(expr));
ASSERT_NO_THROW(result.simplify());
EXPECT_EQ(rationalFunction.toString(), result.toString());
}
Loading…
Cancel
Save