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"))
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, [[]])
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, [[]])
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"]])
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)