Hi mclow.lists, danalbert,

GLIBC collates en_US differently than Apple libc. Perhaps we should just XFAIL.

http://reviews.llvm.org/D5000

Files:
  
test/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp

Index: 
test/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp
===================================================================
--- 
test/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp
+++ 
test/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp
@@ -28,6 +28,14 @@
 
 int main()
 {
+    // Ensure that the default locale is known. Othewise the second test could 
fail.
+    putenv(const_cast<char*>("LANG=" LOCALE_en_US_UTF_8));
+    // GLIBC collates en_US differently
+#if !defined(__GLIBC__)
+    int const expect = 1;
+#else
+    int const expect = -1;
+#endif
     {
         std::locale l(LOCALE_en_US_UTF_8);
         {
@@ -35,14 +43,14 @@
             std::string s2("aaaaaaA");
             std::string s3("BaaaaaA");
             assert(f.compare(s2.data(), s2.data() + s2.size(),
-                             s3.data(), s3.data() + s3.size()) == 1);
+                             s3.data(), s3.data() + s3.size()) == expect);
         }
         {
             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);
+                             s3.data(), s3.data() + s3.size()) == expect);
         }
     }
     {
@@ -52,14 +60,14 @@
             std::string s2("aaaaaaA");
             std::string s3("BaaaaaA");
             assert(f.compare(s2.data(), s2.data() + s2.size(),
-                             s3.data(), s3.data() + s3.size()) == 1);
+                             s3.data(), s3.data() + s3.size()) == expect);
         }
         {
             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);
+                             s3.data(), s3.data() + s3.size()) == expect);
         }
     }
     {
Index: test/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp
===================================================================
--- test/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp
+++ test/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp
@@ -28,6 +28,14 @@
 
 int main()
 {
+    // Ensure that the default locale is known. Othewise the second test could fail.
+    putenv(const_cast<char*>("LANG=" LOCALE_en_US_UTF_8));
+    // GLIBC collates en_US differently
+#if !defined(__GLIBC__)
+    int const expect = 1;
+#else
+    int const expect = -1;
+#endif
     {
         std::locale l(LOCALE_en_US_UTF_8);
         {
@@ -35,14 +43,14 @@
             std::string s2("aaaaaaA");
             std::string s3("BaaaaaA");
             assert(f.compare(s2.data(), s2.data() + s2.size(),
-                             s3.data(), s3.data() + s3.size()) == 1);
+                             s3.data(), s3.data() + s3.size()) == expect);
         }
         {
             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);
+                             s3.data(), s3.data() + s3.size()) == expect);
         }
     }
     {
@@ -52,14 +60,14 @@
             std::string s2("aaaaaaA");
             std::string s3("BaaaaaA");
             assert(f.compare(s2.data(), s2.data() + s2.size(),
-                             s3.data(), s3.data() + s3.size()) == 1);
+                             s3.data(), s3.data() + s3.size()) == expect);
         }
         {
             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);
+                             s3.data(), s3.data() + s3.size()) == expect);
         }
     }
     {
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to