]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/compute/test/test_equal_range.cpp
1 //---------------------------------------------------------------------------//
2 // Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com>
4 // Distributed under the Boost Software License, Version 1.0
5 // See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt
8 // See http://boostorg.github.com/compute for more information.
9 //---------------------------------------------------------------------------//
11 #define BOOST_TEST_MODULE TestEqualRange
12 #include <boost/test/unit_test.hpp>
17 #include <boost/compute/command_queue.hpp>
18 #include <boost/compute/algorithm/equal_range.hpp>
19 #include <boost/compute/container/vector.hpp>
21 #include "context_setup.hpp"
23 BOOST_AUTO_TEST_CASE(equal_range_int
)
25 int data
[] = { 1, 2, 2, 2, 3, 3, 4, 5 };
26 boost::compute::vector
<int> vector(data
, data
+ 8, queue
);
28 typedef boost::compute::vector
<int>::iterator iterator
;
30 std::pair
<iterator
, iterator
> range0
=
31 boost::compute::equal_range(vector
.begin(), vector
.end(), int(0), queue
);
32 BOOST_CHECK(range0
.first
== vector
.begin());
33 BOOST_CHECK(range0
.second
== vector
.begin());
34 BOOST_CHECK_EQUAL(std::distance(range0
.first
, range0
.second
), ptrdiff_t(0));
36 std::pair
<iterator
, iterator
> range1
=
37 boost::compute::equal_range(vector
.begin(), vector
.end(), int(1), queue
);
38 BOOST_CHECK(range1
.first
== vector
.begin());
39 BOOST_CHECK(range1
.second
== vector
.begin() + 1);
40 BOOST_CHECK_EQUAL(std::distance(range1
.first
, range1
.second
), ptrdiff_t(1));
42 std::pair
<iterator
, iterator
> range2
=
43 boost::compute::equal_range(vector
.begin(), vector
.end(), int(2), queue
);
44 BOOST_CHECK(range2
.first
== vector
.begin() + 1);
45 BOOST_CHECK(range2
.second
== vector
.begin() + 4);
46 BOOST_CHECK_EQUAL(std::distance(range2
.first
, range2
.second
), ptrdiff_t(3));
48 std::pair
<iterator
, iterator
> range3
=
49 boost::compute::equal_range(vector
.begin(), vector
.end(), int(3), queue
);
50 BOOST_CHECK(range3
.first
== vector
.begin() + 4);
51 BOOST_CHECK(range3
.second
== vector
.begin() + 6);
52 BOOST_CHECK_EQUAL(std::distance(range3
.first
, range3
.second
), ptrdiff_t(2));
54 std::pair
<iterator
, iterator
> range4
=
55 boost::compute::equal_range(vector
.begin(), vector
.end(), int(4), queue
);
56 BOOST_CHECK(range4
.first
== vector
.begin() + 6);
57 BOOST_CHECK(range4
.second
== vector
.begin() + 7);
58 BOOST_CHECK_EQUAL(std::distance(range4
.first
, range4
.second
), ptrdiff_t(1));
60 std::pair
<iterator
, iterator
> range5
=
61 boost::compute::equal_range(vector
.begin(), vector
.end(), int(5), queue
);
62 BOOST_CHECK(range5
.first
== vector
.begin() + 7);
63 BOOST_CHECK(range5
.second
== vector
.end());
64 BOOST_CHECK_EQUAL(std::distance(range5
.first
, range5
.second
), ptrdiff_t(1));
66 std::pair
<iterator
, iterator
> range6
=
67 boost::compute::equal_range(vector
.begin(), vector
.end(), int(6), queue
);
68 BOOST_CHECK(range6
.first
== vector
.end());
69 BOOST_CHECK(range6
.second
== vector
.end());
70 BOOST_CHECK_EQUAL(std::distance(range6
.first
, range6
.second
), ptrdiff_t(0));
73 BOOST_AUTO_TEST_SUITE_END()