sim: load emergency numbers from EF_ECC

This commit is contained in:
Aleksander Morgado
2019-10-17 10:51:50 +02:00
parent 1f6c006976
commit d6f9d5e9ec
4 changed files with 197 additions and 1 deletions
+51
View File
@@ -4337,6 +4337,55 @@ test_clcc_response_multiple (void)
common_test_clcc_response (response, expected_call_info_list, G_N_ELEMENTS (expected_call_info_list));
}
/*****************************************************************************/
/* 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 {
@@ -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));