예제 #1
0
 def test_epsilon_loop2(self):
     """ Test empty loop bis """
     fst = FST()
     fst.add_start_state("q0")
     fst.add_transitions([("q0", "epsilon", "q1", []),
                          ("q1", "a", "q2", ["b"]),
                          ("q1", "epsilon", "q0", [])])
     fst.add_final_state("q2")
     translation = list(fst.translate(["a"]))
     self.assertEqual(translation, [["b"]])
예제 #2
0
 def test_paper(self):
     """ Test for the paper """
     fst = FST()
     fst.add_transitions([(0, "I", 1, ["Je"]), (1, "am", 2, ["suis"]),
                          (2, "alone", 3, ["tout", "seul"]),
                          (2, "alone", 3, ["seul"])])
     fst.add_start_state(0)
     fst.add_final_state(3)
     self.assertEqual(
         list(fst.translate(["I", "am", "alone"])),
         [['Je', 'suis', 'seul'], ['Je', 'suis', 'tout', 'seul']])
     fst = FST.from_networkx(fst.to_networkx())
     self.assertEqual(
         list(fst.translate(["I", "am", "alone"])),
         [['Je', 'suis', 'seul'], ['Je', 'suis', 'tout', 'seul']])
     fst.write_as_dot("fst.dot")
     self.assertTrue(path.exists("fst.dot"))