Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#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);
}