diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2019-09-25 11:28:53 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2019-10-17 10:51:50 +0200 |
commit | d6f9d5e9ec36e403be9836c55c8ffd19422605ef (patch) | |
tree | 04252ff9a7d3d8bf2bda8b1fb102a5f3873eb4ed /src/tests/test-modem-helpers.c | |
parent | 1f6c006976211111c1ccdbe7cbbd146c8338ba38 (diff) |
sim: load emergency numbers from EF_ECC
Diffstat (limited to 'src/tests/test-modem-helpers.c')
-rw-r--r-- | src/tests/test-modem-helpers.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/tests/test-modem-helpers.c b/src/tests/test-modem-helpers.c index ea693079..0e63e41f 100644 --- a/src/tests/test-modem-helpers.c +++ b/src/tests/test-modem-helpers.c @@ -4338,6 +4338,55 @@ test_clcc_response_multiple (void) } /*****************************************************************************/ +/* Test +CRSM EF_ECC read data parsing */ + +#define MAX_EMERGENCY_NUMBERS 5 +typedef struct { + const gchar *raw; + guint n_numbers; + gchar *numbers[MAX_EMERGENCY_NUMBERS]; +} EmergencyNumbersTest; + +static const EmergencyNumbersTest emergency_numbers_tests[] = { + { "", 0 }, + { "FFF", 0 }, + { "FFFFFF" "FFFFFF" "FFFFFF" "FFFFFF" "FFFFFF", 0 }, + { "00F0FF" "11F2FF" "88F8FF", 3, { "000", "112", "888" } }, + { "00F0FF" "11F2FF" "88F8FF" "FFFFFF" "FFFFFF", 3, { "000", "112", "888" } }, + { "00F0FF" "11F2FF" "88F8FF" "214365" "08FFFF", 5, { "000", "112", "888", "123456", "80" } }, +}; + +static void +test_emergency_numbers (void) +{ + guint i; + + for (i = 0; i < G_N_ELEMENTS (emergency_numbers_tests); i++) { + GStrv numbers; + GError *error = NULL; + guint j; + + g_debug (" testing %s...", emergency_numbers_tests[i].raw); + + numbers = mm_3gpp_parse_emergency_numbers (emergency_numbers_tests[i].raw, &error); + if (!emergency_numbers_tests[i].n_numbers) { + g_assert (error); + g_assert (!numbers); + continue; + } + + g_assert_no_error (error); + g_assert (numbers); + + g_assert_cmpuint (emergency_numbers_tests[i].n_numbers, ==, g_strv_length (numbers)); + for (j = 0; j < emergency_numbers_tests[i].n_numbers; j++) + g_assert_cmpstr (emergency_numbers_tests[i].numbers[j], ==, numbers[j]); + + g_strfreev (numbers); + } +} + +/*****************************************************************************/ typedef struct { gchar *str; @@ -4659,6 +4708,8 @@ int main (int argc, char **argv) g_test_suite_add (suite, TESTCASE (test_clcc_response_single_long, NULL)); g_test_suite_add (suite, TESTCASE (test_clcc_response_multiple, NULL)); + g_test_suite_add (suite, TESTCASE (test_emergency_numbers, NULL)); + g_test_suite_add (suite, TESTCASE (test_parse_uint_list, NULL)); g_test_suite_add (suite, TESTCASE (test_bcd_to_string, NULL)); |