예제 #1
0
 def test_import_networkx(self):
     enfa = EpsilonNFA()
     state0 = State("0")
     state1 = State(1)
     symb_a = Symbol('a')
     enfa.add_start_state(state0)
     enfa.add_final_state(state1)
     enfa.add_transition(state0, symb_a, state1)
     enfa.add_transition(state1, Epsilon(), state0)
     graph = enfa.to_networkx()
     enfa_from_nx = EpsilonNFA.from_networkx(graph)
     self.assertTrue(enfa_from_nx.accepts([symb_a]))
     self.assertTrue(enfa_from_nx.accepts([symb_a, symb_a]))
     self.assertFalse(enfa_from_nx.accepts([]))
예제 #2
0
 def test_export_networkx(self):
     enfa = EpsilonNFA()
     state0 = State("0")
     state1 = State(1)
     symb_a = Symbol('a')
     enfa.add_start_state(state0)
     enfa.add_final_state(state1)
     enfa.add_transition(state0, symb_a, state1)
     enfa.add_transition(state1, Epsilon(), state0)
     graph = enfa.to_networkx()
     self.assertTrue(isinstance(graph, networkx.MultiDiGraph))
     self.assertTrue("0" in graph)
     self.assertTrue(("0", 1) in graph.edges)
     self.assertIn("a", [x["label"] for x in graph["0"][1].values()])
     self.assertTrue(graph.nodes["0"]["is_start"])
     self.assertFalse(graph.nodes["0"]["is_final"])
     self.assertFalse(graph.nodes[1]["is_start"])
     self.assertTrue(graph.nodes[1]["is_final"])
     enfa.write_as_dot("enfa.dot")