diff options
Diffstat (limited to 'libcxx/test/std')
| -rw-r--r-- | libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/curr_symbol.pass.cpp | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/curr_symbol.pass.cpp b/libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/curr_symbol.pass.cpp index f66d2c6330d..f04ff4fb614 100644 --- a/libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/curr_symbol.pass.cpp +++ b/libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/curr_symbol.pass.cpp @@ -61,6 +61,20 @@ public: : std::moneypunct_byname<wchar_t, true>(nm, refs) {} }; +#if defined(_CS_GNU_LIBC_VERSION) +static bool glibc_version_less_than(char const* version) { + std::string test_version = std::string("glibc ") + version; + + size_t n = confstr(_CS_GNU_LIBC_VERSION, nullptr, (size_t)0); + char *current_version = new char[n]; + confstr(_CS_GNU_LIBC_VERSION, current_version, n); + + bool result = strverscmp(current_version, test_version.c_str()) < 0; + delete[] current_version; + return result; +} +#endif + int main() { { @@ -116,17 +130,14 @@ int main() { Fnf f(LOCALE_ru_RU_UTF_8, 1); +#if defined(_CS_GNU_LIBC_VERSION) // GLIBC <= 2.23 uses currency_symbol="<U0440><U0443><U0431>" // GLIBC >= 2.24 uses currency_symbol="<U20BD>" // See also: http://www.fileformat.info/info/unicode/char/20bd/index.htm -#if defined(TEST_GLIBC_PREREQ) - #if TEST_GLIBC_PREREQ(2, 24) - #define TEST_GLIBC_2_24_CURRENCY_SYMBOL - #endif -#endif - -#if defined(TEST_GLIBC_2_24_CURRENCY_SYMBOL) - assert(f.curr_symbol() == " \u20BD"); + if (!glibc_version_less_than("2.24")) + assert(f.curr_symbol() == " \u20BD"); + else + assert(f.curr_symbol() == " \xD1\x80\xD1\x83\xD0\xB1"); #else assert(f.curr_symbol() == " \xD1\x80\xD1\x83\xD0\xB1"); #endif @@ -137,8 +148,11 @@ int main() } { Fwf f(LOCALE_ru_RU_UTF_8, 1); -#if defined(TEST_GLIBC_2_24_CURRENCY_SYMBOL) - assert(f.curr_symbol() == L" \u20BD"); +#if defined(_CS_GNU_LIBC_VERSION) + if (!glibc_version_less_than("2.24")) + assert(f.curr_symbol() == L" \u20BD"); + else + assert(f.curr_symbol() == L" \x440\x443\x431"); #else assert(f.curr_symbol() == L" \x440\x443\x431"); #endif |

