[glib/wip/pcre-update: 3/20] regex: Simplify regex compile tests



commit 00eb7f1399e05d57071b10c98936d70e086bdf01
Author: Christian Persch <chpe gnome org>
Date:   Thu Jun 7 18:22:44 2012 +0200

    regex: Simplify regex compile tests
    
    Use a macro instead of repeating the same code over and over again.

 glib/tests/regex.c |  106 +++++++++++++++-------------------------------------
 1 files changed, 30 insertions(+), 76 deletions(-)
---
diff --git a/glib/tests/regex.c b/glib/tests/regex.c
index bc7e528..36bfb8f 100644
--- a/glib/tests/regex.c
+++ b/glib/tests/regex.c
@@ -1386,84 +1386,38 @@ test_basic (void)
 static void
 test_compile (void)
 {
-  GRegex *regex;
-  GError *error;
-
-  error = NULL;
-  regex = g_regex_new ("a\\", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_STRAY_BACKSLASH);
-  g_clear_error (&error);
-  regex = g_regex_new ("a\\c", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_MISSING_CONTROL_CHAR);
-  g_clear_error (&error);
-  regex = g_regex_new ("a\\l", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_UNRECOGNIZED_ESCAPE);
-  g_clear_error (&error);
-  regex = g_regex_new ("a{4,2}", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_QUANTIFIERS_OUT_OF_ORDER);
-  g_clear_error (&error);
-  regex = g_regex_new ("a{999999,}", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_QUANTIFIER_TOO_BIG);
-  g_clear_error (&error);
-  regex = g_regex_new ("[a-z", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_UNTERMINATED_CHARACTER_CLASS);
-  g_clear_error (&error);
+#define TEST_COMPILE_ERROR(pat,code) \
+  {\
+    GRegex *regex; \
+    GError *error = NULL; \
+    regex = g_regex_new (pat, 0, 0, &error); \
+    g_assert_error (error, G_REGEX_ERROR, code); \
+    g_assert (regex == NULL); \
+    g_error_free (error); \
+  }
+
+  TEST_COMPILE_ERROR ("a\\", G_REGEX_ERROR_STRAY_BACKSLASH);
+  TEST_COMPILE_ERROR ("a\\c", G_REGEX_ERROR_MISSING_CONTROL_CHAR);
+  TEST_COMPILE_ERROR ("a\\l", G_REGEX_ERROR_UNRECOGNIZED_ESCAPE);
+  TEST_COMPILE_ERROR ("a{4,2}", G_REGEX_ERROR_QUANTIFIERS_OUT_OF_ORDER);
+  TEST_COMPILE_ERROR ("a{999999,}", G_REGEX_ERROR_QUANTIFIER_TOO_BIG);
+  TEST_COMPILE_ERROR ("[a-z", G_REGEX_ERROR_UNTERMINATED_CHARACTER_CLASS);
 #if 0
-  regex = g_regex_new ("[\\b]", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_INVALID_ESCAPE_IN_CHARACTER_CLASS);
-  g_clear_error (&error);
+  TEST_COMPILE_ERROR ("[\\b]", G_REGEX_ERROR_INVALID_ESCAPE_IN_CHARACTER_CLASS);
 #endif
-  regex = g_regex_new ("[z-a]", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_RANGE_OUT_OF_ORDER);
-  g_clear_error (&error);
-  regex = g_regex_new ("{2,4}", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_NOTHING_TO_REPEAT);
-  g_clear_error (&error);
-  regex = g_regex_new ("a(?u)", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_UNRECOGNIZED_CHARACTER);
-  g_clear_error (&error);
-  regex = g_regex_new ("a(?<$foo)bar", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_UNRECOGNIZED_CHARACTER);
-  g_clear_error (&error);
-  regex = g_regex_new ("a[:alpha:]b", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_POSIX_NAMED_CLASS_OUTSIDE_CLASS);
-  g_clear_error (&error);
-  regex = g_regex_new ("a(b", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_UNMATCHED_PARENTHESIS);
-  g_clear_error (&error);
-  regex = g_regex_new ("a)b", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_UNMATCHED_PARENTHESIS);
-  g_clear_error (&error);
-  regex = g_regex_new ("a(?R", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_UNMATCHED_PARENTHESIS);
-  g_clear_error (&error);
-  regex = g_regex_new ("a(?-54", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_UNMATCHED_PARENTHESIS);
-  g_clear_error (&error);
-  regex = g_regex_new ("a(?#abc", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_UNTERMINATED_COMMENT);
-  g_clear_error (&error);
-  regex = g_regex_new ("a[[:fubar:]]b", 0, 0, &error);
-  g_assert (regex == NULL);
-  g_assert_error (error, G_REGEX_ERROR, G_REGEX_ERROR_UNKNOWN_POSIX_CLASS_NAME);
-  g_clear_error (&error);
+  TEST_COMPILE_ERROR ("[z-a]", G_REGEX_ERROR_RANGE_OUT_OF_ORDER);
+  TEST_COMPILE_ERROR ("{2,4}", G_REGEX_ERROR_NOTHING_TO_REPEAT);
+  TEST_COMPILE_ERROR ("a(?u)", G_REGEX_ERROR_UNRECOGNIZED_CHARACTER);
+  TEST_COMPILE_ERROR ("a(?<$foo)bar", G_REGEX_ERROR_UNRECOGNIZED_CHARACTER);
+  TEST_COMPILE_ERROR ("a[:alpha:]b", G_REGEX_ERROR_POSIX_NAMED_CLASS_OUTSIDE_CLASS);
+  TEST_COMPILE_ERROR ("a(b", G_REGEX_ERROR_UNMATCHED_PARENTHESIS);
+  TEST_COMPILE_ERROR ("a)b", G_REGEX_ERROR_UNMATCHED_PARENTHESIS);
+  TEST_COMPILE_ERROR ("a(?R", G_REGEX_ERROR_UNMATCHED_PARENTHESIS);
+  TEST_COMPILE_ERROR ("a(?-54", G_REGEX_ERROR_UNMATCHED_PARENTHESIS);
+  TEST_COMPILE_ERROR ("a(?#abc", G_REGEX_ERROR_UNTERMINATED_COMMENT);
+  TEST_COMPILE_ERROR ("a[[:fubar:]]b", G_REGEX_ERROR_UNKNOWN_POSIX_CLASS_NAME);
+
+#undef TEST_COMPILE_ERROR
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]