summaryrefslogtreecommitdiff
path: root/tests/core
diff options
context:
space:
mode:
Diffstat (limited to 'tests/core')
-rw-r--r--tests/core/posix.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/core/posix.c b/tests/core/posix.c
index e8b81f842..40eab0a68 100644
--- a/tests/core/posix.c
+++ b/tests/core/posix.c
@@ -177,6 +177,31 @@ void test_core_posix__p_regcomp_ignores_global_locale_ctype(void)
cl_must_pass(error);
}
+void test_core_posix__p_regcomp_ignores_global_locale_collate(void)
+{
+ regex_t preg;
+ int error = 0;
+
+ const char* oldlocale = setlocale(LC_COLLATE, NULL);
+
+ if (!setlocale(LC_COLLATE, "UTF-8") &&
+ !setlocale(LC_COLLATE, "c.utf8") &&
+ !setlocale(LC_COLLATE, "en_US.UTF-8"))
+ cl_skip();
+
+ if (MB_CUR_MAX == 1) {
+ setlocale(LC_COLLATE, oldlocale);
+ cl_fail("Expected locale to be switched to multibyte");
+ }
+
+ error = p_regcomp(&preg, "[\xc0-\xff][\x80-\xbf]", REG_EXTENDED);
+ regfree(&preg);
+
+ setlocale(LC_COLLATE, oldlocale);
+
+ cl_must_pass(error);
+}
+
void test_core_posix__p_regcomp_compile_userdiff_regexps(void)
{
size_t idx;