public void DFA_RemoveTrapStates() { var dfa = new DFATable(); var a = dfa.CreateNode(); var c = dfa.CreateNode(); a.IsFinal = true; dfa.StartState = a; dfa.AddTransition(a, a, "0"); dfa.AddTransition(a, c, "1"); dfa.AddTransition(c, c, "1"); dfa.AddTransition(c, c, "0"); var nfa = dfa.RemoveTrapStates(); Assert.AreEqual(1, nfa.Nodes.Count()); Assert.AreEqual(1, nfa.Transitions.Count()); Assert.AreEqual(0, nfa.Transitions.First().Source.ID); Assert.AreEqual(0, nfa.Transitions.First().Destination.ID); Assert.AreEqual("0", nfa.Transitions.First().Symbol); Assert.AreEqual(1, nfa.GetAllPossibleSymbols().Count); Assert.IsTrue(nfa.GetAllPossibleSymbols().Contains("0")); }
public DFATests() { dfa = new DFATable(); a = dfa.CreateNode(); b = dfa.CreateNode(); c = dfa.CreateNode(); d = dfa.CreateNode(); e = dfa.CreateNode(); f = dfa.CreateNode(); dfa.StartState = a; c.IsFinal = true; d.IsFinal = true; e.IsFinal = true; dfa.AddTransition(a, b, "0"); dfa.AddTransition(a, c, "1"); dfa.AddTransition(b, a, "0"); dfa.AddTransition(b, d, "1"); dfa.AddTransition(c, f, "1"); dfa.AddTransition(c, e, "0"); dfa.AddTransition(d, e, "0"); dfa.AddTransition(d, f, "1"); dfa.AddTransition(e, e, "0"); dfa.AddTransition(e, f, "1"); dfa.AddTransition(f, f, "1"); dfa.AddTransition(f, f, "0"); }