tests: added parse ERROR response test
This commit is contained in:

committed by
Aleksander Morgado

parent
c15d103ca6
commit
d531992897
@@ -29,7 +29,8 @@ typedef struct {
|
||||
typedef struct {
|
||||
const gchar *response;
|
||||
const gboolean found;
|
||||
} ParseOkTest;
|
||||
const gboolean expected_error;
|
||||
} ParseResponseTest;
|
||||
|
||||
static const EchoRemovalTest echo_removal_tests[] = {
|
||||
{ "\r\n", "\r\n" },
|
||||
@@ -47,11 +48,39 @@ static const EchoRemovalTest echo_removal_tests[] = {
|
||||
{ "\r\nthis is valid\r\nand so is this\r\n", "\r\nthis is valid\r\nand so is this\r\n" },
|
||||
};
|
||||
|
||||
static const ParseOkTest parse_ok_tests[] = {
|
||||
{ "\r\nOK\r\n", TRUE},
|
||||
{ "\r\nOK\r\n\r\n+CMTI: \"ME\",1\r\n", TRUE},
|
||||
{ "\r\nOK\r\n\r\n+CIEV: 7,1\r\n\r\n+CRING: VOICE\r\n\r\n+CLIP: \"+0123456789\",145,,,,0\r\n", TRUE},
|
||||
{ "\r\nERROR\r\n", FALSE}
|
||||
static const ParseResponseTest parse_ok_tests[] = {
|
||||
{ "\r\nOK\r\n", TRUE, FALSE},
|
||||
{ "\r\nOK\r\n\r\n+CMTI: \"ME\",1\r\n", TRUE, FALSE},
|
||||
{ "\r\nOK\r\n\r\n+CIEV: 7,1\r\n\r\n+CRING: VOICE\r\n\r\n+CLIP: \"+0123456789\",145,,,,0\r\n", TRUE, FALSE},
|
||||
{ "\r\nUNKNOWN COMMAND\r\n", FALSE, FALSE}
|
||||
};
|
||||
|
||||
static const ParseResponseTest parse_error_tests[] = {
|
||||
{ "\r\nUNKNOWN COMMAND\r\n", FALSE, FALSE},
|
||||
{ "\r\nERROR\r\n", TRUE, TRUE},
|
||||
{ "\r\nERROR\r\n\r\noooops\r\n", TRUE, TRUE},
|
||||
{ "\r\n+CME ERROR: raspberry\r\n", TRUE, TRUE},
|
||||
{ "\r\n+CME ERROR: 123\r\n", TRUE, TRUE},
|
||||
{ "\r\n+CME ERROR: \r\n", TRUE, TRUE},
|
||||
{ "\r\n+CME ERROR:\r\n", FALSE, FALSE},
|
||||
{ "\r\n+CMS ERROR: bananas\r\n", TRUE, TRUE},
|
||||
{ "\r\n+CMS ERROR: 456\r\n", TRUE, TRUE},
|
||||
{ "\r\n+CMS ERROR: \r\n", TRUE, TRUE},
|
||||
{ "\r\n+CMS ERROR:\r\n", FALSE, FALSE},
|
||||
{ "\r\nMODEM ERROR: 5\r\n", TRUE, TRUE},
|
||||
{ "\r\nMODEM ERROR: apple\r\n", FALSE, FALSE},
|
||||
{ "\r\nMODEM ERROR: \r\n", FALSE, FALSE},
|
||||
{ "\r\nMODEM ERROR:\r\n", FALSE, FALSE},
|
||||
{ "\r\nCOMMAND NOT SUPPORT\r\n", TRUE, TRUE},
|
||||
{ "\r\nCOMMAND NOT SUPPORT\r\n\r\nSomething extra\r\n", TRUE, TRUE},
|
||||
{ "\r\nNO CARRIER\r\n", TRUE, TRUE},
|
||||
{ "\r\nNO CARRIER\r\n\r\nSomething extra\r\n", TRUE, TRUE},
|
||||
{ "\r\nBUSY\r\n", TRUE, TRUE},
|
||||
{ "\r\nBUSY\r\n\r\nSomething extra\r\n", TRUE, TRUE},
|
||||
{ "\r\nNO ANSWER\r\n", TRUE, TRUE},
|
||||
{ "\r\nNO ANSWER\r\n\r\nSomething extra\r\n", TRUE, TRUE},
|
||||
{ "\r\nNO DIALTONE\r\n", TRUE, TRUE},
|
||||
{ "\r\nNO DIALTONE\r\n\r\nSomething extra\r\n", TRUE, TRUE}
|
||||
};
|
||||
|
||||
static void
|
||||
@@ -78,7 +107,7 @@ at_serial_echo_removal (void)
|
||||
}
|
||||
|
||||
static void
|
||||
at_serial_parse_ok (void)
|
||||
_run_parse_test (const ParseResponseTest tests[], guint number_of_tests)
|
||||
{
|
||||
guint i;
|
||||
gpointer parser;
|
||||
@@ -86,31 +115,47 @@ at_serial_parse_ok (void)
|
||||
gboolean found = FALSE;
|
||||
GString *response;
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (parse_ok_tests); i++) {
|
||||
for (i = 0; i < number_of_tests; i++) {
|
||||
parser = mm_serial_parser_v1_new ();
|
||||
response = g_string_new (parse_ok_tests[i].response);
|
||||
response = g_string_new (tests[i].response);
|
||||
found = mm_serial_parser_v1_parse (parser, response, NULL, &error);
|
||||
|
||||
/* Match found */
|
||||
if (parse_ok_tests[i].found) {
|
||||
g_assert_cmpint (found, ==, parse_ok_tests[i].found);
|
||||
g_assert_no_error (error);
|
||||
}
|
||||
/* Not found: error */
|
||||
else {
|
||||
/* Verify if we expect a match or not */
|
||||
g_assert_cmpint (found, ==, tests[i].found);
|
||||
|
||||
/* Error expected */
|
||||
if (tests[i].expected_error) {
|
||||
g_assert (error != NULL);
|
||||
}
|
||||
/* No error expected */
|
||||
else {
|
||||
g_assert_no_error (error);
|
||||
}
|
||||
|
||||
g_string_free (response, TRUE);
|
||||
error = NULL ;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
at_serial_parse_ok (void)
|
||||
{
|
||||
_run_parse_test (parse_ok_tests, G_N_ELEMENTS(parse_ok_tests));
|
||||
}
|
||||
|
||||
static void
|
||||
at_serial_parse_error (void)
|
||||
{
|
||||
_run_parse_test (parse_error_tests, G_N_ELEMENTS(parse_error_tests));
|
||||
}
|
||||
|
||||
int main (int argc, char **argv)
|
||||
{
|
||||
g_test_init (&argc, &argv, NULL);
|
||||
|
||||
g_test_add_func ("/ModemManager/AT-serial/echo-removal", at_serial_echo_removal);
|
||||
g_test_add_func ("/ModemManager/AT-serial/parse-ok", at_serial_parse_ok);
|
||||
g_test_add_func ("/ModemManager/AT-serial/parse-error", at_serial_parse_error);
|
||||
|
||||
return g_test_run ();
|
||||
}
|
||||
|
Reference in New Issue
Block a user