sl@0: /* Portion Copyright © 2008-09 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.*/ sl@0: #undef G_DISABLE_ASSERT sl@0: #undef G_LOG_DOMAIN sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #ifdef __SYMBIAN32__ sl@0: #include "mrt2_glib2_test.h" sl@0: #endif /*__SYMBIAN32__*/ sl@0: sl@0: sl@0: static void test_format (const gchar *format, sl@0: const gchar *expected, ...) G_GNUC_PRINTF (1, 3); sl@0: sl@0: static gboolean error = FALSE; sl@0: sl@0: static void sl@0: test (const gchar *original, sl@0: const gchar *expected) sl@0: { sl@0: gchar *result = g_markup_escape_text (original, -1); sl@0: sl@0: if (strcmp (result, expected) != 0) sl@0: { sl@0: g_printerr ("g_markup_escape_text(): expected '%s', got '%s'\n", sl@0: expected, result); sl@0: error = TRUE; sl@0: } sl@0: sl@0: g_free (result); sl@0: } sl@0: sl@0: static void sl@0: test_unichar (gunichar c, sl@0: gboolean entity) sl@0: { sl@0: gint len; sl@0: gchar outbuf[7], expected[12]; sl@0: sl@0: len = g_unichar_to_utf8 (c, outbuf); sl@0: outbuf[len] = 0; sl@0: sl@0: if (entity) sl@0: g_snprintf (expected, 12, "&#x%x;", c); sl@0: else sl@0: strcpy (expected, outbuf); sl@0: sl@0: test (outbuf, expected); sl@0: } sl@0: sl@0: static void sl@0: test_format (const gchar *format, sl@0: const gchar *expected, sl@0: ...) sl@0: { sl@0: gchar *result; sl@0: sl@0: va_list args; sl@0: sl@0: va_start (args, expected); sl@0: result = g_markup_vprintf_escaped (format, args); sl@0: va_end (args); sl@0: sl@0: if (strcmp (result, expected) != 0) sl@0: { sl@0: g_printerr ("g_markup_printf_escaped(): expected '%s', got '%s'\n", sl@0: expected, result); sl@0: error = TRUE; sl@0: } sl@0: sl@0: g_free (result); sl@0: } sl@0: sl@0: int main (int argc, char **argv) sl@0: { sl@0: #ifdef __SYMBIAN32__ sl@0: g_log_set_handler (NULL, G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING | G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG, &mrtLogHandler, NULL); sl@0: g_set_print_handler(mrtPrintHandler); sl@0: #endif /*__SYMBIAN32__*/ sl@0: sl@0: sl@0: /* Tests for g_markup_escape_text() */ sl@0: test ("&", "&"); sl@0: test ("<", "<"); sl@0: test (">", ">"); sl@0: test ("'", "'"); sl@0: test ("\"", """); sl@0: sl@0: test ("", ""); sl@0: test ("A", "A"); sl@0: test ("A&", "A&"); sl@0: test ("&A", "&A"); sl@0: test ("A&A", "A&A"); sl@0: test ("&&A", "&&A"); sl@0: test ("A&&", "A&&"); sl@0: test ("A&&A", "A&&A"); sl@0: test ("A&A&A", "A&A&A"); sl@0: test ("AA", "A&#23;A"); sl@0: test ("A A", "A&#xa;A"); sl@0: test_unichar (0x1, TRUE); sl@0: test_unichar (0x8, TRUE); sl@0: test_unichar (0x9, FALSE); sl@0: test_unichar (0xa, FALSE); sl@0: test_unichar (0xb, TRUE); sl@0: test_unichar (0xc, TRUE); sl@0: test_unichar (0xd, FALSE); sl@0: test_unichar (0xe, TRUE); sl@0: test_unichar (0x1f, TRUE); sl@0: test_unichar (0x20, FALSE); sl@0: test_unichar (0x7e, FALSE); sl@0: test_unichar (0x7f, TRUE); sl@0: test_unichar (0x84, TRUE); sl@0: test_unichar (0x85, FALSE); sl@0: test_unichar (0x86, TRUE); sl@0: test_unichar (0x9f, TRUE); sl@0: test_unichar (0xa0, FALSE); sl@0: sl@0: /* Tests for g_markup_printf_escaped() */ sl@0: test_format ("A", "A"); sl@0: test_format ("A%s", "A&", "&"); sl@0: test_format ("%sA", "&A", "&"); sl@0: test_format ("A%sA", "A&A", "&"); sl@0: test_format ("%s%sA", "&&A", "&", "&"); sl@0: test_format ("A%s%s", "A&&", "&", "&"); sl@0: test_format ("A%s%sA", "A&&A", "&", "&"); sl@0: test_format ("A%sA%sA", "A&A&A", "&", "&"); sl@0: sl@0: test_format ("%s", "<B>&", sl@0: "&"); sl@0: test_format ("%c%c", "<&", sl@0: '<', '&'); sl@0: test_format (".%c.%c.", ".<.&.", sl@0: '<', '&'); sl@0: test_format ("%s", "", sl@0: ""); sl@0: test_format ("%-5s", "A ", sl@0: "A"); sl@0: test_format ("%2$s%1$s", "B.A.", sl@0: "A.", "B."); sl@0: sl@0: sl@0: #ifdef __SYMBIAN32__ sl@0: testResultXml("markup-escape-test"); sl@0: #endif /* EMULATOR */ sl@0: sl@0: return error ? 1 : 0; sl@0: }