1 changed files with 72 additions and 0 deletions
			
			
		@ -0,0 +1,72 @@ | 
				
			|||
#include "test/storm_gtest.h"
 | 
				
			|||
#include "storm-parsers/parser/FormulaParser.h"
 | 
				
			|||
#include "storm/logic/FragmentSpecification.h"
 | 
				
			|||
#include "storm/storage/expressions/ExpressionManager.h"
 | 
				
			|||
 | 
				
			|||
TEST(MdpShieldingParserTest, PreSafetyShieldTest) { | 
				
			|||
    storm::parser::FormulaParser formulaParser; | 
				
			|||
 | 
				
			|||
    std::string filename = "preSafetyShieldFileName"; | 
				
			|||
    std::string value = "0.6667"; | 
				
			|||
    std::string input = "<" + filename + ", PreSafety, gamma=" + value + "> Pmax=? [F \"label\"]"; | 
				
			|||
 | 
				
			|||
    std::shared_ptr<storm::logic::Formula const> formula(nullptr); | 
				
			|||
    std::vector<storm::jani::Property> property; | 
				
			|||
    ASSERT_NO_THROW(property = formulaParser.parseFromString(input)); | 
				
			|||
    EXPECT_TRUE(property.at(0).isShieldingProperty()); | 
				
			|||
 | 
				
			|||
    std::shared_ptr<storm::logic::ShieldExpression const> shieldExpression(nullptr); | 
				
			|||
    ASSERT_NO_THROW(shieldExpression = property.at(0).getShieldingExpression()); | 
				
			|||
    EXPECT_TRUE(shieldExpression->isPreSafetyShield()); | 
				
			|||
    EXPECT_FALSE(shieldExpression->isPostSafetyShield()); | 
				
			|||
    EXPECT_FALSE(shieldExpression->isOptimalShield()); | 
				
			|||
    EXPECT_FALSE(shieldExpression->isRelative()); | 
				
			|||
    EXPECT_EQ(std::stod(value), shieldExpression->getValue()); | 
				
			|||
    EXPECT_EQ(filename, shieldExpression->getFilename()); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
TEST(MdpShieldingParserTest, PostSafetyShieldTest) { | 
				
			|||
    storm::parser::FormulaParser formulaParser; | 
				
			|||
 | 
				
			|||
    std::string filename = "postSafetyShieldFileName"; | 
				
			|||
    std::string value = "0.95"; | 
				
			|||
    std::string input = "<" + filename + ", PostSafety, lambda=" + value + "> Pmin=? [X !\"label\"]"; | 
				
			|||
 | 
				
			|||
    std::shared_ptr<storm::logic::Formula const> formula(nullptr); | 
				
			|||
    std::vector<storm::jani::Property> property; | 
				
			|||
    ASSERT_NO_THROW(property = formulaParser.parseFromString(input)); | 
				
			|||
    EXPECT_TRUE(property.at(0).isShieldingProperty()); | 
				
			|||
 | 
				
			|||
    std::shared_ptr<storm::logic::ShieldExpression const> shieldExpression(nullptr); | 
				
			|||
    ASSERT_NO_THROW(shieldExpression = property.at(0).getShieldingExpression()); | 
				
			|||
    EXPECT_FALSE(shieldExpression->isPreSafetyShield()); | 
				
			|||
    EXPECT_TRUE(shieldExpression->isPostSafetyShield()); | 
				
			|||
    EXPECT_FALSE(shieldExpression->isOptimalShield()); | 
				
			|||
    EXPECT_TRUE(shieldExpression->isRelative()); | 
				
			|||
    EXPECT_EQ(std::stod(value), shieldExpression->getValue()); | 
				
			|||
    EXPECT_EQ(filename, shieldExpression->getFilename()); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
TEST(MdpShieldingParserTest, OptimalShieldTest) { | 
				
			|||
    std::shared_ptr<storm::expressions::ExpressionManager> manager(new storm::expressions::ExpressionManager()); | 
				
			|||
    manager->declareBooleanVariable("a"); | 
				
			|||
    manager->declareIntegerVariable("x"); | 
				
			|||
 | 
				
			|||
    storm::parser::FormulaParser formulaParser(manager); | 
				
			|||
 | 
				
			|||
    std::string filename = "optimalShieldFileName"; | 
				
			|||
    std::string input = "<" + filename + ", Optimal> Pmax=? [G (a|x>3)]"; | 
				
			|||
 | 
				
			|||
    std::shared_ptr<storm::logic::Formula const> formula(nullptr); | 
				
			|||
    std::vector<storm::jani::Property> property; | 
				
			|||
    ASSERT_NO_THROW(property = formulaParser.parseFromString(input)); | 
				
			|||
    EXPECT_TRUE(property.at(0).isShieldingProperty()); | 
				
			|||
 | 
				
			|||
    std::shared_ptr<storm::logic::ShieldExpression const> shieldExpression(nullptr); | 
				
			|||
    ASSERT_NO_THROW(shieldExpression = property.at(0).getShieldingExpression()); | 
				
			|||
    EXPECT_FALSE(shieldExpression->isPreSafetyShield()); | 
				
			|||
    EXPECT_FALSE(shieldExpression->isPostSafetyShield()); | 
				
			|||
    EXPECT_TRUE(shieldExpression->isOptimalShield()); | 
				
			|||
    EXPECT_FALSE(shieldExpression->isRelative()); | 
				
			|||
    EXPECT_EQ(filename, shieldExpression->getFilename()); | 
				
			|||
} | 
				
			|||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue