diff options
author | Teijo Kinnunen <teijo.kinnunen@uros.com> | 2021-08-02 12:42:13 +0300 |
---|---|---|
committer | Teijo Kinnunen <teijo.kinnunen@uros.com> | 2021-08-02 12:42:13 +0300 |
commit | 0610267fa812d3a8c2c4777a06f0f5c7f4345ac6 (patch) | |
tree | f247a6b8b1963ef1e3bb305f597e4d1a6f8cad71 /src/tests/test-modem-helpers.c | |
parent | 948099bff0b2add3b788da48e89dbb0bb406db93 (diff) |
test,modem-helpers: add test case of AT+CPOL? response parsing
Diffstat (limited to 'src/tests/test-modem-helpers.c')
-rw-r--r-- | src/tests/test-modem-helpers.c | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/tests/test-modem-helpers.c b/src/tests/test-modem-helpers.c index 97ade5e7..5c78b155 100644 --- a/src/tests/test-modem-helpers.c +++ b/src/tests/test-modem-helpers.c @@ -4495,6 +4495,82 @@ test_bcd_to_string (void *f, gpointer d) /*****************************************************************************/ +typedef struct { + const gchar *response; + gboolean expected_error; + guint expected_index; + const gchar *expected_operator_code; + gboolean expected_gsm_act; + gboolean expected_gsm_compact_act; + gboolean expected_utran_act; + gboolean expected_eutran_act; + gboolean expected_ngran_act; + guint expected_act_count; +} TestCpol; + +static const TestCpol test_cpol[] = { + { "+CPOL: 1,2,\"24412\",0,0,0,0", FALSE, 1, "24412", FALSE, FALSE, FALSE, FALSE, FALSE, 4 }, + { "+CPOL: 1,2,24412,0,0,0,0", FALSE, 1, "24412", FALSE, FALSE, FALSE, FALSE, FALSE, 4 }, + { "+CPOL: 1", TRUE }, + { "+CPOL: 1,2", TRUE }, + { "+CPOL: 1,1,\"Test\"", TRUE }, + { "+CPOL: 5,2,123456,0,0,0,0,1", FALSE, 5, "123456", FALSE, FALSE, FALSE, FALSE, TRUE, 5 }, + { "+CPOL: 99,2,\"63423\",1,0,1,0,1", FALSE, 99, "63423", TRUE, FALSE, TRUE, FALSE, TRUE, 5 }, + { "+CPOL: 101,2,\"63423\",1,1,1", FALSE, 101, "63423", TRUE, TRUE, TRUE, FALSE, FALSE, 3 }, + { "+CPOL: 101,2,\"24491\"", FALSE, 101, "24491", FALSE, FALSE, FALSE, FALSE, FALSE, 0 }, + { "+CPOL: X,2,\"24491\"", TRUE }, + { "+CPOL:1, 2, 12345, 1, 1, 1, 1, 1", FALSE, 1, "12345", TRUE, TRUE, TRUE, TRUE, TRUE, 5 } +}; + +static void +test_cpol_response (void) +{ + guint i; + + for (i = 0; i < G_N_ELEMENTS (test_cpol); i++) { + guint index; + gchar *operator_code = NULL; + gboolean gsm_act; + gboolean gsm_compact_act; + gboolean utran_act; + gboolean eutran_act; + gboolean ngran_act; + guint act_count; + gboolean result; + GError *error = NULL; + + result = mm_sim_parse_cpol_query_response (test_cpol[i].response, + &index, + &operator_code, + &gsm_act, + &gsm_compact_act, + &utran_act, + &eutran_act, + &ngran_act, + &act_count, + &error); + if (test_cpol[i].expected_error) { + g_assert (!result); + g_assert (error); + g_error_free (error); + } else { + g_assert (result); + g_assert_no_error (error); + g_assert_cmpuint (index, ==, test_cpol[i].expected_index); + g_assert_cmpstr (operator_code, ==, test_cpol[i].expected_operator_code); + g_assert_cmpuint (gsm_act, ==, test_cpol[i].expected_gsm_act); + g_assert_cmpuint (gsm_compact_act, ==, test_cpol[i].expected_gsm_compact_act); + g_assert_cmpuint (utran_act, ==, test_cpol[i].expected_utran_act); + g_assert_cmpuint (eutran_act, ==, test_cpol[i].expected_eutran_act); + g_assert_cmpuint (ngran_act, ==, test_cpol[i].expected_ngran_act); + g_assert_cmpuint (act_count, ==, test_cpol[i].expected_act_count); + } + g_free (operator_code); + } +} + +/*****************************************************************************/ + #define TESTCASE(t, d) g_test_create_case (#t, 0, d, NULL, (GTestFixtureFunc) t, NULL) int main (int argc, char **argv) @@ -4726,6 +4802,8 @@ int main (int argc, char **argv) g_test_suite_add (suite, TESTCASE (test_bcd_to_string, NULL)); + g_test_suite_add (suite, TESTCASE (test_cpol_response, NULL)); + result = g_test_run (); reg_test_data_free (reg_data); |