1b5975d6bSopenharmony_ciFrom 0831393dd08d5f9dcf2e0517dbb4ea546ff7156b Mon Sep 17 00:00:00 2001
2b5975d6bSopenharmony_ciFrom: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
3b5975d6bSopenharmony_ciDate: Wed, 7 Sep 2022 15:21:52 +0200
4b5975d6bSopenharmony_ciSubject: [PATCH] tests/regex: Make possible to test replacements with options
5b5975d6bSopenharmony_ci
6b5975d6bSopenharmony_ci---
7b5975d6bSopenharmony_ci glib/tests/regex.c | 21 ++++++++++++++++++---
8b5975d6bSopenharmony_ci 1 file changed, 18 insertions(+), 3 deletions(-)
9b5975d6bSopenharmony_ci
10b5975d6bSopenharmony_cidiff --git a/glib/tests/regex.c b/glib/tests/regex.c
11b5975d6bSopenharmony_ciindex 291c21b4c7..26844d63a7 100644
12b5975d6bSopenharmony_ci--- a/glib/tests/regex.c
13b5975d6bSopenharmony_ci+++ b/glib/tests/regex.c
14b5975d6bSopenharmony_ci@@ -1207,6 +1207,8 @@ typedef struct {
15b5975d6bSopenharmony_ci   gint         start_position;
16b5975d6bSopenharmony_ci   const gchar *replacement;
17b5975d6bSopenharmony_ci   const gchar *expected;
18b5975d6bSopenharmony_ci+  GRegexCompileFlags compile_flags;
19b5975d6bSopenharmony_ci+  GRegexMatchFlags match_flags;
20b5975d6bSopenharmony_ci } TestReplaceData;
21b5975d6bSopenharmony_ci 
22b5975d6bSopenharmony_ci static void
23b5975d6bSopenharmony_ci@@ -1215,17 +1217,25 @@ test_replace (gconstpointer d)
24b5975d6bSopenharmony_ci   const TestReplaceData *data = d;
25b5975d6bSopenharmony_ci   GRegex *regex;
26b5975d6bSopenharmony_ci   gchar *res;
27b5975d6bSopenharmony_ci+  GError *error = NULL;
28b5975d6bSopenharmony_ci 
29b5975d6bSopenharmony_ci-  regex = g_regex_new (data->pattern, G_REGEX_DEFAULT, G_REGEX_MATCH_DEFAULT, NULL);
30b5975d6bSopenharmony_ci-  res = g_regex_replace (regex, data->string, -1, data->start_position, data->replacement, 0, NULL);
31b5975d6bSopenharmony_ci+  regex = g_regex_new (data->pattern, data->compile_flags, G_REGEX_MATCH_DEFAULT, &error);
32b5975d6bSopenharmony_ci+  g_assert_no_error (error);
33b5975d6bSopenharmony_ci+
34b5975d6bSopenharmony_ci+  res = g_regex_replace (regex, data->string, -1, data->start_position,
35b5975d6bSopenharmony_ci+                         data->replacement, data->match_flags, &error);
36b5975d6bSopenharmony_ci 
37b5975d6bSopenharmony_ci   g_assert_cmpstr (res, ==, data->expected);
38b5975d6bSopenharmony_ci 
39b5975d6bSopenharmony_ci+  if (data->expected)
40b5975d6bSopenharmony_ci+    g_assert_no_error (error);
41b5975d6bSopenharmony_ci+
42b5975d6bSopenharmony_ci   g_free (res);
43b5975d6bSopenharmony_ci   g_regex_unref (regex);
44b5975d6bSopenharmony_ci+  g_clear_error (&error);
45b5975d6bSopenharmony_ci }
46b5975d6bSopenharmony_ci 
47b5975d6bSopenharmony_ci-#define TEST_REPLACE(_pattern, _string, _start_position, _replacement, _expected) { \
48b5975d6bSopenharmony_ci+#define TEST_REPLACE_OPTIONS(_pattern, _string, _start_position, _replacement, _expected, _compile_flags, _match_flags) { \
49b5975d6bSopenharmony_ci   TestReplaceData *data;                                                \
50b5975d6bSopenharmony_ci   gchar *path;                                                          \
51b5975d6bSopenharmony_ci   data = g_new0 (TestReplaceData, 1);                                   \
52b5975d6bSopenharmony_ci@@ -1234,11 +1244,16 @@ test_replace (gconstpointer d)
53b5975d6bSopenharmony_ci   data->start_position = _start_position;                               \
54b5975d6bSopenharmony_ci   data->replacement = _replacement;                                     \
55b5975d6bSopenharmony_ci   data->expected = _expected;                                           \
56b5975d6bSopenharmony_ci+  data->compile_flags = _compile_flags;                                 \
57b5975d6bSopenharmony_ci+  data->match_flags = _match_flags;                                     \
58b5975d6bSopenharmony_ci   path = g_strdup_printf ("/regex/replace/%d", ++total);                \
59b5975d6bSopenharmony_ci   g_test_add_data_func_full (path, data, test_replace, g_free);         \
60b5975d6bSopenharmony_ci   g_free (path);                                                        \
61b5975d6bSopenharmony_ci }
62b5975d6bSopenharmony_ci 
63b5975d6bSopenharmony_ci+#define TEST_REPLACE(_pattern, _string, _start_position, _replacement, _expected) \
64b5975d6bSopenharmony_ci+  TEST_REPLACE_OPTIONS (_pattern, _string, _start_position, _replacement, _expected, 0, 0)
65b5975d6bSopenharmony_ci+
66b5975d6bSopenharmony_ci static void
67b5975d6bSopenharmony_ci test_replace_lit (gconstpointer d)
68b5975d6bSopenharmony_ci {
69b5975d6bSopenharmony_ci-- 
70b5975d6bSopenharmony_ciGitLab
71b5975d6bSopenharmony_ci
72