compare.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
1//===----------------------------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. 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 21int main() 22{ 23 std::locale l = std::locale::classic(); 24 { 25 const char ia[] = "1234"; 26 const unsigned sa = sizeof(ia)/sizeof(ia[0]); 27 const char ib[] = "123"; 28 const std::collate<char>& f = std::use_facet<std::collate<char> >(l); 29 assert(f.compare(ia, ia+sa, ib, ib+2) == 1); 30 assert(f.compare(ib, ib+2, ia, ia+sa) == -1); 31 assert(f.compare(ia, ia+sa, ib, ib+3) == 1); 32 assert(f.compare(ib, ib+3, ia, ia+sa) == -1); 33 assert(f.compare(ia, ia+sa, ib+1, ib+3) == -1); 34 assert(f.compare(ib+1, ib+3, ia, ia+sa) == 1); 35 assert(f.compare(ia, ia+3, ib, ib+3) == 0); 36 } 37 { 38 const wchar_t ia[] = L"1234"; 39 const unsigned sa = sizeof(ia)/sizeof(ia[0]); 40 const wchar_t ib[] = L"123"; 41 const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l); 42 assert(f.compare(ia, ia+sa, ib, ib+2) == 1); 43 assert(f.compare(ib, ib+2, ia, ia+sa) == -1); 44 assert(f.compare(ia, ia+sa, ib, ib+3) == 1); 45 assert(f.compare(ib, ib+3, ia, ia+sa) == -1); 46 assert(f.compare(ia, ia+sa, ib+1, ib+3) == -1); 47 assert(f.compare(ib+1, ib+3, ia, ia+sa) == 1); 48 assert(f.compare(ia, ia+3, ib, ib+3) == 0); 49 } 50} 51