def test_run_invalid_std(self): nfa = NfaRegex('(a|b)*abb') nfa.build() dfa = DfaNfa(nfa.nfa) dfa.build() dfa.minimize() result = dfa.run('ababaab') self.assertEqual(result, False)
def check_chain(regex, chain): nfa = NfaRegex(regex) nfa.build() nfa.nfa.draw() dfa = DfaNfa(nfa.nfa) dfa.build() dfa.dfa.draw() dfa.minimize() dfa.run(chain)
def test_build_correct_std(self): nfa = NfaRegex('(a|b)*abb') nfa.build() dfa = DfaNfa(nfa.nfa) dfa.build() self.assertEqual(dfa.dfa.states, [0, 1, 2, 4, 5]) self.assertEqual(dfa.dfa.init_state, 0) self.assertEqual(dfa.dfa.finish_states, [5]) self.assertEqual(dfa.dfa.language, ['a', 'b']) self.assertEqual( dfa.dfa.transitions, [[0, 1, 'a'], [0, 2, 'b'], [2, 1, 'a'], [2, 2, 'b'], [1, 1, 'a'], [1, 4, 'b'], [4, 1, 'a'], [4, 5, 'b'], [5, 1, 'a'], [5, 2, 'b']])
def test_minimize_correct(self): nfa = NfaRegex('a?b?(abc)*') nfa.build() dfa = DfaNfa(nfa.nfa) dfa.build() dfa.minimize() self.assertEqual(dfa.dfa.states, [0, 1, 2, 3, 4, 5]) self.assertEqual(dfa.dfa.init_state, 0) self.assertEqual(dfa.dfa.finish_states, [2, 5]) self.assertEqual(dfa.dfa.language, ['a', 'b', 'c']) self.assertEqual(dfa.dfa.transitions, [[0, 1, 'a'], [1, 1, 'a'], [1, 2, 'b'], [2, 2, 'b'], [2, 3, 'a'], [3, 4, 'b'], [4, 5, 'c'], [5, 3, 'a']])
def test_minimize_correct_std(self): nfa = NfaRegex('(a|b)*abb') nfa.build() dfa = DfaNfa(nfa.nfa) dfa.build() dfa.minimize() self.assertEqual(dfa.dfa.states, [0, 1, 2, 3]) self.assertEqual(dfa.dfa.init_state, 0) self.assertEqual(dfa.dfa.finish_states, [3]) self.assertEqual(dfa.dfa.language, ['a', 'b']) self.assertEqual(dfa.dfa.transitions, [[0, 0, 'b'], [0, 1, 'a'], [1, 1, 'a'], [1, 2, 'b'], [2, 1, 'a'], [2, 3, 'b'], [3, 0, 'b'], [3, 1, 'a']])