Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,9 @@
//
//===----------------------------------------------------------------------===//
//
// XFAIL: darwin
//
// NetBSD does not support LC_MONETARY at the moment
// XFAIL: netbsd

// XFAIL: LIBCXX-WINDOWS-FIXME

// REQUIRES: locale.en_US.UTF-8
// REQUIRES: locale.fr_FR.UTF-8
// REQUIRES: locale.ru_RU.UTF-8
Expand Down Expand Up @@ -65,180 +61,168 @@ class Fwt
};
#endif // TEST_HAS_NO_WIDE_CHARACTERS

void assert_symbol_sign_none_value(std::money_base::pattern p)
{
assert(p.field[0] == std::money_base::symbol);
assert(p.field[1] == std::money_base::sign);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
}

void assert_sign_symbol_none_value(std::money_base::pattern p)
{
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::symbol);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
}

void assert_value_none_symbol_sign(std::money_base::pattern p)
{
assert(p.field[0] == std::money_base::value);
assert(p.field[1] == std::money_base::none);
assert(p.field[2] == std::money_base::symbol);
assert(p.field[3] == std::money_base::sign);
}

void assert_sign_value_none_symbol(std::money_base::pattern p)
{
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
}

int main(int, char**)
{
{
Fnf f("C", 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::symbol);
assert(p.field[1] == std::money_base::sign);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
assert_symbol_sign_none_value(p);
}
{
Fnt f("C", 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::symbol);
assert(p.field[1] == std::money_base::sign);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
assert_symbol_sign_none_value(p);
}
#ifndef TEST_HAS_NO_WIDE_CHARACTERS
{
Fwf f("C", 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::symbol);
assert(p.field[1] == std::money_base::sign);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
assert_symbol_sign_none_value(p);
}
{
Fwt f("C", 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::symbol);
assert(p.field[1] == std::money_base::sign);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
assert_symbol_sign_none_value(p);
}
#endif // TEST_HAS_NO_WIDE_CHARACTERS

{
Fnf f(LOCALE_en_US_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::symbol);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
assert_sign_symbol_none_value(p);
}
{
Fnt f(LOCALE_en_US_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::symbol);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
assert_sign_symbol_none_value(p);
}
#ifndef TEST_HAS_NO_WIDE_CHARACTERS
{
Fwf f(LOCALE_en_US_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::symbol);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
assert_sign_symbol_none_value(p);
}
{
Fwt f(LOCALE_en_US_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::symbol);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
assert_sign_symbol_none_value(p);
}
#endif // TEST_HAS_NO_WIDE_CHARACTERS

{
Fnf f(LOCALE_fr_FR_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
assert_sign_value_none_symbol(p);
}
{
Fnt f(LOCALE_fr_FR_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
assert_sign_value_none_symbol(p);
}
#ifndef TEST_HAS_NO_WIDE_CHARACTERS
{
Fwf f(LOCALE_fr_FR_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
assert_sign_value_none_symbol(p);
}
{
Fwt f(LOCALE_fr_FR_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
assert_sign_value_none_symbol(p);
}
#endif // TEST_HAS_NO_WIDE_CHARACTERS

{
Fnf f(LOCALE_ru_RU_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
assert_sign_value_none_symbol(p);
}
{
Fnt f(LOCALE_ru_RU_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
assert_sign_value_none_symbol(p);
}
#ifndef TEST_HAS_NO_WIDE_CHARACTERS
{
Fwf f(LOCALE_ru_RU_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
assert_sign_value_none_symbol(p);
}
{
Fwt f(LOCALE_ru_RU_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::value);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::symbol);
assert_sign_value_none_symbol(p);
}
#endif // TEST_HAS_NO_WIDE_CHARACTERS

{
Fnf f(LOCALE_zh_CN_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::symbol);
assert(p.field[1] == std::money_base::sign);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
#ifdef __APPLE__
assert_sign_symbol_none_value(p);
#else
assert_symbol_sign_none_value(p);
#endif
}
{
Fnt f(LOCALE_zh_CN_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::symbol);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
#ifdef _WIN32
assert_symbol_sign_none_value(p);
#else
assert_sign_symbol_none_value(p);
#endif
}
#ifndef TEST_HAS_NO_WIDE_CHARACTERS
{
Fwf f(LOCALE_zh_CN_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::symbol);
assert(p.field[1] == std::money_base::sign);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
#ifdef __APPLE__
assert_sign_symbol_none_value(p);
#else
assert_symbol_sign_none_value(p);
#endif
}
{
Fwt f(LOCALE_zh_CN_UTF_8, 1);
std::money_base::pattern p = f.pos_format();
assert(p.field[0] == std::money_base::sign);
assert(p.field[1] == std::money_base::symbol);
assert(p.field[2] == std::money_base::none);
assert(p.field[3] == std::money_base::value);
#ifdef _WIN32
assert_symbol_sign_none_value(p);
#else
assert_sign_symbol_none_value(p);
#endif
}
#endif // TEST_HAS_NO_WIDE_CHARACTERS

Expand Down