def test_fst_with_symt_mut_fail(): fst = VectorFst() # States s1 = fst.add_state() s2 = fst.add_state() fst.set_start(s1) fst.set_final(s2) input_symt = SymbolTable() input_symt.add_symbol("a") input_symt.add_symbol("b") input_symt.add_symbol("c") fst.set_input_symbols(input_symt) output_symt = SymbolTable() fst.set_output_symbols(output_symt) with pytest.raises(Exception) as err: fst.input_symbols().add_symbol("d") assert ( str(err.value) == '`add_symbol` failed: "Could not get a mutable reference to the symbol table"' )
def test_fst_symt(): fst = VectorFst() s1 = fst.add_state() s2 = fst.add_state() fst.set_start(s1) fst.set_final(s2, 1.0) tr_1 = Tr(1, 0, 10.0, s2) tr_2 = Tr(2, 0, 1.0, s1) tr_3 = Tr(3, 0, 1.0, s2) fst.add_tr(s1, tr_1) fst.add_tr(s2, tr_2) fst.add_tr(s2, tr_3) input_symt = SymbolTable() input_symt.add_symbol("a") input_symt.add_symbol("b") input_symt.add_symbol("c") fst.set_input_symbols(input_symt) fst_in_symbols = fst.input_symbols() assert input_symt == fst_in_symbols assert fst_in_symbols.num_symbols() == 4 assert fst_in_symbols.find("a") == 1 assert fst_in_symbols.find("b") == 2 assert fst_in_symbols.find("c") == 3 output_symt = SymbolTable() fst.set_output_symbols(output_symt) fst_out_symbols = fst.output_symbols() assert output_symt == fst_out_symbols assert fst_out_symbols.num_symbols() == 1
def test_symt_copy_add(): fst = VectorFst() symt = SymbolTable.from_symbols(["a", "b"]) fst.set_input_symbols(symt) fst.set_output_symbols(symt) symt2 = fst.input_symbols().copy() symt2.add_symbol("c") assert symt2.num_symbols() == symt.num_symbols() + 1