mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-25 23:00:15 +00:00
[libc++] Split re.alg tests into locale-dependent and independent tests
Currently all these tests are XFAILED on Linux even though the problem only seems to be with the few checks that look at collation. To retain test coverage this splits the locale-dependent tests into a separate .pass.cpp that is XFAILed as before. This commit also XFAILs the locale-dependent tests on FreeBSD since the [=M=] and [.ch.] behaviour for cs_CZ also doesn't seem to match the behaviour that is expected by these tests. Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D94969
This commit is contained in:
parent
8000c77853
commit
537d90db82
116
libcxx/test/std/re/re.alg/re.alg.match/awk.locale.pass.cpp
Normal file
116
libcxx/test/std/re/re.alg/re.alg.match/awk.locale.pass.cpp
Normal file
@ -0,0 +1,116 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// <regex>
|
||||
|
||||
// template <class BidirectionalIterator, class Allocator, class charT,
|
||||
// class traits>
|
||||
// bool regex_match(BidirectionalIterator first, BidirectionalIterator last,
|
||||
// match_results<BidirectionalIterator, Allocator>& m,
|
||||
// const basic_regex<charT, traits>& e,
|
||||
// regex_constants::match_flag_type flags
|
||||
// = regex_constants::match_default);
|
||||
|
||||
// TODO: investigation needed
|
||||
// TODO(netbsd): incomplete support for locales
|
||||
// XFAIL: linux-gnu, netbsd, freebsd
|
||||
// REQUIRES: locale.cs_CZ.ISO8859-2
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
#include "platform_support.h" // locale name macros
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
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::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((size_t)m.length(0) == std::char_traits<char>::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::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((size_t)m.length(0) == std::char_traits<char>::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";
|
||||
assert(!std::regex_match(s, m, std::regex("[a[=M=]z]",
|
||||
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_match(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((size_t)m.length(0) == std::char_traits<wchar_t>::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::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((size_t)m.length(0) == std::char_traits<wchar_t>::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";
|
||||
assert(!std::regex_match(s, m, std::wregex(L"[a[=M=]z]",
|
||||
std::regex_constants::awk)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -16,18 +16,11 @@
|
||||
// regex_constants::match_flag_type flags
|
||||
// = regex_constants::match_default);
|
||||
|
||||
// TODO: investigation needed
|
||||
// TODO(netbsd): incomplete support for locales
|
||||
// XFAIL: linux-gnu, netbsd
|
||||
// REQUIRES: locale.cs_CZ.ISO8859-2
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
#include "platform_support.h" // locale name macros
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
{
|
||||
@ -619,47 +612,6 @@ int main(int, char**)
|
||||
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_match(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((size_t)m.length(0) == std::char_traits<char>::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::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((size_t)m.length(0) == std::char_traits<char>::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";
|
||||
assert(!std::regex_match(s, m, std::regex("[a[=M=]z]",
|
||||
std::regex_constants::awk)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
{
|
||||
std::cmatch m;
|
||||
const char s[] = "01a45cef9";
|
||||
@ -1300,47 +1252,6 @@ int main(int, char**)
|
||||
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_match(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((size_t)m.length(0) == std::char_traits<wchar_t>::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::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((size_t)m.length(0) == std::char_traits<wchar_t>::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";
|
||||
assert(!std::regex_match(s, m, std::wregex(L"[a[=M=]z]",
|
||||
std::regex_constants::awk)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
{
|
||||
std::wcmatch m;
|
||||
const wchar_t s[] = L"01a45cef9";
|
||||
|
118
libcxx/test/std/re/re.alg/re.alg.match/basic.locale.pass.cpp
Normal file
118
libcxx/test/std/re/re.alg/re.alg.match/basic.locale.pass.cpp
Normal file
@ -0,0 +1,118 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// NetBSD does not support LC_COLLATE at the moment
|
||||
// XFAIL: netbsd
|
||||
|
||||
// REQUIRES: locale.cs_CZ.ISO8859-2
|
||||
|
||||
// <regex>
|
||||
|
||||
// template <class BidirectionalIterator, class Allocator, class charT, class traits>
|
||||
// bool
|
||||
// regex_match(BidirectionalIterator first, BidirectionalIterator last,
|
||||
// match_results<BidirectionalIterator, Allocator>& m,
|
||||
// const basic_regex<charT, traits>& e,
|
||||
// regex_constants::match_flag_type flags = regex_constants::match_default);
|
||||
|
||||
// TODO: investigation needed
|
||||
// XFAIL: linux-gnu, freebsd
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
#include "platform_support.h" // locale name macros
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
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<size_t>(m.length(0)) == std::char_traits<char>::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<size_t>(m.length(0)) == std::char_traits<char>::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";
|
||||
assert(!std::regex_match(s, m, std::regex("[a[=M=]z]",
|
||||
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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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";
|
||||
assert(!std::regex_match(s, m, std::wregex(L"[a[=M=]z]",
|
||||
std::regex_constants::basic)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -6,10 +6,6 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// NetBSD does not support LC_COLLATE at the moment
|
||||
// XFAIL: netbsd
|
||||
|
||||
// REQUIRES: locale.cs_CZ.ISO8859-2
|
||||
|
||||
// <regex>
|
||||
|
||||
@ -20,16 +16,11 @@
|
||||
// const basic_regex<charT, traits>& e,
|
||||
// regex_constants::match_flag_type flags = regex_constants::match_default);
|
||||
|
||||
// TODO: investigation needed
|
||||
// XFAIL: linux-gnu
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
#include "platform_support.h" // locale name macros
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
{
|
||||
@ -623,47 +614,6 @@ int main(int, char**)
|
||||
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<size_t>(m.length(0)) == std::char_traits<char>::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<size_t>(m.length(0)) == std::char_traits<char>::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";
|
||||
assert(!std::regex_match(s, m, std::regex("[a[=M=]z]",
|
||||
std::regex_constants::basic)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
{
|
||||
std::cmatch m;
|
||||
const char s[] = "01a45cef9";
|
||||
@ -1291,47 +1241,6 @@ int main(int, char**)
|
||||
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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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";
|
||||
assert(!std::regex_match(s, m, std::wregex(L"[a[=M=]z]",
|
||||
std::regex_constants::basic)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
{
|
||||
std::wcmatch m;
|
||||
const wchar_t s[] = L"01a45cef9";
|
||||
|
75
libcxx/test/std/re/re.alg/re.alg.match/ecma.locale.pass.cpp
Normal file
75
libcxx/test/std/re/re.alg/re.alg.match/ecma.locale.pass.cpp
Normal file
@ -0,0 +1,75 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// NetBSD does not support LC_COLLATE at the moment
|
||||
// XFAIL: netbsd
|
||||
|
||||
// REQUIRES: locale.cs_CZ.ISO8859-2
|
||||
|
||||
// <regex>
|
||||
|
||||
// template <class BidirectionalIterator, class Allocator, class charT, class traits>
|
||||
// bool
|
||||
// regex_match(BidirectionalIterator first, BidirectionalIterator last,
|
||||
// match_results<BidirectionalIterator, Allocator>& m,
|
||||
// const basic_regex<charT, traits>& e,
|
||||
// regex_constants::match_flag_type flags = regex_constants::match_default);
|
||||
|
||||
// TODO: investigation needed
|
||||
// XFAIL: linux-gnu, freebsd
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
#include "platform_support.h" // locale name macros
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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";
|
||||
assert(!std::regex_match(s, m, std::wregex(L"[a[=M=]z]")));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -6,10 +6,6 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// NetBSD does not support LC_COLLATE at the moment
|
||||
// XFAIL: netbsd
|
||||
|
||||
// REQUIRES: locale.cs_CZ.ISO8859-2
|
||||
|
||||
// <regex>
|
||||
|
||||
@ -20,16 +16,11 @@
|
||||
// const basic_regex<charT, traits>& e,
|
||||
// regex_constants::match_flag_type flags = regex_constants::match_default);
|
||||
|
||||
// TODO: investigation needed
|
||||
// XFAIL: linux-gnu
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
#include "platform_support.h" // locale name macros
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
{
|
||||
@ -606,38 +597,6 @@ int main(int, char**)
|
||||
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<size_t>(m.length(0)) == std::char_traits<char>::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<size_t>(m.length(0)) == std::char_traits<char>::length(s));
|
||||
assert(m.position(0) == 0);
|
||||
assert(m.str(0) == s);
|
||||
}
|
||||
{
|
||||
std::cmatch m;
|
||||
const char s[] = "foobar";
|
||||
@ -650,13 +609,6 @@ int main(int, char**)
|
||||
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";
|
||||
assert(!std::regex_match(s, m, std::regex("[a[=M=]z]")));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
{
|
||||
std::cmatch m;
|
||||
const char s[] = "01a45cef9";
|
||||
@ -1292,45 +1244,6 @@ int main(int, char**)
|
||||
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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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";
|
||||
assert(!std::regex_match(s, m, std::wregex(L"[a[=M=]z]")));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
{
|
||||
std::wcmatch m;
|
||||
const wchar_t s[] = L"01a45cef9";
|
||||
|
118
libcxx/test/std/re/re.alg/re.alg.match/extended.locale.pass.cpp
Normal file
118
libcxx/test/std/re/re.alg/re.alg.match/extended.locale.pass.cpp
Normal file
@ -0,0 +1,118 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// NetBSD does not support LC_COLLATE at the moment
|
||||
// XFAIL: netbsd
|
||||
|
||||
// REQUIRES: locale.cs_CZ.ISO8859-2
|
||||
|
||||
// <regex>
|
||||
|
||||
// template <class BidirectionalIterator, class Allocator, class charT, class traits>
|
||||
// bool
|
||||
// regex_match(BidirectionalIterator first, BidirectionalIterator last,
|
||||
// match_results<BidirectionalIterator, Allocator>& m,
|
||||
// const basic_regex<charT, traits>& e,
|
||||
// regex_constants::match_flag_type flags = regex_constants::match_default);
|
||||
|
||||
// TODO: investigation needed
|
||||
// XFAIL: linux-gnu, freebsd
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
#include "platform_support.h" // locale name macros
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
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<size_t>(m.length(0)) == std::char_traits<char>::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<size_t>(m.length(0)) == std::char_traits<char>::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";
|
||||
assert(!std::regex_match(s, m, std::regex("[a[=M=]z]",
|
||||
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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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";
|
||||
assert(!std::regex_match(s, m, std::wregex(L"[a[=M=]z]",
|
||||
std::regex_constants::extended)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -6,11 +6,6 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// NetBSD does not support LC_COLLATE at the moment
|
||||
// XFAIL: netbsd
|
||||
|
||||
// REQUIRES: locale.cs_CZ.ISO8859-2
|
||||
|
||||
// <regex>
|
||||
|
||||
// template <class BidirectionalIterator, class Allocator, class charT, class traits>
|
||||
@ -20,16 +15,11 @@
|
||||
// const basic_regex<charT, traits>& e,
|
||||
// regex_constants::match_flag_type flags = regex_constants::match_default);
|
||||
|
||||
// TODO: investigation needed
|
||||
// XFAIL: linux-gnu
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
#include "platform_support.h" // locale name macros
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
{
|
||||
@ -639,47 +629,6 @@ int main(int, char**)
|
||||
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<size_t>(m.length(0)) == std::char_traits<char>::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<size_t>(m.length(0)) == std::char_traits<char>::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";
|
||||
assert(!std::regex_match(s, m, std::regex("[a[=M=]z]",
|
||||
std::regex_constants::extended)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
{
|
||||
std::cmatch m;
|
||||
const char s[] = "01a45cef9";
|
||||
@ -1323,47 +1272,6 @@ int main(int, char**)
|
||||
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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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";
|
||||
assert(!std::regex_match(s, m, std::wregex(L"[a[=M=]z]",
|
||||
std::regex_constants::extended)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
{
|
||||
std::wcmatch m;
|
||||
const wchar_t s[] = L"01a45cef9";
|
||||
|
118
libcxx/test/std/re/re.alg/re.alg.search/awk.locale.pass.cpp
Normal file
118
libcxx/test/std/re/re.alg/re.alg.search/awk.locale.pass.cpp
Normal file
@ -0,0 +1,118 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// NetBSD does not support LC_COLLATE at the moment
|
||||
// XFAIL: netbsd
|
||||
|
||||
// REQUIRES: locale.cs_CZ.ISO8859-2
|
||||
|
||||
// <regex>
|
||||
|
||||
// template <class BidirectionalIterator, class Allocator, class charT, class traits>
|
||||
// bool
|
||||
// regex_search(BidirectionalIterator first, BidirectionalIterator last,
|
||||
// match_results<BidirectionalIterator, Allocator>& m,
|
||||
// const basic_regex<charT, traits>& e,
|
||||
// regex_constants::match_flag_type flags = regex_constants::match_default);
|
||||
|
||||
// TODO: investigation needed
|
||||
// XFAIL: linux-gnu, freebsd
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
#include "platform_support.h" // locale name macros
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
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<size_t>(m.length(0)) == std::char_traits<char>::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<size_t>(m.length(0)) == std::char_traits<char>::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";
|
||||
assert(!std::regex_search(s, m, std::regex("[a[=M=]z]",
|
||||
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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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";
|
||||
assert(!std::regex_search(s, m, std::wregex(L"[a[=M=]z]",
|
||||
std::regex_constants::awk)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -6,10 +6,6 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// NetBSD does not support LC_COLLATE at the moment
|
||||
// XFAIL: netbsd
|
||||
|
||||
// REQUIRES: locale.cs_CZ.ISO8859-2
|
||||
|
||||
// <regex>
|
||||
|
||||
@ -20,16 +16,11 @@
|
||||
// const basic_regex<charT, traits>& e,
|
||||
// regex_constants::match_flag_type flags = regex_constants::match_default);
|
||||
|
||||
// TODO: investigation needed
|
||||
// XFAIL: linux-gnu
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
#include "platform_support.h" // locale name macros
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
{
|
||||
@ -693,47 +684,6 @@ int main(int, char**)
|
||||
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<size_t>(m.length(0)) == std::char_traits<char>::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<size_t>(m.length(0)) == std::char_traits<char>::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";
|
||||
assert(!std::regex_search(s, m, std::regex("[a[=M=]z]",
|
||||
std::regex_constants::awk)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
{
|
||||
std::cmatch m;
|
||||
const char s[] = "01a45cef9";
|
||||
@ -1464,47 +1414,6 @@ int main(int, char**)
|
||||
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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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";
|
||||
assert(!std::regex_search(s, m, std::wregex(L"[a[=M=]z]",
|
||||
std::regex_constants::awk)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
{
|
||||
std::wcmatch m;
|
||||
const wchar_t s[] = L"01a45cef9";
|
||||
|
118
libcxx/test/std/re/re.alg/re.alg.search/basic.locale.pass.cpp
Normal file
118
libcxx/test/std/re/re.alg/re.alg.search/basic.locale.pass.cpp
Normal file
@ -0,0 +1,118 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// NetBSD does not support LC_COLLATE at the moment
|
||||
// XFAIL: netbsd
|
||||
|
||||
// REQUIRES: locale.cs_CZ.ISO8859-2
|
||||
|
||||
// <regex>
|
||||
|
||||
// template <class BidirectionalIterator, class Allocator, class charT, class traits>
|
||||
// bool
|
||||
// regex_search(BidirectionalIterator first, BidirectionalIterator last,
|
||||
// match_results<BidirectionalIterator, Allocator>& m,
|
||||
// const basic_regex<charT, traits>& e,
|
||||
// regex_constants::match_flag_type flags = regex_constants::match_default);
|
||||
|
||||
// TODO: investigation needed
|
||||
// XFAIL: linux-gnu, freebsd
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
#include "platform_support.h" // locale name macros
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
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::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<size_t>(m.length(0)) == std::char_traits<char>::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::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<size_t>(m.length(0)) == std::char_traits<char>::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";
|
||||
assert(!std::regex_search(s, m, std::regex("[a[=M=]z]",
|
||||
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_search(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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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::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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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";
|
||||
assert(!std::regex_search(s, m, std::wregex(L"[a[=M=]z]",
|
||||
std::regex_constants::basic)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -6,10 +6,6 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// NetBSD does not support LC_COLLATE at the moment
|
||||
// XFAIL: netbsd
|
||||
|
||||
// REQUIRES: locale.cs_CZ.ISO8859-2
|
||||
|
||||
// <regex>
|
||||
|
||||
@ -20,16 +16,11 @@
|
||||
// const basic_regex<charT, traits>& e,
|
||||
// regex_constants::match_flag_type flags = regex_constants::match_default);
|
||||
|
||||
// TODO: investigation needed
|
||||
// XFAIL: linux-gnu
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
#include "platform_support.h" // locale name macros
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
{
|
||||
@ -695,47 +686,6 @@ int main(int, char**)
|
||||
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_search(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<size_t>(m.length(0)) == std::char_traits<char>::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::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<size_t>(m.length(0)) == std::char_traits<char>::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";
|
||||
assert(!std::regex_search(s, m, std::regex("[a[=M=]z]",
|
||||
std::regex_constants::basic)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
{
|
||||
std::cmatch m;
|
||||
const char s[] = "01a45cef9";
|
||||
@ -1453,47 +1403,6 @@ int main(int, char**)
|
||||
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_search(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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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::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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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";
|
||||
assert(!std::regex_search(s, m, std::wregex(L"[a[=M=]z]",
|
||||
std::regex_constants::basic)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
{
|
||||
std::wcmatch m;
|
||||
const wchar_t s[] = L"01a45cef9";
|
||||
|
114
libcxx/test/std/re/re.alg/re.alg.search/ecma.locale.pass.cpp
Normal file
114
libcxx/test/std/re/re.alg/re.alg.search/ecma.locale.pass.cpp
Normal file
@ -0,0 +1,114 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// NetBSD does not support LC_COLLATE at the moment
|
||||
// XFAIL: netbsd
|
||||
|
||||
// REQUIRES: locale.cs_CZ.ISO8859-2
|
||||
|
||||
// <regex>
|
||||
|
||||
// template <class BidirectionalIterator, class Allocator, class charT, class traits>
|
||||
// bool
|
||||
// regex_search(BidirectionalIterator first, BidirectionalIterator last,
|
||||
// match_results<BidirectionalIterator, Allocator>& m,
|
||||
// const basic_regex<charT, traits>& e,
|
||||
// regex_constants::match_flag_type flags = regex_constants::match_default);
|
||||
|
||||
// TODO: investigation needed
|
||||
// XFAIL: linux-gnu, freebsd
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
#include "platform_support.h" // locale name macros
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
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<size_t>(m.length(0)) == std::char_traits<char>::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<size_t>(m.length(0)) == std::char_traits<char>::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";
|
||||
assert(!std::regex_search(s, m, std::regex("[a[=M=]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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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";
|
||||
assert(!std::regex_search(s, m, std::wregex(L"[a[=M=]z]")));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -6,10 +6,6 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// NetBSD does not support LC_COLLATE at the moment
|
||||
// XFAIL: netbsd
|
||||
|
||||
// REQUIRES: locale.cs_CZ.ISO8859-2
|
||||
|
||||
// <regex>
|
||||
|
||||
@ -20,16 +16,11 @@
|
||||
// const basic_regex<charT, traits>& e,
|
||||
// regex_constants::match_flag_type flags = regex_constants::match_default);
|
||||
|
||||
// TODO: investigation needed
|
||||
// XFAIL: linux-gnu
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
#include "platform_support.h" // locale name macros
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
{
|
||||
@ -675,45 +666,6 @@ int main(int, char**)
|
||||
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<size_t>(m.length(0)) == std::char_traits<char>::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<size_t>(m.length(0)) == std::char_traits<char>::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";
|
||||
assert(!std::regex_search(s, m, std::regex("[a[=M=]z]")));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
{
|
||||
std::cmatch m;
|
||||
const char s[] = "01a45cef9";
|
||||
@ -1454,45 +1406,6 @@ int main(int, char**)
|
||||
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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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";
|
||||
assert(!std::regex_search(s, m, std::wregex(L"[a[=M=]z]")));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
{
|
||||
std::wcmatch m;
|
||||
const wchar_t s[] = L"01a45cef9";
|
||||
|
118
libcxx/test/std/re/re.alg/re.alg.search/extended.locale.pass.cpp
Normal file
118
libcxx/test/std/re/re.alg/re.alg.search/extended.locale.pass.cpp
Normal file
@ -0,0 +1,118 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// NetBSD does not support LC_COLLATE at the moment
|
||||
// XFAIL: netbsd
|
||||
|
||||
// REQUIRES: locale.cs_CZ.ISO8859-2
|
||||
|
||||
// <regex>
|
||||
|
||||
// template <class BidirectionalIterator, class Allocator, class charT, class traits>
|
||||
// bool
|
||||
// regex_search(BidirectionalIterator first, BidirectionalIterator last,
|
||||
// match_results<BidirectionalIterator, Allocator>& m,
|
||||
// const basic_regex<charT, traits>& e,
|
||||
// regex_constants::match_flag_type flags = regex_constants::match_default);
|
||||
|
||||
// TODO: investigation needed
|
||||
// XFAIL: linux-gnu, freebsd
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
#include "platform_support.h" // locale name macros
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
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<size_t>(m.length(0)) == std::char_traits<char>::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<size_t>(m.length(0)) == std::char_traits<char>::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";
|
||||
assert(!std::regex_search(s, m, std::regex("[a[=M=]z]",
|
||||
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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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";
|
||||
assert(!std::regex_search(s, m, std::wregex(L"[a[=M=]z]",
|
||||
std::regex_constants::extended)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -6,10 +6,6 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// NetBSD does not support LC_COLLATE at the moment
|
||||
// XFAIL: netbsd
|
||||
|
||||
// REQUIRES: locale.cs_CZ.ISO8859-2
|
||||
|
||||
// <regex>
|
||||
|
||||
@ -20,16 +16,11 @@
|
||||
// const basic_regex<charT, traits>& e,
|
||||
// regex_constants::match_flag_type flags = regex_constants::match_default);
|
||||
|
||||
// TODO: investigation needed
|
||||
// XFAIL: linux-gnu
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
#include "platform_support.h" // locale name macros
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
{
|
||||
@ -711,47 +702,6 @@ int main(int, char**)
|
||||
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<size_t>(m.length(0)) == std::char_traits<char>::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<size_t>(m.length(0)) == std::char_traits<char>::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";
|
||||
assert(!std::regex_search(s, m, std::regex("[a[=M=]z]",
|
||||
std::regex_constants::extended)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
{
|
||||
std::cmatch m;
|
||||
const char s[] = "01a45cef9";
|
||||
@ -1485,47 +1435,6 @@ int main(int, char**)
|
||||
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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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<size_t>(m.length(0)) == std::char_traits<wchar_t>::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";
|
||||
assert(!std::regex_search(s, m, std::wregex(L"[a[=M=]z]",
|
||||
std::regex_constants::extended)));
|
||||
assert(m.size() == 0);
|
||||
}
|
||||
{
|
||||
std::wcmatch m;
|
||||
const wchar_t s[] = L"01a45cef9";
|
||||
|
@ -148,7 +148,8 @@ DEFAULT_FEATURES += [
|
||||
Feature(name='darwin', when=lambda cfg: '__APPLE__' in compilerMacros(cfg)),
|
||||
Feature(name='windows', when=lambda cfg: '_WIN32' in compilerMacros(cfg)),
|
||||
Feature(name='linux', when=lambda cfg: '__linux__' in compilerMacros(cfg)),
|
||||
Feature(name='netbsd', when=lambda cfg: '__NetBSD__' in compilerMacros(cfg))
|
||||
Feature(name='netbsd', when=lambda cfg: '__NetBSD__' in compilerMacros(cfg)),
|
||||
Feature(name='freebsd', when=lambda cfg: '__FreeBSD__' in compilerMacros(cfg))
|
||||
]
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user