1 //===----------------------------------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // <locale> 11 12 // template <class charT> class collate; 13 14 // int compare(const charT* low1, const charT* high1, 15 // const charT* low2, const charT* high2) const; 16 17 #include <locale> 18 #include <cassert> 19 20 int main() 21 { 22 std::locale l = std::locale::classic(); 23 { 24 const char ia[] = "1234"; 25 const unsigned sa = sizeof(ia)/sizeof(ia[0]); 26 const char ib[] = "123"; 27 const std::collate<char>& f = std::use_facet<std::collate<char> >(l); 28 assert(f.compare(ia, ia+sa, ib, ib+2) == 1); 29 assert(f.compare(ib, ib+2, ia, ia+sa) == -1); 30 assert(f.compare(ia, ia+sa, ib, ib+3) == 1); 31 assert(f.compare(ib, ib+3, ia, ia+sa) == -1); 32 assert(f.compare(ia, ia+sa, ib+1, ib+3) == -1); 33 assert(f.compare(ib+1, ib+3, ia, ia+sa) == 1); 34 assert(f.compare(ia, ia+3, ib, ib+3) == 0); 35 } 36 { 37 const wchar_t ia[] = L"1234"; 38 const unsigned sa = sizeof(ia)/sizeof(ia[0]); 39 const wchar_t ib[] = L"123"; 40 const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l); 41 assert(f.compare(ia, ia+sa, ib, ib+2) == 1); 42 assert(f.compare(ib, ib+2, ia, ia+sa) == -1); 43 assert(f.compare(ia, ia+sa, ib, ib+3) == 1); 44 assert(f.compare(ib, ib+3, ia, ia+sa) == -1); 45 assert(f.compare(ia, ia+sa, ib+1, ib+3) == -1); 46 assert(f.compare(ib+1, ib+3, ia, ia+sa) == 1); 47 assert(f.compare(ia, ia+3, ib, ib+3) == 0); 48 } 49 } 50