diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2017-03-25 21:39:44 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2017-04-02 10:06:07 +0200 |
commit | f824602bdd922cdc9e15aa83fda545534c0b0542 (patch) | |
tree | ec4485609e19353f559e5b03f365d8d6b7dc3349 /src/tests/test-modem-helpers.c | |
parent | 822bfa4ca163ef17a0fc60d03bfae462091885bf (diff) |
modem-helpers: if operator not in UCS2, see if already valid UTF-8
The method doing the operator name normalization takes as input the
current configured modem charset. If this is UCS2, we will now just
assume this is a hint: the string may or may not come in hex/UCS2.
This logic makes the custom operator name loading in Huawei unneeded,
if the modem is configured in UCS2, we still properly process operator
names coming in plain ASCII.
Diffstat (limited to 'src/tests/test-modem-helpers.c')
-rw-r--r-- | src/tests/test-modem-helpers.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/tests/test-modem-helpers.c b/src/tests/test-modem-helpers.c index 1fc8c353..98f30f83 100644 --- a/src/tests/test-modem-helpers.c +++ b/src/tests/test-modem-helpers.c @@ -866,6 +866,49 @@ test_cops_query (void) } /*****************************************************************************/ + +typedef struct { + const gchar *input; + MMModemCharset charset; + const gchar *normalized; +} NormalizeOperatorTest; + +static const NormalizeOperatorTest normalize_operator_tests[] = { + /* charset unknown */ + { "Verizon", MM_MODEM_CHARSET_UNKNOWN, "Verizon" }, + /* charset configured as IRA (ASCII) */ + { "Verizon", MM_MODEM_CHARSET_IRA, "Verizon" }, + /* charset configured as GSM7 */ + { "Verizon", MM_MODEM_CHARSET_GSM, "Verizon" }, + /* charset configured as UCS2 */ + { "0056006500720069007A006F006E", MM_MODEM_CHARSET_UCS2, "Verizon" }, + { "Verizon", MM_MODEM_CHARSET_UCS2, "Verizon" }, +}; + +static void +common_test_normalize_operator (const NormalizeOperatorTest *t) +{ + gchar *str; + + str = g_strdup (t->input); + mm_3gpp_normalize_operator_name (&str, t->charset); + if (!t->normalized) + g_assert (!str); + else + g_assert_cmpstr (str, ==, t->normalized); + g_free (str); +} + +static void +test_normalize_operator (void) +{ + guint i; + + for (i = 0; i < G_N_ELEMENTS (normalize_operator_tests); i++) + common_test_normalize_operator (&normalize_operator_tests[i]); +} + +/*****************************************************************************/ /* Test CREG/CGREG responses and unsolicited messages */ typedef struct { @@ -3527,6 +3570,8 @@ int main (int argc, char **argv) g_test_suite_add (suite, TESTCASE (test_cops_query, NULL)); + g_test_suite_add (suite, TESTCASE (test_normalize_operator, NULL)); + g_test_suite_add (suite, TESTCASE (test_creg1_solicited, reg_data)); g_test_suite_add (suite, TESTCASE (test_creg1_unsolicited, reg_data)); g_test_suite_add (suite, TESTCASE (test_creg2_mercury_solicited, reg_data)); |