Skip to content
Snippets Groups Projects
minimizeTest.cpp 1.58 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jan Trávníček's avatar
    Jan Trávníček committed
    #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);
    
    }