You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							132 lines
						
					
					
						
							6.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							132 lines
						
					
					
						
							6.1 KiB
						
					
					
				| #include "gtest/gtest.h" | |
| #include "storm-config.h" | |
| #include "src/parser/FormulaParser.h" | |
| #include "src/logic/FragmentChecker.h" | |
| #include "src/exceptions/WrongFormatException.h" | |
|  | |
| TEST(FragmentCheckerTest, Propositional) { | |
|     storm::logic::FragmentChecker checker; | |
|     storm::logic::FragmentSpecification prop = storm::logic::propositional(); | |
| 
 | |
|     storm::parser::FormulaParser formulaParser; | |
|     std::shared_ptr<storm::logic::Formula const> formula; | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("\"label\"")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, prop)); | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("true")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, prop)); | |
| 
 | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("true | \"label\"")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, prop)); | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("!true")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, prop)); | |
| 
 | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("true")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, prop)); | |
| 
 | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("P=? [F true]")); | |
|     EXPECT_FALSE(checker.conformsToSpecification(*formula, prop)); | |
| 
 | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("false | P>0.5 [G \"label\"]")); | |
|     EXPECT_FALSE(checker.conformsToSpecification(*formula, prop)); | |
| 
 | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("P=? [F \"label\"]")); | |
|     EXPECT_FALSE(checker.conformsToSpecification(*formula, prop)); | |
| } | |
| 
 | |
| TEST(FragmentCheckerTest, Pctl) { | |
|     storm::logic::FragmentChecker checker; | |
|     storm::logic::FragmentSpecification pctl = storm::logic::pctl(); | |
|      | |
|     storm::parser::FormulaParser formulaParser; | |
|     std::shared_ptr<storm::logic::Formula const> formula; | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("\"label\"")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, pctl)); | |
| 
 | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("P=? [F \"label\"]")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, pctl)); | |
| 
 | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("P=? [F P=? [F \"label\"]]")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, pctl)); | |
| 
 | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("R=? [F \"label\"]")); | |
|     EXPECT_FALSE(checker.conformsToSpecification(*formula, pctl)); | |
| } | |
| 
 | |
| TEST(FragmentCheckerTest, Prctl) { | |
|     storm::logic::FragmentChecker checker; | |
|     storm::logic::FragmentSpecification prctl = storm::logic::prctl(); | |
|      | |
|     storm::parser::FormulaParser formulaParser; | |
|     std::shared_ptr<storm::logic::Formula const> formula; | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("\"label\"")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, prctl)); | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("P=? [F \"label\"]")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, prctl)); | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("P=? [F P=? [F \"label\"]]")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, prctl)); | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("R=? [F \"label\"]")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, prctl)); | |
| 
 | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("R=? [C<=3]")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, prctl)); | |
| 
 | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("P=? [F[0,1] \"label\"]")); | |
|     EXPECT_FALSE(checker.conformsToSpecification(*formula, prctl)); | |
| } | |
| 
 | |
| TEST(FragmentCheckerTest, Csl) { | |
|     storm::logic::FragmentChecker checker; | |
|     storm::logic::FragmentSpecification csl = storm::logic::csl(); | |
|      | |
|     storm::parser::FormulaParser formulaParser; | |
|     std::shared_ptr<storm::logic::Formula const> formula; | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("\"label\"")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, csl)); | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("P=? [F \"label\"]")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, csl)); | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("P=? [F P=? [F \"label\"]]")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, csl)); | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("R=? [F \"label\"]")); | |
|     EXPECT_FALSE(checker.conformsToSpecification(*formula, csl)); | |
| 
 | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("P=? [F[0,1] \"label\"]")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, csl)); | |
| } | |
| 
 | |
| TEST(FragmentCheckerTest, Csrl) { | |
|     storm::logic::FragmentChecker checker; | |
|     storm::logic::FragmentSpecification csrl = storm::logic::csrl(); | |
|      | |
|     storm::parser::FormulaParser formulaParser; | |
|     std::shared_ptr<storm::logic::Formula const> formula; | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("\"label\"")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, csrl)); | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("P=? [F \"label\"]")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, csrl)); | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("P=? [F P=? [F \"label\"]]")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, csrl)); | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("R=? [F \"label\"]")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, csrl)); | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("R=? [C<=3]")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, csrl)); | |
|      | |
|     ASSERT_NO_THROW(formula = formulaParser.parseSingleFormulaFromString("P=? [F[0,1] \"label\"]")); | |
|     EXPECT_TRUE(checker.conformsToSpecification(*formula, csrl)); | |
| }
 |