1 #include <pocketsphinx.h>
2 #include "test_macros.h"
3 
test_reinit_fsg()4 static void test_reinit_fsg()
5 {
6        ps_decoder_t *ps;
7        cmd_ln_t *config;
8        config = cmd_ln_init(NULL, ps_args(), TRUE,
9 			    "-hmm", MODELDIR "/hmm/en_US/hub4wsj_sc_8k",
10 			    "-lm", MODELDIR "/lm/en_US/wsj0vp.5000.DMP",
11 			    "-dict", MODELDIR "/lm/en_US/cmu07a.dic",
12                             NULL);
13        ps = ps_init(config);
14        ps_update_fsgset (ps);
15        ps_update_fsgset (ps);
16        ps_free(ps);
17        cmd_ln_free_r(config);
18 }
19 
test_reinit_fsg_missing()20 static void test_reinit_fsg_missing()
21 {
22        ps_decoder_t *ps;
23        cmd_ln_t *config;
24        config = cmd_ln_init(NULL, ps_args(), TRUE,
25 			    "-hmm", MODELDIR "/hmm/en_US/hub4wsj_sc_8k",
26 			    "-dict", MODELDIR "/lm/en_US/cmu07a.dic",
27                             NULL);
28        ps = ps_init(config);
29        cmd_ln_set_str_r(config, "-fsg", "/some/fsg");
30        ps_update_fsgset (ps);
31        ps_free(ps);
32        cmd_ln_free_r(config);
33 }
34 
test_reinit_lm()35 static void test_reinit_lm()
36 {
37         ps_decoder_t *ps;
38         cmd_ln_t *config;
39         ngram_model_t *model;
40         config = cmd_ln_init(NULL, ps_args(), TRUE,
41     			     "-hmm", MODELDIR "/hmm/en_US/hub4wsj_sc_8k",
42 			     "-lm", MODELDIR "/lm/en_US/wsj0vp.5000.DMP",
43 			     "-dict", MODELDIR "/lm/en_US/cmu07a.dic",
44                              NULL);
45         ps = ps_init(config);
46         model = ps_update_lmset (ps, NULL);
47         ps_free(ps);
48         cmd_ln_free_r(config);
49 }
50 
51 /**
52  * Test for NULL in ps_update_lmset return the existing lmset as
53  * specified in API reference
54  */
test_switch_fsg_lm()55 static void test_switch_fsg_lm()
56 {
57         ps_decoder_t *ps;
58         cmd_ln_t *config;
59         ngram_model_t *model;
60         config = cmd_ln_init(NULL, ps_args(), TRUE,
61     			     "-hmm", MODELDIR "/hmm/en_US/hub4wsj_sc_8k",
62 			     "-lm", MODELDIR "/lm/en_US/wsj0vp.5000.DMP",
63 			     "-dict", MODELDIR "/lm/en_US/cmu07a.dic",
64                              NULL);
65         ps = ps_init(config);
66         ps_update_fsgset (ps);
67         TEST_ASSERT(ps_get_lmset(ps) == NULL);
68         model = ps_update_lmset (ps, NULL);
69         TEST_ASSERT(model != NULL);
70         TEST_ASSERT(ps_get_lmset(ps) != NULL);
71         ps_free(ps);
72         cmd_ln_free_r(config);
73 }
74 
75 
main(int argc,char * argv[])76 int main(int argc, char* argv[])
77 {
78 	test_reinit_fsg();
79 	test_reinit_fsg_missing();
80 	test_reinit_lm();
81 	test_switch_fsg_lm();
82 	return 0;
83 }
84