Index: libcxx/test/std/re/re.alg/re.alg.match/basic.pass.cpp =================================================================== --- libcxx/test/std/re/re.alg/re.alg.match/basic.pass.cpp +++ libcxx/test/std/re/re.alg/re.alg.match/basic.pass.cpp @@ -7,8 +7,6 @@ // //===----------------------------------------------------------------------===// -// REQUIRES: locale.cs_CZ.ISO8859-2 - // // template @@ -18,16 +16,11 @@ // const basic_regex& e, // regex_constants::match_flag_type flags = regex_constants::match_default); -// TODO: investigation needed -// XFAIL: linux-gnu - #include #include #include "test_macros.h" #include "test_iterators.h" -#include "platform_support.h" // locale name macros - int main() { { @@ -621,40 +614,6 @@ std::regex_constants::basic))); assert(m.size() == 0); } - std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); - { - std::cmatch m; - const char s[] = "m"; - assert(std::regex_match(s, m, std::regex("[a[=M=]z]", - std::regex_constants::basic))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - { - std::cmatch m; - const char s[] = "Ch"; - assert(std::regex_match(s, m, std::regex("[a[.ch.]z]", - std::regex_constants::basic | std::regex_constants::icase))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - std::locale::global(std::locale("C")); { std::cmatch m; const char s[] = "m"; @@ -1289,40 +1248,6 @@ std::regex_constants::basic))); assert(m.size() == 0); } - std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); - { - std::wcmatch m; - const wchar_t s[] = L"m"; - assert(std::regex_match(s, m, std::wregex(L"[a[=M=]z]", - std::regex_constants::basic))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - { - std::wcmatch m; - const wchar_t s[] = L"Ch"; - assert(std::regex_match(s, m, std::wregex(L"[a[.ch.]z]", - std::regex_constants::basic | std::regex_constants::icase))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - std::locale::global(std::locale("C")); { std::wcmatch m; const wchar_t s[] = L"m"; Index: libcxx/test/std/re/re.alg/re.alg.match/basic_locale.pass.cpp =================================================================== --- /dev/null +++ libcxx/test/std/re/re.alg/re.alg.match/basic_locale.pass.cpp @@ -0,0 +1,98 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// REQUIRES: locale.cs_CZ.ISO8859-2 + +// + +// template +// bool +// regex_match(BidirectionalIterator first, BidirectionalIterator last, +// match_results& m, +// const basic_regex& e, +// regex_constants::match_flag_type flags = regex_constants::match_default); + +// TODO: investigation needed +// XFAIL: linux-gnu + +#include +#include +#include "test_macros.h" +#include "test_iterators.h" + +#include "platform_support.h" // locale name macros + +int main() +{ + std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); + { + std::cmatch m; + const char s[] = "m"; + assert(std::regex_match(s, m, std::regex("[a[=M=]z]", + std::regex_constants::basic))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::cmatch m; + const char s[] = "Ch"; + assert(std::regex_match(s, m, std::regex("[a[.ch.]z]", + std::regex_constants::basic | std::regex_constants::icase))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::wcmatch m; + const wchar_t s[] = L"m"; + assert(std::regex_match(s, m, std::wregex(L"[a[=M=]z]", + std::regex_constants::basic))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::wcmatch m; + const wchar_t s[] = L"Ch"; + assert(std::regex_match(s, m, std::wregex(L"[a[.ch.]z]", + std::regex_constants::basic | std::regex_constants::icase))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } +} Index: libcxx/test/std/re/re.alg/re.alg.match/ecma.pass.cpp =================================================================== --- libcxx/test/std/re/re.alg/re.alg.match/ecma.pass.cpp +++ libcxx/test/std/re/re.alg/re.alg.match/ecma.pass.cpp @@ -7,8 +7,6 @@ // //===----------------------------------------------------------------------===// -// REQUIRES: locale.cs_CZ.ISO8859-2 - // // template @@ -18,16 +16,11 @@ // const basic_regex& e, // regex_constants::match_flag_type flags = regex_constants::match_default); -// TODO: investigation needed -// XFAIL: linux-gnu - #include #include #include "test_macros.h" #include "test_iterators.h" -#include "platform_support.h" // locale name macros - int main() { { @@ -604,38 +597,6 @@ assert(!std::regex_match(s, m, std::regex("[a[.hyphen.]z]"))); assert(m.size() == 0); } - std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); - { - std::cmatch m; - const char s[] = "m"; - assert(std::regex_match(s, m, std::regex("[a[=M=]z]"))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - { - std::cmatch m; - const char s[] = "Ch"; - assert(std::regex_match(s, m, std::regex("[a[.ch.]z]", - std::regex_constants::icase))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } { std::cmatch m; const char s[] = "foobar"; @@ -648,7 +609,6 @@ assert(std::regex_match(s, s+7, m, std::regex("[abfor\\0]*"))); assert(m.size() == 1); } - std::locale::global(std::locale("C")); { std::cmatch m; const char s[] = "m"; @@ -1290,39 +1250,6 @@ assert(!std::regex_match(s, m, std::wregex(L"[a[.hyphen.]z]"))); assert(m.size() == 0); } - std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); - { - std::wcmatch m; - const wchar_t s[] = L"m"; - assert(std::regex_match(s, m, std::wregex(L"[a[=M=]z]"))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - { - std::wcmatch m; - const wchar_t s[] = L"Ch"; - assert(std::regex_match(s, m, std::wregex(L"[a[.ch.]z]", - std::regex_constants::icase))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - std::locale::global(std::locale("C")); { std::wcmatch m; const wchar_t s[] = L"m"; Index: libcxx/test/std/re/re.alg/re.alg.match/ecma_locale.pass.cpp =================================================================== --- /dev/null +++ libcxx/test/std/re/re.alg/re.alg.match/ecma_locale.pass.cpp @@ -0,0 +1,96 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// REQUIRES: locale.cs_CZ.ISO8859-2 + +// + +// template +// bool +// regex_match(BidirectionalIterator first, BidirectionalIterator last, +// match_results& m, +// const basic_regex& e, +// regex_constants::match_flag_type flags = regex_constants::match_default); + +// TODO: investigation needed +// XFAIL: linux-gnu + +#include +#include +#include "test_macros.h" +#include "test_iterators.h" + +#include "platform_support.h" // locale name macros + +int main() +{ + std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); + { + std::cmatch m; + const char s[] = "m"; + assert(std::regex_match(s, m, std::regex("[a[=M=]z]"))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::cmatch m; + const char s[] = "Ch"; + assert(std::regex_match(s, m, std::regex("[a[.ch.]z]", + std::regex_constants::icase))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::wcmatch m; + const wchar_t s[] = L"m"; + assert(std::regex_match(s, m, std::wregex(L"[a[=M=]z]"))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::wcmatch m; + const wchar_t s[] = L"Ch"; + assert(std::regex_match(s, m, std::wregex(L"[a[.ch.]z]", + std::regex_constants::icase))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } +} Index: libcxx/test/std/re/re.alg/re.alg.match/extended.pass.cpp =================================================================== --- libcxx/test/std/re/re.alg/re.alg.match/extended.pass.cpp +++ libcxx/test/std/re/re.alg/re.alg.match/extended.pass.cpp @@ -7,8 +7,6 @@ // //===----------------------------------------------------------------------===// -// REQUIRES: locale.cs_CZ.ISO8859-2 - // // template @@ -18,16 +16,11 @@ // const basic_regex& e, // regex_constants::match_flag_type flags = regex_constants::match_default); -// TODO: investigation needed -// XFAIL: linux-gnu - #include #include #include "test_macros.h" #include "test_iterators.h" -#include "platform_support.h" // locale name macros - int main() { { @@ -619,40 +612,6 @@ std::regex_constants::extended))); assert(m.size() == 0); } - std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); - { - std::cmatch m; - const char s[] = "m"; - assert(std::regex_match(s, m, std::regex("[a[=M=]z]", - std::regex_constants::extended))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - { - std::cmatch m; - const char s[] = "Ch"; - assert(std::regex_match(s, m, std::regex("[a[.ch.]z]", - std::regex_constants::extended | std::regex_constants::icase))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - std::locale::global(std::locale("C")); { std::cmatch m; const char s[] = "m"; @@ -1285,40 +1244,6 @@ std::regex_constants::extended))); assert(m.size() == 0); } - std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); - { - std::wcmatch m; - const wchar_t s[] = L"m"; - assert(std::regex_match(s, m, std::wregex(L"[a[=M=]z]", - std::regex_constants::extended))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - { - std::wcmatch m; - const wchar_t s[] = L"Ch"; - assert(std::regex_match(s, m, std::wregex(L"[a[.ch.]z]", - std::regex_constants::extended | std::regex_constants::icase))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - std::locale::global(std::locale("C")); { std::wcmatch m; const wchar_t s[] = L"m"; Index: libcxx/test/std/re/re.alg/re.alg.match/extended_locale.pass.cpp =================================================================== --- /dev/null +++ libcxx/test/std/re/re.alg/re.alg.match/extended_locale.pass.cpp @@ -0,0 +1,98 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// REQUIRES: locale.cs_CZ.ISO8859-2 + +// + +// template +// bool +// regex_match(BidirectionalIterator first, BidirectionalIterator last, +// match_results& m, +// const basic_regex& e, +// regex_constants::match_flag_type flags = regex_constants::match_default); + +// TODO: investigation needed +// XFAIL: linux-gnu + +#include +#include +#include "test_macros.h" +#include "test_iterators.h" + +#include "platform_support.h" // locale name macros + +int main() +{ + std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); + { + std::cmatch m; + const char s[] = "m"; + assert(std::regex_match(s, m, std::regex("[a[=M=]z]", + std::regex_constants::extended))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::cmatch m; + const char s[] = "Ch"; + assert(std::regex_match(s, m, std::regex("[a[.ch.]z]", + std::regex_constants::extended | std::regex_constants::icase))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::wcmatch m; + const wchar_t s[] = L"m"; + assert(std::regex_match(s, m, std::wregex(L"[a[=M=]z]", + std::regex_constants::extended))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::wcmatch m; + const wchar_t s[] = L"Ch"; + assert(std::regex_match(s, m, std::wregex(L"[a[.ch.]z]", + std::regex_constants::extended | std::regex_constants::icase))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } +} Index: libcxx/test/std/re/re.alg/re.alg.search/awk.pass.cpp =================================================================== --- libcxx/test/std/re/re.alg/re.alg.search/awk.pass.cpp +++ libcxx/test/std/re/re.alg/re.alg.search/awk.pass.cpp @@ -7,8 +7,6 @@ // //===----------------------------------------------------------------------===// -// REQUIRES: locale.cs_CZ.ISO8859-2 - // // template @@ -18,16 +16,11 @@ // const basic_regex& e, // regex_constants::match_flag_type flags = regex_constants::match_default); -// TODO: investigation needed -// XFAIL: linux-gnu - #include #include #include "test_macros.h" #include "test_iterators.h" -#include "platform_support.h" // locale name macros - int main() { { @@ -691,40 +684,6 @@ std::regex_constants::awk))); assert(m.size() == 0); } - std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); - { - std::cmatch m; - const char s[] = "m"; - assert(std::regex_search(s, m, std::regex("[a[=M=]z]", - std::regex_constants::awk))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - { - std::cmatch m; - const char s[] = "Ch"; - assert(std::regex_search(s, m, std::regex("[a[.ch.]z]", - std::regex_constants::awk | std::regex_constants::icase))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - std::locale::global(std::locale("C")); { std::cmatch m; const char s[] = "m"; @@ -1462,40 +1421,6 @@ std::regex_constants::awk))); assert(m.size() == 0); } - std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); - { - std::wcmatch m; - const wchar_t s[] = L"m"; - assert(std::regex_search(s, m, std::wregex(L"[a[=M=]z]", - std::regex_constants::awk))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - { - std::wcmatch m; - const wchar_t s[] = L"Ch"; - assert(std::regex_search(s, m, std::wregex(L"[a[.ch.]z]", - std::regex_constants::awk | std::regex_constants::icase))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - std::locale::global(std::locale("C")); { std::wcmatch m; const wchar_t s[] = L"m"; Index: libcxx/test/std/re/re.alg/re.alg.search/awk_locale.pass.cpp =================================================================== --- /dev/null +++ libcxx/test/std/re/re.alg/re.alg.search/awk_locale.pass.cpp @@ -0,0 +1,98 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// REQUIRES: locale.cs_CZ.ISO8859-2 + +// + +// template +// bool +// regex_search(BidirectionalIterator first, BidirectionalIterator last, +// match_results& m, +// const basic_regex& e, +// regex_constants::match_flag_type flags = regex_constants::match_default); + +// TODO: investigation needed +// XFAIL: linux-gnu + +#include +#include +#include "test_macros.h" +#include "test_iterators.h" + +#include "platform_support.h" // locale name macros + +int main() +{ + std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); + { + std::cmatch m; + const char s[] = "m"; + assert(std::regex_search(s, m, std::regex("[a[=M=]z]", + std::regex_constants::awk))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::cmatch m; + const char s[] = "Ch"; + assert(std::regex_search(s, m, std::regex("[a[.ch.]z]", + std::regex_constants::awk | std::regex_constants::icase))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::wcmatch m; + const wchar_t s[] = L"m"; + assert(std::regex_search(s, m, std::wregex(L"[a[=M=]z]", + std::regex_constants::awk))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::wcmatch m; + const wchar_t s[] = L"Ch"; + assert(std::regex_search(s, m, std::wregex(L"[a[.ch.]z]", + std::regex_constants::awk | std::regex_constants::icase))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } +} Index: libcxx/test/std/re/re.alg/re.alg.search/ecma.pass.cpp =================================================================== --- libcxx/test/std/re/re.alg/re.alg.search/ecma.pass.cpp +++ libcxx/test/std/re/re.alg/re.alg.search/ecma.pass.cpp @@ -7,8 +7,6 @@ // //===----------------------------------------------------------------------===// -// REQUIRES: locale.cs_CZ.ISO8859-2 - // // template @@ -18,16 +16,11 @@ // const basic_regex& e, // regex_constants::match_flag_type flags = regex_constants::match_default); -// TODO: investigation needed -// XFAIL: linux-gnu - #include #include #include "test_macros.h" #include "test_iterators.h" -#include "platform_support.h" // locale name macros - int main() { { @@ -673,39 +666,6 @@ assert(!std::regex_search(s, m, std::regex("[a[.hyphen.]z]"))); assert(m.size() == 0); } - std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); - { - std::cmatch m; - const char s[] = "m"; - assert(std::regex_search(s, m, std::regex("[a[=M=]z]"))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - { - std::cmatch m; - const char s[] = "Ch"; - assert(std::regex_search(s, m, std::regex("[a[.ch.]z]", - std::regex_constants::icase))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - std::locale::global(std::locale("C")); { std::cmatch m; const char s[] = "m"; @@ -1452,39 +1412,6 @@ assert(!std::regex_search(s, m, std::wregex(L"[a[.hyphen.]z]"))); assert(m.size() == 0); } - std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); - { - std::wcmatch m; - const wchar_t s[] = L"m"; - assert(std::regex_search(s, m, std::wregex(L"[a[=M=]z]"))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - { - std::wcmatch m; - const wchar_t s[] = L"Ch"; - assert(std::regex_search(s, m, std::wregex(L"[a[.ch.]z]", - std::regex_constants::icase))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - std::locale::global(std::locale("C")); { std::wcmatch m; const wchar_t s[] = L"m"; Index: libcxx/test/std/re/re.alg/re.alg.search/ecma_locale.pass.cpp =================================================================== --- /dev/null +++ libcxx/test/std/re/re.alg/re.alg.search/ecma_locale.pass.cpp @@ -0,0 +1,96 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// REQUIRES: locale.cs_CZ.ISO8859-2 + +// + +// template +// bool +// regex_search(BidirectionalIterator first, BidirectionalIterator last, +// match_results& m, +// const basic_regex& e, +// regex_constants::match_flag_type flags = regex_constants::match_default); + +// TODO: investigation needed +// XFAIL: linux-gnu + +#include +#include +#include "test_macros.h" +#include "test_iterators.h" + +#include "platform_support.h" // locale name macros + +int main() +{ + std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); + { + std::cmatch m; + const char s[] = "m"; + assert(std::regex_search(s, m, std::regex("[a[=M=]z]"))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::cmatch m; + const char s[] = "Ch"; + assert(std::regex_search(s, m, std::regex("[a[.ch.]z]", + std::regex_constants::icase))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::wcmatch m; + const wchar_t s[] = L"m"; + assert(std::regex_search(s, m, std::wregex(L"[a[=M=]z]"))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::wcmatch m; + const wchar_t s[] = L"Ch"; + assert(std::regex_search(s, m, std::wregex(L"[a[.ch.]z]", + std::regex_constants::icase))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } +} Index: libcxx/test/std/re/re.alg/re.alg.search/extended.pass.cpp =================================================================== --- libcxx/test/std/re/re.alg/re.alg.search/extended.pass.cpp +++ libcxx/test/std/re/re.alg/re.alg.search/extended.pass.cpp @@ -7,8 +7,6 @@ // //===----------------------------------------------------------------------===// -// REQUIRES: locale.cs_CZ.ISO8859-2 - // // template @@ -18,16 +16,11 @@ // const basic_regex& e, // regex_constants::match_flag_type flags = regex_constants::match_default); -// TODO: investigation needed -// XFAIL: linux-gnu - #include #include #include "test_macros.h" #include "test_iterators.h" -#include "platform_support.h" // locale name macros - int main() { { @@ -691,40 +684,6 @@ std::regex_constants::extended))); assert(m.size() == 0); } - std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); - { - std::cmatch m; - const char s[] = "m"; - assert(std::regex_search(s, m, std::regex("[a[=M=]z]", - std::regex_constants::extended))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - { - std::cmatch m; - const char s[] = "Ch"; - assert(std::regex_search(s, m, std::regex("[a[.ch.]z]", - std::regex_constants::extended | std::regex_constants::icase))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - std::locale::global(std::locale("C")); { std::cmatch m; const char s[] = "m"; @@ -1447,40 +1406,6 @@ std::regex_constants::extended))); assert(m.size() == 0); } - std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); - { - std::wcmatch m; - const wchar_t s[] = L"m"; - assert(std::regex_search(s, m, std::wregex(L"[a[=M=]z]", - std::regex_constants::extended))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - { - std::wcmatch m; - const wchar_t s[] = L"Ch"; - assert(std::regex_search(s, m, std::wregex(L"[a[.ch.]z]", - std::regex_constants::extended | std::regex_constants::icase))); - assert(m.size() == 1); - assert(!m.prefix().matched); - assert(m.prefix().first == s); - assert(m.prefix().second == m[0].first); - assert(!m.suffix().matched); - assert(m.suffix().first == m[0].second); - assert(m.suffix().second == m[0].second); - assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); - assert(m.position(0) == 0); - assert(m.str(0) == s); - } - std::locale::global(std::locale("C")); { std::wcmatch m; const wchar_t s[] = L"m"; Index: libcxx/test/std/re/re.alg/re.alg.search/extended_locale.pass.cpp =================================================================== --- /dev/null +++ libcxx/test/std/re/re.alg/re.alg.search/extended_locale.pass.cpp @@ -0,0 +1,98 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// REQUIRES: locale.cs_CZ.ISO8859-2 + +// + +// template +// bool +// regex_search(BidirectionalIterator first, BidirectionalIterator last, +// match_results& m, +// const basic_regex& e, +// regex_constants::match_flag_type flags = regex_constants::match_default); + +// TODO: investigation needed +// XFAIL: linux-gnu + +#include +#include +#include "test_macros.h" +#include "test_iterators.h" + +#include "platform_support.h" // locale name macros + +int main() +{ + std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2)); + { + std::cmatch m; + const char s[] = "m"; + assert(std::regex_search(s, m, std::regex("[a[=M=]z]", + std::regex_constants::extended))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::cmatch m; + const char s[] = "Ch"; + assert(std::regex_search(s, m, std::regex("[a[.ch.]z]", + std::regex_constants::extended | std::regex_constants::icase))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::wcmatch m; + const wchar_t s[] = L"m"; + assert(std::regex_search(s, m, std::wregex(L"[a[=M=]z]", + std::regex_constants::extended))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } + { + std::wcmatch m; + const wchar_t s[] = L"Ch"; + assert(std::regex_search(s, m, std::wregex(L"[a[.ch.]z]", + std::regex_constants::extended | std::regex_constants::icase))); + assert(m.size() == 1); + assert(!m.prefix().matched); + assert(m.prefix().first == s); + assert(m.prefix().second == m[0].first); + assert(!m.suffix().matched); + assert(m.suffix().first == m[0].second); + assert(m.suffix().second == m[0].second); + assert(m.length(0) >= 0 && static_cast(m.length(0)) == std::char_traits::length(s)); + assert(m.position(0) == 0); + assert(m.str(0) == s); + } +}