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.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/tests/test-modem-helpers.c b/src/tests/test-modem-helpers.c
index 3421921b..51aedef2 100644
--- a/src/tests/test-modem-helpers.c
+++ b/src/tests/test-modem-helpers.c
@@ -5120,6 +5120,44 @@ test_cpin_response (void)
/*****************************************************************************/
+typedef struct {
+ const char *desc;
+ const char *dtmf;
+ const char *expected[5];
+} DtmfTestData;
+
+static const DtmfTestData test_dtmf_data[] = {
+ { "/MM/ModemHelpers/DTMF/empty", "", { NULL } },
+ { "/MM/ModemHelpers/DTMF/one", "1", { "1", NULL } },
+ { "/MM/ModemHelpers/DTMF/no-pause", "1234", { "1234", NULL } },
+ { "/MM/ModemHelpers/DTMF/mid-pause", "123,,456", { "123", ",", ",", "456", NULL } },
+ { "/MM/ModemHelpers/DTMF/end-pause", "123,,", { "123", ",", ",", NULL } },
+};
+
+static void
+test_dtmf_split (gpointer user_data)
+{
+ DtmfTestData *td = user_data;
+ GPtrArray *split;
+ guint expected_len;
+ guint i;
+
+ split = mm_dtmf_split (td->dtmf);
+
+ expected_len = g_strv_length ((gchar **) td->expected);
+ if (expected_len == 0)
+ g_assert_true (split == NULL);
+ else {
+ g_assert_true (split != NULL);
+ g_assert_cmpint (split->len, ==, expected_len);
+ }
+
+ for (i = 0; i < expected_len; i++)
+ g_assert_cmpstr (td->expected[i], ==, g_ptr_array_index (split, i));
+}
+
+/*****************************************************************************/
+
#define TESTCASE(t, d) g_test_create_case (#t, 0, d, NULL, (GTestFixtureFunc) t, NULL)
int main (int argc, char **argv)
@@ -5128,6 +5166,7 @@ int main (int argc, char **argv)
RegTestData *reg_data;
gint result;
DevidItem *item = &devids[0];
+ guint i;
g_test_init (&argc, &argv, NULL);
@@ -5384,6 +5423,12 @@ int main (int argc, char **argv)
g_test_suite_add (suite, TESTCASE (test_cpin_response, NULL));
+ for (i = 0; i < G_N_ELEMENTS (test_dtmf_data); i++) {
+ g_test_add_data_func (test_dtmf_data[i].desc,
+ &test_dtmf_data[i],
+ (GTestDataFunc) test_dtmf_split);
+ }
+
result = g_test_run ();
reg_test_data_free (reg_data);