aboutsummaryrefslogtreecommitdiff
path: root/src/tests/test-charsets.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/test-charsets.c')
-rw-r--r--src/tests/test-charsets.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/tests/test-charsets.c b/src/tests/test-charsets.c
index f954d93e..ced38a66 100644
--- a/src/tests/test-charsets.c
+++ b/src/tests/test-charsets.c
@@ -326,6 +326,41 @@ test_pack_gsm7_7_chars_offset (void *f, gpointer d)
g_free (packed);
}
+static void
+test_take_convert_ucs2_hex_utf8 (void *f, gpointer d)
+{
+ gchar *src, *converted;
+
+ /* Ensure hex-encoded UCS-2 works */
+ src = g_strdup ("0054002d004d006f00620069006c0065");
+ converted = mm_charset_take_and_convert_to_utf8 (src, MM_MODEM_CHARSET_UCS2);
+ g_assert_cmpstr (converted, ==, "T-Mobile");
+ g_free (converted);
+}
+
+static void
+test_take_convert_ucs2_bad_ascii (void *f, gpointer d)
+{
+ gchar *src, *converted;
+
+ /* Test that something mostly ASCII returns most of the original string */
+ src = g_strdup ("Orange\241");
+ converted = mm_charset_take_and_convert_to_utf8 (src, MM_MODEM_CHARSET_UCS2);
+ g_assert_cmpstr (converted, ==, "Orange");
+ g_free (converted);
+}
+
+static void
+test_take_convert_ucs2_bad_ascii2 (void *f, gpointer d)
+{
+ gchar *src, *converted;
+
+ /* Ensure something completely screwed up doesn't crash */
+ src = g_strdup ("\241\255\254\250\244\234");
+ converted = mm_charset_take_and_convert_to_utf8 (src, MM_MODEM_CHARSET_UCS2);
+ g_assert (converted == NULL);
+}
+
#if GLIB_CHECK_VERSION(2,25,12)
typedef GTestFixtureFunc TCFunc;
@@ -360,6 +395,10 @@ int main (int argc, char **argv)
g_test_suite_add (suite, TESTCASE (test_pack_gsm7_7_chars_offset, NULL));
+ g_test_suite_add (suite, TESTCASE (test_take_convert_ucs2_hex_utf8, NULL));
+ g_test_suite_add (suite, TESTCASE (test_take_convert_ucs2_bad_ascii, NULL));
+ g_test_suite_add (suite, TESTCASE (test_take_convert_ucs2_bad_ascii2, NULL));
+
result = g_test_run ();
return result;