1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
12 // template<InputIterator Iter1, InputIterator Iter2>
13 // requires HasLess<Iter1::value_type, Iter2::value_type>
14 // && HasLess<Iter2::value_type, Iter1::value_type>
16 // lexicographical_compare(Iter1 first1, Iter1 last1, Iter2 first2, Iter2 last2);
21 #include "test_iterators.h"
23 template <class Iter1, class Iter2>
27 int ia[] = {1, 2, 3, 4};
28 const unsigned sa = sizeof(ia)/sizeof(ia[0]);
30 assert(!std::lexicographical_compare(Iter1(ia), Iter1(ia+sa), Iter2(ib), Iter2(ib+2)));
31 assert( std::lexicographical_compare(Iter1(ib), Iter1(ib+2), Iter2(ia), Iter2(ia+sa)));
32 assert(!std::lexicographical_compare(Iter1(ia), Iter1(ia+sa), Iter2(ib), Iter2(ib+3)));
33 assert( std::lexicographical_compare(Iter1(ib), Iter1(ib+3), Iter2(ia), Iter2(ia+sa)));
34 assert( std::lexicographical_compare(Iter1(ia), Iter1(ia+sa), Iter2(ib+1), Iter2(ib+3)));
35 assert(!std::lexicographical_compare(Iter1(ib+1), Iter1(ib+3), Iter2(ia), Iter2(ia+sa)));
40 test<input_iterator<const int*>, input_iterator<const int*> >();
41 test<input_iterator<const int*>, forward_iterator<const int*> >();
42 test<input_iterator<const int*>, bidirectional_iterator<const int*> >();
43 test<input_iterator<const int*>, random_access_iterator<const int*> >();
44 test<input_iterator<const int*>, const int*>();
46 test<forward_iterator<const int*>, input_iterator<const int*> >();
47 test<forward_iterator<const int*>, forward_iterator<const int*> >();
48 test<forward_iterator<const int*>, bidirectional_iterator<const int*> >();
49 test<forward_iterator<const int*>, random_access_iterator<const int*> >();
50 test<forward_iterator<const int*>, const int*>();
52 test<bidirectional_iterator<const int*>, input_iterator<const int*> >();
53 test<bidirectional_iterator<const int*>, forward_iterator<const int*> >();
54 test<bidirectional_iterator<const int*>, bidirectional_iterator<const int*> >();
55 test<bidirectional_iterator<const int*>, random_access_iterator<const int*> >();
56 test<bidirectional_iterator<const int*>, const int*>();
58 test<random_access_iterator<const int*>, input_iterator<const int*> >();
59 test<random_access_iterator<const int*>, forward_iterator<const int*> >();
60 test<random_access_iterator<const int*>, bidirectional_iterator<const int*> >();
61 test<random_access_iterator<const int*>, random_access_iterator<const int*> >();
62 test<random_access_iterator<const int*>, const int*>();
64 test<const int*, input_iterator<const int*> >();
65 test<const int*, forward_iterator<const int*> >();
66 test<const int*, bidirectional_iterator<const int*> >();
67 test<const int*, random_access_iterator<const int*> >();
68 test<const int*, const int*>();