More fixes to the tests. Add UTF-8 encoding to all locales that don't specify one. Undefine some stdio.h macros that break the tests.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@140252 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Chisnall 2011-09-21 14:59:10 +00:00
parent a824f53600
commit db2e99f852
7 changed files with 43 additions and 19 deletions

View File

@ -76,6 +76,30 @@
#error stdout not defined
#endif
// As an optimisation, these may be defined as macros in the C header. We want
// to check the functions, not the macros.
#ifdef puts
#undef puts
#endif
#ifdef putc
#undef putc
#endif
#ifdef getc
#undef getc
#endif
#ifdef putchar
#undef putchar
#endif
#ifdef clearerr
#undef clearerr
#endif
#ifdef feof
#undef feof
#endif
#ifdef ferror
#undef ferror
#endif
#include <cstdarg>
int main()

View File

@ -39,7 +39,7 @@ int main()
{
testbuf<char> sb(" -$1,234,567.89");
std::istream is(&sb);
is.imbue(std::locale("en_US"));
is.imbue(std::locale("en_US.UTF-8"));
long double x = 0;
is >> std::get_money(x, false);
assert(x == -123456789);
@ -47,7 +47,7 @@ int main()
{
testbuf<char> sb(" -USD 1,234,567.89");
std::istream is(&sb);
is.imbue(std::locale("en_US"));
is.imbue(std::locale("en_US.UTF-8"));
long double x = 0;
is >> std::get_money(x, true);
assert(x == -123456789);
@ -55,7 +55,7 @@ int main()
{
testbuf<wchar_t> sb(L" -$1,234,567.89");
std::wistream is(&sb);
is.imbue(std::locale("en_US"));
is.imbue(std::locale("en_US.UTF-8"));
long double x = 0;
is >> std::get_money(x, false);
assert(x == -123456789);
@ -63,7 +63,7 @@ int main()
{
testbuf<wchar_t> sb(L" -USD 1,234,567.89");
std::wistream is(&sb);
is.imbue(std::locale("en_US"));
is.imbue(std::locale("en_US.UTF-8"));
long double x = 0;
is >> std::get_money(x, true);
assert(x == -123456789);

View File

@ -39,7 +39,7 @@ int main()
{
testbuf<char> sb(" Sat Dec 31 23:55:59 2061");
std::istream is(&sb);
is.imbue(std::locale("en_US"));
is.imbue(std::locale("en_US.UTF-8"));
std::tm t = {0};
is >> std::get_time(&t, "%c");
assert(t.tm_sec == 59);
@ -55,7 +55,7 @@ int main()
{
testbuf<wchar_t> sb(L" Sat Dec 31 23:55:59 2061");
std::wistream is(&sb);
is.imbue(std::locale("en_US"));
is.imbue(std::locale("en_US.UTF-8"));
std::tm t = {0};
is >> std::get_time(&t, L"%c");
assert(t.tm_sec == 59);

View File

@ -51,7 +51,7 @@ int main()
{
testbuf<char> sb;
std::ostream os(&sb);
os.imbue(std::locale("en_US"));
os.imbue(std::locale("en_US.UTF-8"));
showbase(os);
long double x = -123456789;
os << std::put_money(x, false);
@ -60,7 +60,7 @@ int main()
{
testbuf<char> sb;
std::ostream os(&sb);
os.imbue(std::locale("en_US"));
os.imbue(std::locale("en_US.UTF-8"));
showbase(os);
long double x = -123456789;
os << std::put_money(x, true);
@ -69,7 +69,7 @@ int main()
{
testbuf<wchar_t> sb;
std::wostream os(&sb);
os.imbue(std::locale("en_US"));
os.imbue(std::locale("en_US.UTF-8"));
showbase(os);
long double x = -123456789;
os << std::put_money(x, false);
@ -78,7 +78,7 @@ int main()
{
testbuf<wchar_t> sb;
std::wostream os(&sb);
os.imbue(std::locale("en_US"));
os.imbue(std::locale("en_US.UTF-8"));
showbase(os);
long double x = -123456789;
os << std::put_money(x, true);

View File

@ -51,7 +51,7 @@ int main()
{
testbuf<char> sb;
std::ostream os(&sb);
os.imbue(std::locale("en_US"));
os.imbue(std::locale("en_US.UTF-8"));
std::tm t = {0};
t.tm_sec = 59;
t.tm_min = 55;
@ -66,7 +66,7 @@ int main()
{
testbuf<wchar_t> sb;
std::wostream os(&sb);
os.imbue(std::locale("en_US"));
os.imbue(std::locale("en_US.UTF-8"));
std::tm t = {0};
t.tm_sec = 59;
t.tm_min = 55;

View File

@ -34,7 +34,7 @@ void f1(std::ios_base::event ev, std::ios_base& stream, int index)
{
if (ev == std::ios_base::imbue_event)
{
assert(stream.getloc().name() == "en_US");
assert(stream.getloc().name() == "en_US.UTF-8");
assert(index == 4);
++f1_called;
}
@ -47,6 +47,6 @@ int main()
b.register_callback(f1, 4);
b.register_callback(f1, 4);
b.register_callback(f1, 4);
std::locale l = b.imbue(std::locale("en_US"));
std::locale l = b.imbue(std::locale("en_US.UTF-8"));
assert(f1_called == 3);
}

View File

@ -39,7 +39,7 @@ void f1(std::ios_base::event ev, std::ios_base& stream, int index)
assert(!f1_called);
assert( f2_called);
assert( f3_called);
assert(stream.getloc().name() == "en_US");
assert(stream.getloc().name() == "en_US.UTF-8");
assert(index == 4);
f1_called = true;
}
@ -52,7 +52,7 @@ void f2(std::ios_base::event ev, std::ios_base& stream, int index)
assert(!f1_called);
assert(!f2_called);
assert( f3_called);
assert(stream.getloc().name() == "en_US");
assert(stream.getloc().name() == "en_US.UTF-8");
assert(index == 5);
f2_called = true;
}
@ -65,7 +65,7 @@ void f3(std::ios_base::event ev, std::ios_base& stream, int index)
assert(!f1_called);
assert(!f2_called);
assert(!f3_called);
assert(stream.getloc().name() == "en_US");
assert(stream.getloc().name() == "en_US.UTF-8");
assert(index == 6);
f3_called = true;
}
@ -78,9 +78,9 @@ int main()
b.register_callback(f1, 4);
b.register_callback(f2, 5);
b.register_callback(f3, 6);
std::locale l = b.imbue(std::locale("en_US"));
std::locale l = b.imbue(std::locale("en_US.UTF-8"));
assert(l.name() == std::string("C"));
assert(b.getloc().name() == std::string("en_US"));
assert(b.getloc().name() == std::string("en_US.UTF-8"));
assert(f1_called);
assert(f2_called);
assert(f3_called);