aboutsummaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2019-09-25 11:28:53 +0200
committerAleksander Morgado <aleksander@aleksander.es>2019-10-17 10:51:50 +0200
commitd6f9d5e9ec36e403be9836c55c8ffd19422605ef (patch)
tree04252ff9a7d3d8bf2bda8b1fb102a5f3873eb4ed /src/tests
parent1f6c006976211111c1ccdbe7cbbd146c8338ba38 (diff)
sim: load emergency numbers from EF_ECC
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/test-modem-helpers.c51
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));