3 #include "test_macros.h"
6 main(int argc, char *argv[])
12 /* Initialize a logmath object to pass to fsg_model_read */
13 lmath = logmath_init(1.0001, 0, 0);
15 fsg = fsg_model_readfile(LMDIR "/goforward.fsg", lmath, 7.5);
18 TEST_ASSERT(fsg_model_add_silence(fsg, "<sil>", -1, 0.3));
19 TEST_ASSERT(fsg_model_add_silence(fsg, "++NOISE++", -1, 0.3));
20 TEST_ASSERT(fsg_model_add_alt(fsg, "FORWARD", "FORWARD(2)"));
22 fsg_model_write(fsg, stdout);
24 /* Test reference counting. */
25 TEST_ASSERT(fsg = fsg_model_retain(fsg));
26 TEST_EQUAL(1, fsg_model_free(fsg));
27 fsg_model_write(fsg, stdout);
30 for (itor = fsg_model_arcs(fsg, 3);
31 itor; itor = fsg_arciter_next(itor)) {
32 fsg_link_t *link = fsg_arciter_get(itor);
34 TEST_EQUAL(fsg_link_from_state(link), 3);
35 if (fsg_link_wid(link) == -1) {
36 TEST_EQUAL(fsg_link_to_state(link), 4);
37 TEST_EQUAL(fsg_link_logs2prob(link), 0);
39 else if (fsg_link_wid(link) == fsg_model_word_id(fsg, "++NOISE++")
40 || fsg_link_wid(link) == fsg_model_word_id(fsg, "<sil>")) {
41 TEST_EQUAL(fsg_link_to_state(link), 3);
42 TEST_EQUAL_LOG(fsg_link_logs2prob(link), -90300);
44 printf("%d => %d %s %d\n",
45 fsg_link_from_state(link),
46 fsg_link_to_state(link),
47 fsg_link_wid(link) == -1
48 ? "ε" : fsg_model_word_str(fsg, fsg_link_wid(link)),
49 fsg_link_logs2prob(link));
52 TEST_EQUAL(0, fsg_model_free(fsg));