-
Jan Trávníček authoredJan Trávníček authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
playTest.cpp 1.35 KiB
#include <list>
#include "playTest.h"
#include "conversions/re2fa/Glushkov.h"
#include "conversions/fa2re/BrzozowskiAlgebraic.h"
#include "determinize/nfa/NFADeterminizer.h"
#include "minimize/dfa/MinimizeDFA.h"
#include "regexp/unbounded/UnboundedRegExp.h"
#include "regexp/RegExpFromStringParser.h"
#include "automaton/FSM/NFA.h"
#define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
CPPUNIT_TEST_SUITE_REGISTRATION( playTest );
void playTest::setUp() {
}
void playTest::tearDown() {
}
void playTest::testPlay() {
{
std::string input = "a+a* b*";
std::stringstream inputs(input);
regexp::RegExpFromStringParser parser(inputs);
regexp::UnboundedRegExp regexp1( static_cast<const regexp::UnboundedRegExp &>( parser.parseValue().getData() ) );
re2fa::Glushkov glushkov1(regexp1);
automaton::NFA nfa1 = glushkov1.convert();
regexp::UnboundedRegExp regexp2( static_cast<const regexp::UnboundedRegExp &>( fa2re::BrzozowskiAlgebraic::convert(nfa1) ) );
re2fa::Glushkov glushkov2(regexp2);
automaton::NFA nfa2 = glushkov2.convert();
automaton::DFA dfa1 = determinize::NFADeterminizer::determinize(nfa1);
automaton::DFA dfa2 = determinize::NFADeterminizer::determinize(nfa2);
automaton::DFA mdfa1 = minimize::MinimizeDFA::minimize(dfa1);
automaton::DFA mdfa2 = minimize::MinimizeDFA::minimize(dfa2);
CPPUNIT_ASSERT( mdfa1 == mdfa2);
}
}