| | #include "lm/fsg_model.h" |
| |
|
| | #include "test_macros.h" |
| |
|
| | int |
| | main(int argc, char *argv[]) |
| | { |
| | logmath_t *lmath; |
| | fsg_model_t *fsg; |
| | fsg_arciter_t *itor; |
| |
|
| | (void)argc; |
| | (void)argv; |
| | |
| | lmath = logmath_init(1.0001, 0, 0); |
| | |
| | fsg = fsg_model_readfile(LMDIR "/goforward.fsg", lmath, 7.5); |
| | TEST_ASSERT(fsg); |
| |
|
| | TEST_ASSERT(fsg_model_add_silence(fsg, "<sil>", -1, 0.3)); |
| | TEST_ASSERT(fsg_model_add_silence(fsg, "++NOISE++", -1, 0.3)); |
| | TEST_ASSERT(fsg_model_add_alt(fsg, "FORWARD", "FORWARD(2)")); |
| |
|
| | fsg_model_write(fsg, stdout); |
| |
|
| | |
| | TEST_ASSERT(fsg = fsg_model_retain(fsg)); |
| | TEST_EQUAL(1, fsg_model_free(fsg)); |
| | fsg_model_write(fsg, stdout); |
| |
|
| | |
| | for (itor = fsg_model_arcs(fsg, 3); |
| | itor; itor = fsg_arciter_next(itor)) { |
| | fsg_link_t *link = fsg_arciter_get(itor); |
| |
|
| | TEST_EQUAL(fsg_link_from_state(link), 3); |
| | if (fsg_link_wid(link) == -1) { |
| | TEST_EQUAL(fsg_link_to_state(link), 4); |
| | TEST_EQUAL(fsg_link_logs2prob(link), 0); |
| | } |
| | else if (fsg_link_wid(link) == fsg_model_word_id(fsg, "++NOISE++") |
| | || fsg_link_wid(link) == fsg_model_word_id(fsg, "<sil>")) { |
| | TEST_EQUAL(fsg_link_to_state(link), 3); |
| | TEST_EQUAL_LOG(fsg_link_logs2prob(link), -90300); |
| | } |
| | printf("%d => %d %s %d\n", |
| | fsg_link_from_state(link), |
| | fsg_link_to_state(link), |
| | fsg_link_wid(link) == -1 |
| | ? "ε" : fsg_model_word_str(fsg, fsg_link_wid(link)), |
| | fsg_link_logs2prob(link)); |
| | } |
| |
|
| | TEST_EQUAL(0, fsg_model_free(fsg)); |
| | logmath_free(lmath); |
| |
|
| | return 0; |
| | } |
| |
|