#include <list> #include "minimizeTest.h" #include "label/StringLabel.h" #include "label/IntegerLabel.h" #include "label/Label.h" #include "alphabet/LabeledSymbol.h" #include "minimize/dfa/MinimizeDFA.h" #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y)) CPPUNIT_TEST_SUITE_REGISTRATION( minimizeTest ); void minimizeTest::setUp() { } void minimizeTest::tearDown() { } void minimizeTest::testMinimize() { automaton::DFA automaton(automaton::State(label::Label(label::IntegerLabel(1)))); automaton.addState(automaton::State(label::Label(label::IntegerLabel(1)))); automaton.addState(automaton::State(label::Label(label::IntegerLabel(2)))); automaton.addState(automaton::State(label::Label(label::IntegerLabel(3)))); automaton.addInputSymbol(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("a"))))); automaton.addInputSymbol(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("b"))))); automaton.addTransition(automaton::State(label::Label(label::IntegerLabel(1))), alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("a")))), automaton::State(label::Label(label::IntegerLabel(2)))); automaton.addTransition(automaton::State(label::Label(label::IntegerLabel(2))), alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("b")))), automaton::State(label::Label(label::IntegerLabel(1)))); automaton.addFinalState(automaton::State(label::Label(label::IntegerLabel(3)))); automaton::DFA minimized = minimize::MinimizeDFA::minimize(automaton); CPPUNIT_ASSERT(minimized.getStates().size() == 3); }