| | |
| | |
| | |
| | #include <pocketsphinx.h> |
| | #include <stdio.h> |
| | #include <string.h> |
| |
|
| | #include "lm/fsg_model.h" |
| | #include "test_macros.h" |
| |
|
| | int |
| | main(int argc, char *argv[]) |
| | { |
| | logmath_t *lmath; |
| | fsg_model_t *fsg; |
| |
|
| | (void)argc; |
| | (void)argv; |
| |
|
| | err_set_loglevel(ERR_INFO); |
| | lmath = logmath_init(1.0001, 0, 0); |
| |
|
| | |
| | fsg = fsg_model_readfile(LMDIR "/goforward.fsg", lmath, 7.5); |
| | TEST_ASSERT(fsg); |
| |
|
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "GO FORWARD TEN METERS")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "GO FORWARD TEN METER")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "GO FORWARD SIX METER")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "GO FORWARD TEN METER")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "GO FORWARD TEN")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "GO FORWARD THREE FOUR METERS")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "GO FORWARD YOURSELF")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "")); |
| | fsg_model_free(fsg); |
| | |
| | |
| | fsg = fsg_model_readfile( |
| | LMDIR "/../../regression/test.rightRecursion.fsg", lmath, 7.5); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "stop")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "start")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "stop and start")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "stop and stop")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "start and start")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, |
| | "start and start and start")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "stop stop")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "and stop")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "stop and")); |
| | fsg_model_free(fsg); |
| |
|
| | |
| | fsg = fsg_model_readfile( |
| | LMDIR "/../../regression/test.nestedRightRecursion.fsg", lmath, 7.5); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "something")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "another")); |
| | |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "another another")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "something another")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "something something")); |
| | fsg_model_free(fsg); |
| |
|
| | fsg = fsg_model_readfile( |
| | LMDIR "/../../regression/test.kleene.fsg", lmath, 7.5); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "please oh mighty computer kindly don't crash")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "please please please don't crash")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "please don't crash")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "kindly don't crash")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "oh mighty computer don't crash")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "don't crash")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "kindly oh mighty computer")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "")); |
| | fsg_model_free(fsg); |
| |
|
| | fsg = fsg_model_readfile( |
| | LMDIR "/../../regression/test.command.fsg", lmath, 7.5); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "oh mighty computer thanks")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "go go go go go")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "stop")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "stop stop stop")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "could you stop thanks")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "could you stop")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "kindly go go go thank you")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "go stop")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "please kindly go please")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "please go please thanks")); |
| | fsg_model_free(fsg); |
| |
|
| | fsg = fsg_model_readfile( |
| | LMDIR "/../../regression/right_recursion_53.fsg", lmath, 7.5); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "ONE THOUSAND FIVE METER EQUAL TO CENTIMETER")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "ONE ONE THREE THREE THOUSAND TEN NINE CENTIMETER EQUAL TO METER")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "WHAT IS YOUR NAME")); |
| | TEST_EQUAL(TRUE, fsg_model_accept(fsg, "THREE METER EQUAL TO HOW MANY CENTIMETER")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "METER EQUAL TO HOW MANY MILE")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "ONE THREE HOW MANY MILE")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "WHAT IS YOUR NAME HOW MANY THOUSAND THOUSAND")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "ONE TWO WHAT IS YOUR NAME")); |
| | TEST_EQUAL(FALSE, fsg_model_accept(fsg, "THOUSAND WHAT IS YOUR NAME")); |
| | fsg_model_free(fsg); |
| | logmath_free(lmath); |
| | |
| | return 0; |
| | } |
| |
|