Add GRegex for regular expression matching. (#50075)
[platform/upstream/glib.git] / tests / markup-escape-test.c
1 #undef G_DISABLE_ASSERT
2 #undef G_LOG_DOMAIN
3
4 #include <stdarg.h>
5 #include <string.h>
6 #include <glib.h>
7
8 static void test_format (const gchar *format,
9                          const gchar *expected, ...) G_GNUC_PRINTF (1, 3);
10
11 static gboolean error = FALSE;
12
13 static void
14 test (const gchar *original,
15       const gchar *expected)
16 {
17   gchar *result = g_markup_escape_text (original, -1);
18
19   if (strcmp (result, expected) != 0)
20     {
21       g_printerr ("g_markup_escape_text(): expected '%s', got '%s'\n",
22                   expected, result);
23       error = TRUE;
24     }
25
26   g_free (result);
27 }
28
29 static void
30 test_format (const gchar *format,
31              const gchar *expected,
32              ...)
33 {
34   gchar *result;
35   
36   va_list args;
37   
38   va_start (args, expected);
39   result = g_markup_vprintf_escaped (format, args);
40   va_end (args);
41
42   if (strcmp (result, expected) != 0)
43     {
44       g_printerr ("g_markup_printf_escaped(): expected '%s', got '%s'\n",
45                   expected, result);
46       error = TRUE;
47     }
48
49   g_free (result);
50 }
51
52 int main (int argc, char **argv)
53 {
54   /* Tests for g_markup_escape_text() */
55   test ("&", "&amp;");
56   test ("<", "&lt;");
57   test (">", "&gt;");
58   test ("'", "&apos;");
59   test ("\"", "&quot;");
60   
61   test ("", "");
62   test ("A", "A");
63   test ("A&", "A&amp;");
64   test ("&A", "&amp;A");
65   test ("A&A", "A&amp;A");
66   test ("&&A", "&amp;&amp;A");
67   test ("A&&", "A&amp;&amp;");
68   test ("A&&A", "A&amp;&amp;A");
69   test ("A&A&A", "A&amp;A&amp;A");
70   
71   /* Tests for g_markup_printf_escaped() */
72   test_format ("A", "A");
73   test_format ("A%s", "A&amp;", "&");
74   test_format ("%sA", "&amp;A", "&");
75   test_format ("A%sA", "A&amp;A", "&");
76   test_format ("%s%sA", "&amp;&amp;A", "&", "&");
77   test_format ("A%s%s", "A&amp;&amp;", "&", "&");
78   test_format ("A%s%sA", "A&amp;&amp;A", "&", "&");
79   test_format ("A%sA%sA", "A&amp;A&amp;A", "&", "&");
80   
81   test_format ("%s", "&lt;B&gt;&amp;",
82                "<B>&");
83   test_format ("%c%c", "&lt;&amp;",
84                '<', '&');
85   test_format (".%c.%c.", ".&lt;.&amp;.",
86                '<', '&');
87   test_format ("%s", "",
88                "");
89   test_format ("%-5s", "A    ",
90                "A");
91   test_format ("%2$s%1$s", "B.A.",
92                "A.", "B.");
93   
94   return error ? 1 : 0;
95 }