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<ForwardIterator Iter, class T>
13 // requires HasLess<T, Iter::value_type>
15 // upper_bound(Iter first, Iter last, const T& value);
22 #include "test_iterators.h"
24 template <class Iter, class T>
26 test(Iter first, Iter last, const T& value)
28 Iter i = std::upper_bound(first, last, value);
29 for (Iter j = first; j != i; ++j)
30 assert(!(value < *j));
31 for (Iter j = i; j != last; ++j)
39 const unsigned N = 1000;
41 std::vector<int> v(N);
43 for (std::size_t i = 0; i < v.size(); ++i)
49 std::sort(v.begin(), v.end());
50 for (x = 0; x <= M; ++x)
51 test(Iter(v.data()), Iter(v.data()+v.size()), x);
56 int d[] = {0, 1, 2, 3};
57 for (int* e = d; e <= d+4; ++e)
58 for (int x = -1; x <= 4; ++x)
61 test<forward_iterator<const int*> >();
62 test<bidirectional_iterator<const int*> >();
63 test<random_access_iterator<const int*> >();