|
|
@ -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()); |
|
|
|
} |