예제 #1
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"))
예제 #2
0
 def test_generate_empty_word_from_nothing(self):
     """ Generate empty word from nothing """
     fst = FST()
     fst.add_start_state("q0")
     fst.add_transition("q0", "epsilon", "q1", [])
     fst.add_final_state("q1")
     translation = list(fst.translate([]))
     self.assertEqual(translation, [[]])
예제 #3
0
 def test_epsilon_loop(self):
     """ Test empty loop """
     fst = FST()
     fst.add_start_state("q0")
     fst.add_transition("q0", "epsilon", "q1", [])
     fst.add_final_state("q1")
     fst.add_transition("q1", "epsilon", "q0", [])
     translation = list(fst.translate([]))
     self.assertEqual(translation, [[]])
예제 #4
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"]])
예제 #5
0
    def test_translate(self):
        """ Test a translation """
        fst = FST()
        fst.add_start_state("q0")
        translation = list(fst.translate(["a"]))
        self.assertEqual(len(translation), 0)

        fst.add_transition("q0", "a", "q1", ["b"])
        translation = list(fst.translate(["a"]))
        self.assertEqual(len(translation), 0)

        fst.add_final_state("q1")
        translation = list(fst.translate(["a"]))
        self.assertEqual(len(translation), 1)
        self.assertEqual(translation, [["b"]])

        fst.add_transition("q1", "epsilon", "q1", ["c"])
        translation = list(fst.translate(["a"], max_length=10))
        self.assertEqual(len(translation), 10)
        self.assertIn(["b"], translation)
        self.assertIn(["b", "c"], translation)
        self.assertIn(["b"] + ["c"] * 9, translation)