1 #undef G_DISABLE_ASSERT
8 static void test_format (const gchar
*format
,
9 const gchar
*expected
, ...) G_GNUC_PRINTF (1, 3);
11 static gboolean error
= FALSE
;
14 test (const gchar
*original
,
15 const gchar
*expected
)
17 gchar
*result
= g_markup_escape_text (original
, -1);
19 if (strcmp (result
, expected
) != 0)
21 g_printerr ("g_markup_escape_text(): expected '%s', got '%s'\n",
30 test_unichar (gunichar c
,
34 gchar outbuf
[7], expected
[12];
36 len
= g_unichar_to_utf8 (c
, outbuf
);
40 g_snprintf (expected
, 12, "&#x%x;", c
);
42 strcpy (expected
, outbuf
);
44 test (outbuf
, expected
);
48 test_format (const gchar
*format
,
49 const gchar
*expected
,
56 va_start (args
, expected
);
57 result
= g_markup_vprintf_escaped (format
, args
);
60 if (strcmp (result
, expected
) != 0)
62 g_printerr ("g_markup_printf_escaped(): expected '%s', got '%s'\n",
70 int main (int argc
, char **argv
)
72 /* Tests for g_markup_escape_text() */
77 test ("\"", """);
81 test ("A&", "A&");
82 test ("&A", "&A");
83 test ("A&A", "A&A");
84 test ("&&A", "&&A");
85 test ("A&&", "A&&");
86 test ("A&&A", "A&&A");
87 test ("A&A&A", "A&A&A");
88 test ("AA", "AA");
89 test ("A
A", "A
A");
90 test_unichar (0x1, TRUE
);
91 test_unichar (0x8, TRUE
);
92 test_unichar (0x9, FALSE
);
93 test_unichar (0xa, FALSE
);
94 test_unichar (0xb, TRUE
);
95 test_unichar (0xc, TRUE
);
96 test_unichar (0xd, FALSE
);
97 test_unichar (0xe, TRUE
);
98 test_unichar (0x1f, TRUE
);
99 test_unichar (0x20, FALSE
);
100 test_unichar (0x7e, FALSE
);
101 test_unichar (0x7f, TRUE
);
102 test_unichar (0x84, TRUE
);
103 test_unichar (0x85, FALSE
);
104 test_unichar (0x86, TRUE
);
105 test_unichar (0x9f, TRUE
);
106 test_unichar (0xa0, FALSE
);
108 /* Tests for g_markup_printf_escaped() */
109 test_format ("A", "A");
110 test_format ("A%s", "A&", "&");
111 test_format ("%sA", "&A", "&");
112 test_format ("A%sA", "A&A", "&");
113 test_format ("%s%sA", "&&A", "&", "&");
114 test_format ("A%s%s", "A&&", "&", "&");
115 test_format ("A%s%sA", "A&&A", "&", "&");
116 test_format ("A%sA%sA", "A&A&A", "&", "&");
118 test_format ("%s", "<B>&",
120 test_format ("%c%c", "<&",
122 test_format (".%c.%c.", ".<.&.",
124 test_format ("%s", "",
126 test_format ("%-5s", "A ",
128 test_format ("%2$s%1$s", "B.A.",
131 return error
? 1 : 0;