Exemplo n.º 1
0
def test_fst_relabel_tables():
    fst = VectorFst()
    s1 = fst.add_state()
    s2 = fst.add_state()
    fst.add_tr(s1, Tr(1, 2, weight_one(), s2))
    fst.set_start(s1)
    fst.set_final(s2)

    old_isymt = SymbolTable.from_symbols(["a", "b"])
    new_isymt = SymbolTable.from_symbols(["b", "a"])

    old_osymt = SymbolTable.from_symbols(["aa", "bb"])
    new_osymt = SymbolTable.from_symbols(["bb", "aa"])

    fst_ref = VectorFst()
    s1 = fst_ref.add_state()
    s2 = fst_ref.add_state()
    fst_ref.add_tr(s1, Tr(2, 1, weight_one(), s2))
    fst_ref.set_start(s1)
    fst_ref.set_final(s2)

    fst_1 = fst.copy()
    fst_1.relabel_tables(
        old_isymbols=old_isymt,
        new_isymbols=new_isymt,
        attach_new_isymbols=True,
        old_osymbols=old_osymt,
        new_osymbols=new_osymt,
        attach_new_osymbols=True,
    )
    assert fst_1 == fst_ref
    assert fst_1.input_symbols() == new_isymt
    assert fst_1.output_symbols() == new_osymt

    fst_2 = fst.copy()
    fst_2.relabel_tables(
        old_isymbols=old_isymt,
        new_isymbols=new_isymt,
        attach_new_isymbols=False,
        old_osymbols=old_osymt,
        new_osymbols=new_osymt,
        attach_new_osymbols=False,
    )
    assert fst_2 == fst_ref
    assert fst_2.input_symbols() is None
    assert fst_2.output_symbols() is None

    fst_3 = fst.copy()
    fst_3.set_input_symbols(old_isymt)
    fst_3.set_output_symbols(old_osymt)
    fst_3.relabel_tables(
        new_isymbols=new_isymt,
        new_osymbols=new_osymt,
    )
    assert fst_3 == fst_ref
    assert fst_3.input_symbols() == new_isymt
    assert fst_3.output_symbols() == new_osymt
Exemplo n.º 2
0
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