diff --git a/libcxx/test/std/re/re.alg/re.alg.match/basic.locale.pass.cpp b/libcxx/test/std/re/re.alg/re.alg.match/basic.locale.pass.cpp --- a/libcxx/test/std/re/re.alg/re.alg.match/basic.locale.pass.cpp +++ b/libcxx/test/std/re/re.alg/re.alg.match/basic.locale.pass.cpp @@ -8,7 +8,6 @@ // // NetBSD does not support LC_COLLATE at the moment // XFAIL: netbsd -// XFAIL: LIBCXX-AIX-FIXME // REQUIRES: locale.cs_CZ.ISO8859-2 @@ -37,8 +36,15 @@ { std::cmatch m; const char s[] = "m"; +// AIX supports character equivalence classes. What the contents of the class are depends +// on the locale and the standards do not specify any locale other than C/POSIX. +#if defined(_AIX) + assert(std::regex_match(s, m, std::regex("[a[=m=]z]", + std::regex_constants::basic))); +#else assert(std::regex_match(s, m, std::regex("[a[=M=]z]", std::regex_constants::basic))); +#endif assert(m.size() == 1); assert(!m.prefix().matched); assert(m.prefix().first == s); @@ -80,8 +86,13 @@ { std::wcmatch m; const wchar_t s[] = L"m"; +#if defined(_AIX) + assert(std::regex_match(s, m, std::wregex(L"[a[=m=]z]", + std::regex_constants::basic))); +#else assert(std::regex_match(s, m, std::wregex(L"[a[=M=]z]", std::regex_constants::basic))); +#endif assert(m.size() == 1); assert(!m.prefix().matched); assert(m.prefix().first == s); @@ -93,6 +104,8 @@ assert(m.position(0) == 0); assert(m.str(0) == s); } +//TODO: Need to be investigated for AIX OS +#if !defined(_AIX) { std::wcmatch m; const wchar_t s[] = L"Ch"; @@ -109,6 +122,7 @@ assert(m.position(0) == 0); assert(m.str(0) == s); } +#endif std::locale::global(std::locale("C")); { std::wcmatch m; diff --git a/libcxx/test/std/re/re.alg/re.alg.match/ecma.locale.pass.cpp b/libcxx/test/std/re/re.alg/re.alg.match/ecma.locale.pass.cpp --- a/libcxx/test/std/re/re.alg/re.alg.match/ecma.locale.pass.cpp +++ b/libcxx/test/std/re/re.alg/re.alg.match/ecma.locale.pass.cpp @@ -8,7 +8,6 @@ // // NetBSD does not support LC_COLLATE at the moment // XFAIL: netbsd -// XFAIL: LIBCXX-AIX-FIXME // REQUIRES: locale.cs_CZ.ISO8859-2 @@ -37,7 +36,13 @@ { std::cmatch m; const char s[] = "m"; +// AIX supports character equivalence classes. What the contents of the class are depends +// on the locale and the standards do not specify any locale other than C/POSIX. +#if defined(_AIX) + assert(std::regex_match(s, m, std::regex("[a[=m=]z]"))); +#else assert(std::regex_match(s, m, std::regex("[a[=M=]z]"))); +#endif assert(m.size() == 1); assert(!m.prefix().matched); assert(m.prefix().first == s); @@ -78,7 +83,11 @@ { std::wcmatch m; const wchar_t s[] = L"m"; +#if defined(_AIX) + assert(std::regex_match(s, m, std::wregex(L"[a[=m=]z]"))); +#else assert(std::regex_match(s, m, std::wregex(L"[a[=M=]z]"))); +#endif assert(m.size() == 1); assert(!m.prefix().matched); assert(m.prefix().first == s); @@ -90,6 +99,8 @@ assert(m.position(0) == 0); assert(m.str(0) == s); } +//TODO: Need to be investigated for AIX OS +#if !defined(_AIX) { std::wcmatch m; const wchar_t s[] = L"Ch"; @@ -106,6 +117,7 @@ assert(m.position(0) == 0); assert(m.str(0) == s); } +#endif std::locale::global(std::locale("C")); { std::wcmatch m; diff --git a/libcxx/test/std/re/re.alg/re.alg.match/extended.locale.pass.cpp b/libcxx/test/std/re/re.alg/re.alg.match/extended.locale.pass.cpp --- a/libcxx/test/std/re/re.alg/re.alg.match/extended.locale.pass.cpp +++ b/libcxx/test/std/re/re.alg/re.alg.match/extended.locale.pass.cpp @@ -8,7 +8,6 @@ // // NetBSD does not support LC_COLLATE at the moment // XFAIL: netbsd -// XFAIL: LIBCXX-AIX-FIXME // REQUIRES: locale.cs_CZ.ISO8859-2 @@ -37,8 +36,15 @@ { std::cmatch m; const char s[] = "m"; +// AIX supports character equivalence classes. What the contents of the class are depends +// on the locale and the standards do not specify any locale other than C/POSIX. +#if defined(_AIX) + assert(std::regex_match(s, m, std::regex("[a[=m=]z]", + std::regex_constants::extended))); +#else assert(std::regex_match(s, m, std::regex("[a[=M=]z]", std::regex_constants::extended))); +#endif assert(m.size() == 1); assert(!m.prefix().matched); assert(m.prefix().first == s); @@ -80,8 +86,13 @@ { std::wcmatch m; const wchar_t s[] = L"m"; +#if defined(_AIX) + assert(std::regex_match(s, m, std::wregex(L"[a[=m=]z]", + std::regex_constants::extended))); +#else assert(std::regex_match(s, m, std::wregex(L"[a[=M=]z]", std::regex_constants::extended))); +#endif assert(m.size() == 1); assert(!m.prefix().matched); assert(m.prefix().first == s); @@ -93,6 +104,8 @@ assert(m.position(0) == 0); assert(m.str(0) == s); } +//TODO: Need to be investigated for AIX OS +#if !defined(_AIX) { std::wcmatch m; const wchar_t s[] = L"Ch"; @@ -109,6 +122,7 @@ assert(m.position(0) == 0); assert(m.str(0) == s); } +#endif std::locale::global(std::locale("C")); { std::wcmatch m; diff --git a/libcxx/test/std/re/re.alg/re.alg.search/awk.locale.pass.cpp b/libcxx/test/std/re/re.alg/re.alg.search/awk.locale.pass.cpp --- a/libcxx/test/std/re/re.alg/re.alg.search/awk.locale.pass.cpp +++ b/libcxx/test/std/re/re.alg/re.alg.search/awk.locale.pass.cpp @@ -8,7 +8,6 @@ // // NetBSD does not support LC_COLLATE at the moment // XFAIL: netbsd -// XFAIL: LIBCXX-AIX-FIXME // REQUIRES: locale.cs_CZ.ISO8859-2 @@ -37,8 +36,15 @@ { std::cmatch m; const char s[] = "m"; +// AIX supports character equivalence classes. What the contents of the class are depends +// on the locale and the standards do not specify any locale other than C/POSIX. +#if defined(_AIX) + assert(std::regex_search(s, m, std::regex("[a[=m=]z]", + std::regex_constants::awk))); +#else assert(std::regex_search(s, m, std::regex("[a[=M=]z]", std::regex_constants::awk))); +#endif assert(m.size() == 1); assert(!m.prefix().matched); assert(m.prefix().first == s); @@ -80,8 +86,13 @@ { std::wcmatch m; const wchar_t s[] = L"m"; +#if defined(_AIX) + assert(std::regex_search(s, m, std::wregex(L"[a[=m=]z]", + std::regex_constants::awk))); +#else assert(std::regex_search(s, m, std::wregex(L"[a[=M=]z]", std::regex_constants::awk))); +#endif assert(m.size() == 1); assert(!m.prefix().matched); assert(m.prefix().first == s); @@ -93,6 +104,8 @@ assert(m.position(0) == 0); assert(m.str(0) == s); } +//TODO: Need to be investigated for AIX OS +#if !defined(_AIX) { std::wcmatch m; const wchar_t s[] = L"Ch"; @@ -109,6 +122,7 @@ assert(m.position(0) == 0); assert(m.str(0) == s); } +#endif std::locale::global(std::locale("C")); { std::wcmatch m; diff --git a/libcxx/test/std/re/re.alg/re.alg.search/basic.locale.pass.cpp b/libcxx/test/std/re/re.alg/re.alg.search/basic.locale.pass.cpp --- a/libcxx/test/std/re/re.alg/re.alg.search/basic.locale.pass.cpp +++ b/libcxx/test/std/re/re.alg/re.alg.search/basic.locale.pass.cpp @@ -8,7 +8,6 @@ // // NetBSD does not support LC_COLLATE at the moment // XFAIL: netbsd -// XFAIL: LIBCXX-AIX-FIXME // REQUIRES: locale.cs_CZ.ISO8859-2 @@ -37,8 +36,15 @@ { std::cmatch m; const char s[] = "m"; +// AIX supports character equivalence classes. What the contents of the class are depends +// on the locale and the standards do not specify any locale other than C/POSIX. +#if defined(_AIX) + assert(std::regex_search(s, m, std::regex("[a[=m=]z]", + std::regex_constants::basic))); +#else assert(std::regex_search(s, m, std::regex("[a[=M=]z]", std::regex_constants::basic))); +#endif assert(m.size() == 1); assert(!m.prefix().matched); assert(m.prefix().first == s); @@ -80,8 +86,13 @@ { std::wcmatch m; const wchar_t s[] = L"m"; +#if defined(_AIX) + assert(std::regex_search(s, m, std::wregex(L"[a[=m=]z]", + std::regex_constants::basic))); +#else assert(std::regex_search(s, m, std::wregex(L"[a[=M=]z]", std::regex_constants::basic))); +#endif assert(m.size() == 1); assert(!m.prefix().matched); assert(m.prefix().first == s); @@ -93,6 +104,8 @@ assert(m.position(0) == 0); assert(m.str(0) == s); } +//TODO: Need to be investigated for AIX OS +#if !defined(_AIX) { std::wcmatch m; const wchar_t s[] = L"Ch"; @@ -109,6 +122,7 @@ assert(m.position(0) == 0); assert(m.str(0) == s); } +#endif std::locale::global(std::locale("C")); { std::wcmatch m; diff --git a/libcxx/test/std/re/re.alg/re.alg.search/ecma.locale.pass.cpp b/libcxx/test/std/re/re.alg/re.alg.search/ecma.locale.pass.cpp --- a/libcxx/test/std/re/re.alg/re.alg.search/ecma.locale.pass.cpp +++ b/libcxx/test/std/re/re.alg/re.alg.search/ecma.locale.pass.cpp @@ -8,7 +8,6 @@ // // NetBSD does not support LC_COLLATE at the moment // XFAIL: netbsd -// XFAIL: LIBCXX-AIX-FIXME // REQUIRES: locale.cs_CZ.ISO8859-2 @@ -37,7 +36,13 @@ { std::cmatch m; const char s[] = "m"; +// AIX supports character equivalence classes. What the contents of the class are depends +// on the locale and the standards do not specify any locale other than C/POSIX. +#if defined(_AIX) + assert(std::regex_search(s, m, std::regex("[a[=m=]z]"))); +#else assert(std::regex_search(s, m, std::regex("[a[=M=]z]"))); +#endif assert(m.size() == 1); assert(!m.prefix().matched); assert(m.prefix().first == s); @@ -78,7 +83,11 @@ { std::wcmatch m; const wchar_t s[] = L"m"; +#if defined(_AIX) + assert(std::regex_search(s, m, std::wregex(L"[a[=m=]z]"))); +#else assert(std::regex_search(s, m, std::wregex(L"[a[=M=]z]"))); +#endif assert(m.size() == 1); assert(!m.prefix().matched); assert(m.prefix().first == s); @@ -90,6 +99,8 @@ assert(m.position(0) == 0); assert(m.str(0) == s); } +//TODO: Need to be investigated for AIX OS +#if !defined(_AIX) { std::wcmatch m; const wchar_t s[] = L"Ch"; @@ -106,6 +117,7 @@ assert(m.position(0) == 0); assert(m.str(0) == s); } +#endif std::locale::global(std::locale("C")); { std::wcmatch m; diff --git a/libcxx/test/std/re/re.alg/re.alg.search/extended.locale.pass.cpp b/libcxx/test/std/re/re.alg/re.alg.search/extended.locale.pass.cpp --- a/libcxx/test/std/re/re.alg/re.alg.search/extended.locale.pass.cpp +++ b/libcxx/test/std/re/re.alg/re.alg.search/extended.locale.pass.cpp @@ -8,7 +8,6 @@ // // NetBSD does not support LC_COLLATE at the moment // XFAIL: netbsd -// XFAIL: LIBCXX-AIX-FIXME // REQUIRES: locale.cs_CZ.ISO8859-2 @@ -37,8 +36,15 @@ { std::cmatch m; const char s[] = "m"; +// AIX supports character equivalence classes. What the contents of the class are depends +// on the locale and the standards do not specify any locale other than C/POSIX. +#if defined(_AIX) + assert(std::regex_search(s, m, std::regex("[a[=m=]z]", + std::regex_constants::extended))); +#else assert(std::regex_search(s, m, std::regex("[a[=M=]z]", std::regex_constants::extended))); +#endif assert(m.size() == 1); assert(!m.prefix().matched); assert(m.prefix().first == s); @@ -80,8 +86,13 @@ { std::wcmatch m; const wchar_t s[] = L"m"; +#if defined(_AIX) + assert(std::regex_search(s, m, std::wregex(L"[a[=m=]z]", + std::regex_constants::extended))); +#else assert(std::regex_search(s, m, std::wregex(L"[a[=M=]z]", std::regex_constants::extended))); +#endif assert(m.size() == 1); assert(!m.prefix().matched); assert(m.prefix().first == s); @@ -93,6 +104,8 @@ assert(m.position(0) == 0); assert(m.str(0) == s); } +//TODO: Need to be investigated for AIX OS +#if !defined(_AIX) { std::wcmatch m; const wchar_t s[] = L"Ch"; @@ -109,6 +122,7 @@ assert(m.position(0) == 0); assert(m.str(0) == s); } +#endif std::locale::global(std::locale("C")); { std::wcmatch m; diff --git a/libcxx/test/std/re/re.traits/lookup_collatename.pass.cpp b/libcxx/test/std/re/re.traits/lookup_collatename.pass.cpp --- a/libcxx/test/std/re/re.traits/lookup_collatename.pass.cpp +++ b/libcxx/test/std/re/re.traits/lookup_collatename.pass.cpp @@ -8,7 +8,6 @@ // // NetBSD does not support LC_COLLATE at the moment // XFAIL: netbsd -// XFAIL: LIBCXX-AIX-FIXME // REQUIRES: locale.cs_CZ.ISO8859-2 @@ -191,8 +190,13 @@ test(L"tild", std::wstring(L"")); test(L"ch", std::wstring(L"")); + +//TODO: Need to be investigated for AIX OS +#if !defined(_AIX) std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); test(L"ch", std::wstring(L"ch")); +#endif + std::locale::global(std::locale("C")); #endif // TEST_HAS_NO_WIDE_CHARACTERS