diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2015-09-06 18:46:46 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2015-09-06 18:46:46 +0000 |
commit | 61b9a7258a7693d7f3674a5a1daf7b036ff1d382 (patch) | |
tree | ec41ed70ffca97240e76f9a78bb2dedba28f310c /test/std/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp | |
parent | f857581820d15e410e9945d2fcd5f7163be25a96 (diff) | |
download | src-61b9a7258a7693d7f3674a5a1daf7b036ff1d382.tar.gz src-61b9a7258a7693d7f3674a5a1daf7b036ff1d382.zip |
Import libc++ 3.7.0 release (r246257).vendor/libc++/libc++-release_370-r246257
Notes
Notes:
svn path=/vendor/libc++/dist/; revision=287518
svn path=/vendor/libc++/libc++-release_370-r246257/; revision=287519; tag=vendor/libc++/libc++-release_370-r246257
Diffstat (limited to 'test/std/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp')
-rw-r--r-- | test/std/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/test/std/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp b/test/std/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp new file mode 100644 index 000000000000..69af9ac1b7bf --- /dev/null +++ b/test/std/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp @@ -0,0 +1,87 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <locale> + +// template <class charT> class collate_byname + +// int compare(const charT* low1, const charT* high1, +// const charT* low2, const charT* high2) const; + +// I'm currently unable to confirm that collation based on named locales +// has any difference from "C" collation. But I do believe I'm picking +// up the OS's collation files. + +// TODO investigation needed. +// Glibc seems to collate files differently from the way Apple's C library does +// it. +// XFAIL: linux-gnu + +#include <locale> +#include <string> +#include <cassert> + +#include <stdio.h> + +#include "platform_support.h" // locale name macros + +int main() +{ + { + std::locale l(LOCALE_en_US_UTF_8); + { + const std::collate<char>& f = std::use_facet<std::collate<char> >(l); + std::string s2("aaaaaaA"); + std::string s3("BaaaaaA"); + assert(f.compare(s2.data(), s2.data() + s2.size(), + s3.data(), s3.data() + s3.size()) == 1); + } + { + const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l); + std::wstring s2(L"aaaaaaA"); + std::wstring s3(L"BaaaaaA"); + assert(f.compare(s2.data(), s2.data() + s2.size(), + s3.data(), s3.data() + s3.size()) == 1); + } + } + { + std::locale l(""); + { + const std::collate<char>& f = std::use_facet<std::collate<char> >(l); + std::string s2("aaaaaaA"); + std::string s3("BaaaaaA"); + assert(f.compare(s2.data(), s2.data() + s2.size(), + s3.data(), s3.data() + s3.size()) == 1); + } + { + const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l); + std::wstring s2(L"aaaaaaA"); + std::wstring s3(L"BaaaaaA"); + assert(f.compare(s2.data(), s2.data() + s2.size(), + s3.data(), s3.data() + s3.size()) == 1); + } + } + { + std::locale l("C"); + { + const std::collate<char>& f = std::use_facet<std::collate<char> >(l); + std::string s2("aaaaaaA"); + std::string s3("BaaaaaA"); + assert(f.compare(s2.data(), s2.data() + s2.size(), + s3.data(), s3.data() + s3.size()) == 1); + } + { + const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l); + std::wstring s2(L"aaaaaaA"); + std::wstring s3(L"BaaaaaA"); + assert(f.compare(s2.data(), s2.data() + s2.size(), + s3.data(), s3.data() + s3.size()) == 1); + } + } +} |