aboutsummaryrefslogtreecommitdiff
path: root/src/tests/test-modem-helpers.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/test-modem-helpers.c')
-rw-r--r--src/tests/test-modem-helpers.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/tests/test-modem-helpers.c b/src/tests/test-modem-helpers.c
index d1833e5a..db84f016 100644
--- a/src/tests/test-modem-helpers.c
+++ b/src/tests/test-modem-helpers.c
@@ -2631,6 +2631,58 @@ test_cclk_response (void)
}
}
+
+/*****************************************************************************/
+/* Test +CRSM responses */
+
+typedef struct {
+ const gchar *str;
+ gboolean ret;
+ guint sw1;
+ guint sw2;
+ gchar *hex;
+} CrsmTest;
+
+static const CrsmTest crsm_tests[] = {
+ { "+CRSM: 144, 0, 0054485552415941FFFFFFFFFFFFFFFFFF", TRUE, 144, 0, "0054485552415941FFFFFFFFFFFFFFFFFF" },
+ { "+CRSM: 144, 0,0054485552415941FFFFFFFFFFFFFFFFFF", TRUE, 144, 0, "0054485552415941FFFFFFFFFFFFFFFFFF" },
+ { "+CRSM: 144, 0, \"0054485552415941FFFFFFFFFFFFFFFFFF\"", TRUE, 144, 0, "0054485552415941FFFFFFFFFFFFFFFFFF" },
+ { "+CRSM: 144, 0,\"0054485552415941FFFFFFFFFFFFFFFFFF\"", TRUE, 144, 0, "0054485552415941FFFFFFFFFFFFFFFFFF" },
+ { NULL, FALSE, 0, 0, NULL }
+};
+
+static void
+test_crsm_response (void)
+{
+ guint i;
+
+ for (i = 0; crsm_tests[i].str; i++) {
+ GError *error = NULL;
+ guint sw1 = 0;
+ guint sw2 = 0;
+ gchar *hex = 0;
+ gboolean ret;
+
+ ret = mm_3gpp_parse_crsm_response (crsm_tests[i].str,
+ &sw1,
+ &sw2,
+ &hex,
+ &error);
+
+ g_assert (ret == crsm_tests[i].ret);
+ g_assert (ret == (error ? FALSE : TRUE));
+
+ g_clear_error (&error);
+
+ g_assert (sw1 == crsm_tests[i].sw1);
+ g_assert (sw2 == crsm_tests[i].sw2);
+
+ g_assert_cmpstr (crsm_tests[i].hex, ==, hex);
+
+ g_free(hex);
+ }
+}
+
/*****************************************************************************/
void
@@ -2805,6 +2857,8 @@ int main (int argc, char **argv)
g_test_suite_add (suite, TESTCASE (test_cclk_response, NULL));
+ g_test_suite_add (suite, TESTCASE (test_crsm_response, NULL));
+
result = g_test_run ();
reg_test_data_free (reg_data);