Download test/unit/test_config.c from camenduru/pocketsphinx: direct link, hf CLI and curl.
- Browser
- Download file 7.92 kB
-
https://huggingface.co/camenduru/pocketsphinx/resolve/main/test/unit/test_config.c
- Command line
-
hf download hf://camenduru/pocketsphinx/test/unit/test_config.c
-
curl -L -o test_config.c https://huggingface.co/camenduru/pocketsphinx/resolve/main/test/unit/test_config.c
7.92 kB
| static char *good_argv[] = { | |
| "pocketsphinx", | |
| "-hmm", | |
| "en-us", | |
| "-samprate", | |
| "16000", | |
| "-beam", | |
| "0.005", | |
| "-backtrace", | |
| "yes" | |
| }; | |
| static int good_argc = LEN(good_argv); | |
| static char *good_json = \ | |
| "{ \"hmm\": \"en-us\",\n" | |
| " \"samprate\": 16000,\n" | |
| " \"beam\": 5e-3,\n" | |
| " \"backtrace\": true\n" | |
| "}"; | |
| static char *cmd_argv[] = { | |
| "pocketsphinx", | |
| "-hmm", | |
| "en-us", | |
| "-samprate", | |
| "16000", | |
| "-beam", | |
| "0.005", | |
| "-backtrace", | |
| "yes" | |
| }; | |
| static int cmd_argc = LEN(cmd_argv); | |
| static char *bad_argv[] = { | |
| "pocketsphinx", | |
| "-hmm", | |
| "en-us", | |
| "-samprate", | |
| "forty-two", | |
| "beam", | |
| "1e-80", | |
| "-backtrace", | |
| "WTF" | |
| }; | |
| static int bad_argc = LEN(bad_argv); | |
| static char *bad_json = \ | |
| "{ \"hmm\": en us,\n" | |
| " \"samprate\": 16000,\n" | |
| " \"beam\": 5e-3,\n" | |
| " \"backtrace\": true\n" | |
| "}"; | |
| static char *ugly_json = \ | |
| "hmm: en-us samprate: 16000 beam: 0.005 backtrace: true"; | |
| static char *hard_json = \ | |
| "{ \"hmm\": \"\\\\model\\\\en-us\",\n" | |
| " \"keyphrase\": \"spam\tspam \\\"spam\\\" eggs\\nand spam\"\n" | |
| "}"; | |
| /* FIXME: Someday this will be supported */ | |
| static char *bad_hard_json = \ | |
| "{ \"hmm\": \"\\\\model\\\\en-us\",\n" | |
| " \"keyphrase\": \"spam\tspam \\\"spam\\\"\\u0020eggs\\nand spam\"\n" | |
| "}"; | |
| static void | |
| check_live_args(ps_config_t *config) | |
| { | |
| /* Check parsed values */ | |
| TEST_EQUAL(0, strcmp("en-us", ps_config_str(config, "hmm"))); | |
| TEST_EQUAL(16000, ps_config_int(config, "samprate")); | |
| TEST_EQUAL_FLOAT(5e-3, ps_config_float(config, "beam")); | |
| /* Set new values */ | |
| TEST_ASSERT(ps_config_set_str(config, "hmm", "fr-fr")); | |
| TEST_EQUAL(0, strcmp("fr-fr", ps_config_str(config, "hmm"))); | |
| TEST_ASSERT(ps_config_set_int(config, "samprate", 8000)); | |
| TEST_EQUAL(8000, ps_config_int(config, "samprate")); | |
| TEST_ASSERT(ps_config_set_float(config, "beam", 1e-40)); | |
| TEST_EQUAL_FLOAT(1e-40, ps_config_float(config, "beam")); | |
| } | |
| static void | |
| test_config_init(void) | |
| { | |
| ps_config_t *config; | |
| TEST_ASSERT(config = ps_config_init(NULL)); | |
| ps_config_retain(config); | |
| TEST_EQUAL(1, ps_config_free(config)); | |
| TEST_EQUAL(0, ps_config_free(config)); | |
| TEST_ASSERT(config = ps_config_init(NULL)); | |
| TEST_ASSERT(ps_config_set_str(config, "hmm", "en-us")); | |
| TEST_ASSERT(ps_config_set_int(config, "samprate", 16000)); | |
| TEST_ASSERT(ps_config_set_float(config, "beam", 0.005)); | |
| check_live_args(config); | |
| TEST_EQUAL(0, ps_config_free(config)); | |
| } | |
| static void | |
| test_config_args(void) | |
| { | |
| ps_config_t *config; | |
| TEST_ASSERT(config = ps_config_parse_args(NULL, good_argc, good_argv)); | |
| TEST_EQUAL(0, ps_config_free(config)); | |
| TEST_EQUAL(NULL, ps_config_parse_args(NULL, bad_argc, bad_argv)); | |
| TEST_ASSERT(config = ps_config_parse_args(NULL, cmd_argc, cmd_argv)); | |
| check_live_args(config); | |
| TEST_EQUAL(0, ps_config_free(config)); | |
| } | |
| static void | |
| test_config_json(void) | |
| { | |
| ps_config_t *config; | |
| char *json; | |
| TEST_ASSERT(config = ps_config_parse_json(NULL, good_json)); | |
| TEST_EQUAL(0, ps_config_free(config)); | |
| TEST_EQUAL(NULL, ps_config_parse_json(NULL, bad_json)); | |
| TEST_ASSERT(config = ps_config_parse_json(NULL, good_json)); | |
| check_live_args(config); | |
| TEST_EQUAL(0, ps_config_free(config)); | |
| TEST_ASSERT(config = ps_config_parse_json(NULL, ugly_json)); | |
| /* Make a copy now, before it changes in check_live_args */ | |
| json = ckd_salloc(ps_config_serialize_json(config)); | |
| check_live_args(config); | |
| TEST_EQUAL(0, ps_config_free(config)); | |
| /* Check that serialized JSON gives the same result */ | |
| TEST_ASSERT(config = ps_config_parse_json(NULL, json)); | |
| check_live_args(config); | |
| TEST_EQUAL(0, ps_config_free(config)); | |
| ckd_free(json); | |
| TEST_ASSERT(config = ps_config_parse_json(NULL, hard_json)); | |
| printf("%s\n", ps_config_str(config, "hmm")); | |
| printf("%s\n", ps_config_str(config, "keyphrase")); | |
| TEST_EQUAL(0, strcmp(ps_config_str(config, "hmm"), | |
| "\\model\\en-us")); | |
| TEST_EQUAL(0, strcmp(ps_config_str(config, "keyphrase"), | |
| "spam\tspam \"spam\" eggs\nand spam")); | |
| json = ckd_salloc(ps_config_serialize_json(config)); | |
| ps_config_free(config); | |
| TEST_ASSERT(config = ps_config_parse_json(NULL, json)); | |
| printf("%s\n", ps_config_str(config, "hmm")); | |
| printf("%s\n", ps_config_str(config, "keyphrase")); | |
| TEST_EQUAL(0, strcmp(ps_config_str(config, "hmm"), | |
| "\\model\\en-us")); | |
| TEST_EQUAL(0, strcmp(ps_config_str(config, "keyphrase"), | |
| "spam\tspam \"spam\" eggs\nand spam")); | |
| ps_config_free(config); | |
| ckd_free(json); | |
| TEST_EQUAL(NULL, ps_config_parse_json(NULL, bad_hard_json)); | |
| } | |
| static void | |
| test_validate_config(void) | |
| { | |
| ps_config_t *config; | |
| TEST_ASSERT(config = | |
| ps_config_parse_json( | |
| NULL, | |
| "hmm: \"" MODELDIR "/en-us/en-us\"," | |
| "lm: \"" MODELDIR "/en-us/en-us.lm.bin\"," | |
| "dict: \"" MODELDIR "/en-us/cmudict-en-us.dict\"," | |
| "fwdtree: true," | |
| "fwdflat: false," | |
| "bestpath: false," | |
| "samprate: 16000")); | |
| TEST_EQUAL(0, ps_config_validate(config)); | |
| ps_config_free(config); | |
| TEST_ASSERT(config = | |
| ps_config_parse_json( | |
| NULL, | |
| "hmm: \"" MODELDIR "/en-us/en-us\"," | |
| "lm: \"" MODELDIR "/en-us/en-us.lm.bin\"," | |
| "jsgf: \"" DATADIR "/goforward.gram\"," | |
| "dict: \"" MODELDIR "/en-us/cmudict-en-us.dict\"," | |
| "fwdtree: true," | |
| "fwdflat: false," | |
| "bestpath: false," | |
| "samprate: 16000")); | |
| TEST_ASSERT(ps_config_validate(config) < 0); | |
| ps_config_free(config); | |
| TEST_ASSERT(config = | |
| ps_config_parse_json( | |
| NULL, | |
| "hmm: \"" MODELDIR "/en-us/en-us\"," | |
| "kws: \"" DATADIR "/goforward.kws\"," | |
| "jsgf: \"" DATADIR "/goforward.gram\"," | |
| "fsg: \"" DATADIR "/goforward.fsg\"," | |
| "dict: \"" MODELDIR "/en-us/cmudict-en-us.dict\"," | |
| "fwdtree: true," | |
| "fwdflat: false," | |
| "bestpath: false," | |
| "samprate: 16000")); | |
| TEST_ASSERT(ps_config_validate(config) < 0); | |
| ps_config_free(config); | |
| TEST_ASSERT(config = | |
| ps_config_parse_json( | |
| NULL, | |
| "hmm: \"" MODELDIR "/en-us/en-us\"," | |
| "keyphrase: \"bonjour alexis\"," | |
| "fwdtree: true," | |
| "fwdflat: false," | |
| "bestpath: false," | |
| "samprate: 16000")); | |
| TEST_EQUAL(0, ps_config_validate(config)); | |
| ps_config_free(config); | |
| } | |
| static void | |
| test_config_default(void) | |
| { | |
| ps_config_t *config; | |
| TEST_ASSERT(config = ps_config_init(NULL)); | |
| setenv("POCKETSPHINX_PATH", MODELDIR, 1); | |
| ps_default_search_args(config); | |
| TEST_EQUAL(0, strcmp(ps_config_str(config, "hmm"), | |
| MODELDIR "/en-us/en-us")); | |
| TEST_EQUAL(0, strcmp(ps_config_str(config, "lm"), | |
| MODELDIR "/en-us/en-us.lm.bin")); | |
| TEST_EQUAL(0, strcmp(ps_config_str(config, "dict"), | |
| MODELDIR "/en-us/cmudict-en-us.dict")); | |
| ps_config_free(config); | |
| } | |
| int | |
| main(int argc, char *argv[]) | |
| { | |
| (void)argc; (void)argv; | |
| test_config_init(); | |
| test_config_args(); | |
| test_config_json(); | |
| test_validate_config(); | |
| test_config_default(); | |
| return 0; | |
| } | |