<div dir="ltr">This is my first post here so apologies for any silliness about this question. Several tests that I've looked at don't work on Android due to lack of locale support (<a href="https://code.google.com/p/android/issues/detail?id=57313#c2">https://code.google.com/p/android/issues/detail?id=57313#c2</a>). So I'd like to disable tests that rely on this. An example of such a test is <a href="http://llvm.org/svn/llvm-project/libcxx/trunk/test/re/re.alg/re.alg.match/basic.pass.cpp">http://llvm.org/svn/llvm-project/libcxx/trunk/test/re/re.alg/re.alg.match/basic.pass.cpp</a>, which does something like:<div>
<br></div><div><pre style="color:rgb(0,0,0);word-wrap:break-word;white-space:pre-wrap"> std::locale::global(std::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) == 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) == std::char_traits<char>::length(s));
assert(m.position(0) == 0);
assert(m.str(0) == s);
}
std::locale::global(std::locale("C"));</pre></div><div><br></div><div>What's the right way to disable this test for Android? Is there an appropriate #ifdef I can use? Or should I move the tests out to a separate file that's not built for Android?</div>
<div><br></div><div>Cheers.</div></div>