Projects
Factory:RISC-V:Gnome
glib2
_service:tar_scm:backport-regex-Perform-more-te...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:backport-regex-Perform-more-tests-both-with-and-without-optimizations.patch of Package glib2
From 653f8eb0203485c7ffb0eeae81e6e30437d18529 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net> Date: Fri, 9 Sep 2022 18:43:47 +0200 Subject: [PATCH] tests/regex: Perform more tests both with and without optimizations --- glib/tests/regex.c | 101 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 93 insertions(+), 8 deletions(-) diff --git a/glib/tests/regex.c b/glib/tests/regex.c index 2052ba0204..9803d49659 100644 --- a/glib/tests/regex.c +++ b/glib/tests/regex.c @@ -173,7 +173,24 @@ test_match_simple (gconstpointer d) data->compile_opts = _compile_opts; \ data->match_opts = _match_opts; \ data->expected = _expected; \ - path = g_strdup_printf ("/regex/match-%s/%d", _name, ++total); \ + total++; \ + if (data->compile_opts & G_REGEX_OPTIMIZE) \ + path = g_strdup_printf ("/regex/match-%s-optimized/%d", _name, total); \ + else \ + path = g_strdup_printf ("/regex/match-%s/%d", _name, total); \ + g_test_add_data_func_full (path, data, test_match_simple, g_free); \ + g_free (path); \ + data = g_memdup2 (data, sizeof (TestMatchData)); \ + if (data->compile_opts & G_REGEX_OPTIMIZE) \ + { \ + data->compile_opts &= ~G_REGEX_OPTIMIZE; \ + path = g_strdup_printf ("/regex/match-%s/%d", _name, total); \ + } \ + else \ + { \ + data->compile_opts |= G_REGEX_OPTIMIZE; \ + path = g_strdup_printf ("/regex/match-%s-optimized/%d", _name, total); \ + } \ g_test_add_data_func_full (path, data, test_match_simple, g_free); \ g_free (path); \ } @@ -361,7 +378,24 @@ test_match (gconstpointer d) data->start_position = _start_position; \ data->match_opts2 = _match_opts2; \ data->expected = _expected; \ - path = g_strdup_printf ("/regex/match/%d", ++total); \ + total++; \ + if (data->compile_opts & G_REGEX_OPTIMIZE) \ + path = g_strdup_printf ("/regex/match-optimized/%d", total); \ + else \ + path = g_strdup_printf ("/regex/match/%d", total); \ + g_test_add_data_func_full (path, data, test_match, g_free); \ + g_free (path); \ + data = g_memdup2 (data, sizeof (TestMatchData)); \ + if (data->compile_opts & G_REGEX_OPTIMIZE) \ + { \ + data->compile_opts &= ~G_REGEX_OPTIMIZE; \ + path = g_strdup_printf ("/regex/match/%d", total); \ + } \ + else \ + { \ + data->compile_opts |= G_REGEX_OPTIMIZE; \ + path = g_strdup_printf ("/regex/match-optimized/%d", total); \ + } \ g_test_add_data_func_full (path, data, test_match, g_free); \ g_free (path); \ } @@ -580,6 +614,7 @@ typedef struct { const gchar *pattern; const gchar *string; gint start_position; + GRegexCompileFlags compile_flags; GRegexMatchFlags match_opts; gint expected_count; } TestMatchCountData; @@ -592,7 +627,8 @@ test_match_count (gconstpointer d) GMatchInfo *match_info; gint count; - regex = g_regex_new (data->pattern, G_REGEX_DEFAULT, G_REGEX_MATCH_DEFAULT, NULL); + regex = g_regex_new (data->pattern, data->compile_flags, + G_REGEX_MATCH_DEFAULT, NULL); g_assert (regex != NULL); @@ -617,7 +653,14 @@ test_match_count (gconstpointer d) data->start_position = _start_position; \ data->match_opts = _match_opts; \ data->expected_count = _expected_count; \ - path = g_strdup_printf ("/regex/match/count/%d", ++total); \ + data->compile_flags = G_REGEX_DEFAULT; \ + total++; \ + path = g_strdup_printf ("/regex/match/count/%d", total); \ + g_test_add_data_func_full (path, data, test_match_count, g_free); \ + g_free (path); \ + data = g_memdup2 (data, sizeof (TestMatchCountData)); \ + data->compile_flags |= G_REGEX_OPTIMIZE; \ + path = g_strdup_printf ("/regex/match/count-optimized/%d", total); \ g_test_add_data_func_full (path, data, test_match_count, g_free); \ g_free (path); \ } @@ -656,7 +699,24 @@ test_partial (gconstpointer d) data->compile_opts = _compile_opts; \ data->match_opts = _match_opts; \ data->expected = _expected; \ - path = g_strdup_printf ("/regex/match/partial/%d", ++total); \ + total++; \ + if (data->compile_opts & G_REGEX_OPTIMIZE) \ + path = g_strdup_printf ("/regex/match/partial-optimized/%d", total); \ + else \ + path = g_strdup_printf ("/regex/match/partial%d", total); \ + g_test_add_data_func_full (path, data, test_partial, g_free); \ + g_free (path); \ + data = g_memdup2 (data, sizeof (TestMatchData)); \ + if (data->compile_opts & G_REGEX_OPTIMIZE) \ + { \ + data->compile_opts &= ~G_REGEX_OPTIMIZE; \ + path = g_strdup_printf ("/regex/match/partial%d", total); \ + } \ + else \ + { \ + data->compile_opts |= G_REGEX_OPTIMIZE; \ + path = g_strdup_printf ("/regex/match/partial-optimized/%d", total); \ + } \ g_test_add_data_func_full (path, data, test_partial, g_free); \ g_free (path); \ } @@ -666,6 +726,7 @@ test_partial (gconstpointer d) typedef struct { const gchar *pattern; const gchar *string; + GRegexCompileFlags compile_flags; gint start_position; gint sub_n; const gchar *expected_sub; @@ -682,7 +743,7 @@ test_sub_pattern (gconstpointer d) gchar *sub_expr; gint start = UNTOUCHED, end = UNTOUCHED; - regex = g_regex_new (data->pattern, G_REGEX_DEFAULT, G_REGEX_MATCH_DEFAULT, NULL); + regex = g_regex_new (data->pattern, data->compile_flags, G_REGEX_MATCH_DEFAULT, NULL); g_assert (regex != NULL); @@ -712,7 +773,14 @@ test_sub_pattern (gconstpointer d) data->expected_sub = _expected_sub; \ data->expected_start = _expected_start; \ data->expected_end = _expected_end; \ - path = g_strdup_printf ("/regex/match/subpattern/%d", ++total); \ + data->compile_flags = G_REGEX_DEFAULT; \ + total++; \ + path = g_strdup_printf ("/regex/match/subpattern/%d", total); \ + g_test_add_data_func_full (path, data, test_sub_pattern, g_free); \ + g_free (path); \ + data = g_memdup2 (data, sizeof (TestSubData)); \ + data->compile_flags = G_REGEX_OPTIMIZE; \ + path = g_strdup_printf ("/regex/match/subpattern-optimized/%d", total); \ g_test_add_data_func_full (path, data, test_sub_pattern, g_free); \ g_free (path); \ } @@ -1246,7 +1314,24 @@ test_replace (gconstpointer d) data->expected = _expected; \ data->compile_flags = _compile_flags; \ data->match_flags = _match_flags; \ - path = g_strdup_printf ("/regex/replace/%d", ++total); \ + total++; \ + if (data->compile_flags & G_REGEX_OPTIMIZE) \ + path = g_strdup_printf ("/regex/replace-optimized/%d", total); \ + else \ + path = g_strdup_printf ("/regex/replace/%d", total); \ + g_test_add_data_func_full (path, data, test_replace, g_free); \ + g_free (path); \ + data = g_memdup2 (data, sizeof (TestReplaceData)); \ + if (data->compile_flags & G_REGEX_OPTIMIZE) \ + { \ + data->compile_flags &= ~G_REGEX_OPTIMIZE; \ + path = g_strdup_printf ("/regex/replace/%d", total); \ + } \ + else \ + { \ + data->compile_flags |= G_REGEX_OPTIMIZE; \ + path = g_strdup_printf ("/regex/replace-optimized/%d", total); \ + } \ g_test_add_data_func_full (path, data, test_replace, g_free); \ g_free (path); \ } -- GitLab
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2