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.
99 lines
4.2 KiB
99 lines
4.2 KiB
/*
|
|
* ReadLabFileTest.cpp
|
|
*
|
|
* Created on: 12.09.2012
|
|
* Author: Thomas Heinemann
|
|
*/
|
|
|
|
#include "gtest/gtest.h"
|
|
#include "mrmc-config.h"
|
|
#include "src/models/AtomicPropositionsLabeling.h"
|
|
#include "src/parser/AtomicPropositionLabelingParser.h"
|
|
#include "src/exceptions/FileIoException.h"
|
|
#include "src/exceptions/WrongFileFormatException.h"
|
|
|
|
#include <memory>
|
|
|
|
TEST(ReadLabFileTest, NonExistingFileTest) {
|
|
//No matter what happens, please don't create a file with the name "nonExistingFile.not"! :-)
|
|
ASSERT_THROW(mrmc::parser::AtomicPropositionLabelingParser(0,MRMC_CPP_TESTS_BASE_PATH "/nonExistingFile.not"), mrmc::exceptions::FileIoException);
|
|
}
|
|
|
|
TEST(ReadLabFileTest, ParseTest) {
|
|
//This test is based on a test case from the original MRMC.
|
|
|
|
|
|
mrmc::parser::AtomicPropositionLabelingParser* parser;
|
|
//Parsing the file
|
|
ASSERT_NO_THROW(parser = new mrmc::parser::AtomicPropositionLabelingParser(12, MRMC_CPP_TESTS_BASE_PATH "/parser/lab_files/pctl_general_input_01.lab"));
|
|
std::shared_ptr<mrmc::models::AtomicPropositionsLabeling> labeling(parser->getLabeling());
|
|
|
|
//Checking whether all propositions are in the labelling
|
|
|
|
char phi[] = "phi", psi[] = "psi", smth[] = "smth";
|
|
|
|
if (labeling != NULL) {
|
|
ASSERT_TRUE(labeling->containsAtomicProposition(phi));
|
|
ASSERT_TRUE(labeling->containsAtomicProposition(psi));
|
|
ASSERT_TRUE(labeling->containsAtomicProposition(smth));
|
|
|
|
//Testing whether all and only the correct nodes are labeled with "phi"
|
|
ASSERT_TRUE(labeling->stateHasAtomicProposition(phi,1));
|
|
ASSERT_TRUE(labeling->stateHasAtomicProposition(phi,2));
|
|
ASSERT_TRUE(labeling->stateHasAtomicProposition(phi,3));
|
|
ASSERT_TRUE(labeling->stateHasAtomicProposition(phi,5));
|
|
ASSERT_TRUE(labeling->stateHasAtomicProposition(phi,7));
|
|
ASSERT_TRUE(labeling->stateHasAtomicProposition(phi,9));
|
|
ASSERT_TRUE(labeling->stateHasAtomicProposition(phi,10));
|
|
ASSERT_TRUE(labeling->stateHasAtomicProposition(phi,11));
|
|
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(phi,4));
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(phi,6));
|
|
|
|
//Testing whether all and only the correct nodes are labeled with "psi"
|
|
ASSERT_TRUE(labeling->stateHasAtomicProposition(psi,6));
|
|
ASSERT_TRUE(labeling->stateHasAtomicProposition(psi,7));
|
|
ASSERT_TRUE(labeling->stateHasAtomicProposition(psi,8));
|
|
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(psi,1));
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(psi,2));
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(psi,3));
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(psi,4));
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(psi,5));
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(psi,9));
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(psi,10));
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(psi,11));
|
|
|
|
//Testing whether all and only the correct nodes are labeled with "smth"
|
|
ASSERT_TRUE(labeling->stateHasAtomicProposition(smth,4));
|
|
ASSERT_TRUE(labeling->stateHasAtomicProposition(smth,5));
|
|
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(smth,1));
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(smth,2));
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(smth,3));
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(smth,6));
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(smth,7));
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(smth,8));
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(smth,9));
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(smth,10));
|
|
ASSERT_FALSE(labeling->stateHasAtomicProposition(smth,11));
|
|
|
|
//Deleting the labeling
|
|
delete parser;
|
|
} else {
|
|
FAIL();
|
|
}
|
|
}
|
|
|
|
TEST(ReadLabFileTest, WrongHeaderTest1) {
|
|
ASSERT_THROW(mrmc::parser::AtomicPropositionLabelingParser(3, MRMC_CPP_TESTS_BASE_PATH "/parser/lab_files/wrong_format_header1.lab"), mrmc::exceptions::WrongFileFormatException);
|
|
}
|
|
|
|
TEST(ReadLabFileTest, WrongHeaderTest2) {
|
|
ASSERT_THROW(mrmc::parser::AtomicPropositionLabelingParser(3, MRMC_CPP_TESTS_BASE_PATH "/parser/lab_files/wrong_format_header2.lab"), mrmc::exceptions::WrongFileFormatException);
|
|
}
|
|
|
|
TEST(ReadLabFileTest, WrongPropositionTest) {
|
|
ASSERT_THROW(mrmc::parser::AtomicPropositionLabelingParser(3, MRMC_CPP_TESTS_BASE_PATH "/parser/lab_files/wrong_format_proposition.lab"), mrmc::exceptions::WrongFileFormatException);
|
|
}
|
|
|