]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/compute/test/test_flat_set.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 TestFlatSet
12 #include <boost/test/unit_test.hpp>
16 #include <boost/concept_check.hpp>
18 #include <boost/compute/system.hpp>
19 #include <boost/compute/command_queue.hpp>
20 #include <boost/compute/container/flat_set.hpp>
22 #include "context_setup.hpp"
24 namespace bc
= boost::compute
;
26 BOOST_AUTO_TEST_CASE(concept_check
)
28 BOOST_CONCEPT_ASSERT((boost::Container
<bc::flat_set
<int> >));
29 // BOOST_CONCEPT_ASSERT((boost::SimpleAssociativeContainer<bc::flat_set<int> >));
30 // BOOST_CONCEPT_ASSERT((boost::UniqueAssociativeContainer<bc::flat_set<int> >));
31 BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator
<bc::flat_set
<int>::iterator
>));
32 BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator
<bc::flat_set
<int>::const_iterator
>));
35 BOOST_AUTO_TEST_CASE(insert
)
37 bc::flat_set
<int> set(context
);
38 typedef bc::flat_set
<int>::iterator iterator
;
39 std::pair
<iterator
, bool> location
= set
.insert(12, queue
);
40 BOOST_CHECK(location
.first
== set
.begin());
41 BOOST_CHECK(location
.second
== true);
42 BOOST_CHECK_EQUAL(*location
.first
, 12);
43 BOOST_CHECK_EQUAL(set
.size(), size_t(1));
45 location
= set
.insert(12, queue
);
46 BOOST_CHECK(location
.first
== set
.begin());
47 BOOST_CHECK(location
.second
== false);
48 BOOST_CHECK_EQUAL(set
.size(), size_t(1));
50 location
= set
.insert(4, queue
);
51 BOOST_CHECK(location
.first
== set
.begin());
52 BOOST_CHECK(location
.second
== true);
53 BOOST_CHECK_EQUAL(set
.size(), size_t(2));
55 location
= set
.insert(12, queue
);
56 BOOST_CHECK(location
.first
== set
.begin() + 1);
57 BOOST_CHECK(location
.second
== false);
58 BOOST_CHECK_EQUAL(set
.size(), size_t(2));
60 location
= set
.insert(9, queue
);
61 BOOST_CHECK(location
.first
== set
.begin() + 1);
62 BOOST_CHECK(location
.second
== true);
63 BOOST_CHECK_EQUAL(set
.size(), size_t(3));
66 BOOST_AUTO_TEST_CASE(erase
)
68 bc::flat_set
<int> set(context
);
69 typedef bc::flat_set
<int>::iterator iterator
;
75 BOOST_CHECK_EQUAL(set
.size(), size_t(5));
77 iterator i
= set
.erase(set
.begin(), queue
);
79 BOOST_CHECK(i
== set
.begin() + 1);
80 BOOST_CHECK_EQUAL(set
.size(), size_t(4));
81 BOOST_CHECK_EQUAL(*set
.begin(), 2);
83 size_t count
= set
.erase(3, queue
);
85 BOOST_CHECK_EQUAL(count
, size_t(1));
86 BOOST_CHECK_EQUAL(set
.size(), size_t(3));
87 BOOST_CHECK_EQUAL(*set
.begin(), 2);
89 count
= set
.erase(9, queue
);
91 BOOST_CHECK_EQUAL(count
, size_t(0));
92 BOOST_CHECK_EQUAL(set
.size(), size_t(3));
93 BOOST_CHECK_EQUAL(*set
.begin(), 2);
95 i
= set
.erase(set
.begin() + 1, queue
);
97 BOOST_CHECK(i
== set
.begin() + 2);
98 BOOST_CHECK_EQUAL(set
.size(), size_t(2));
99 BOOST_CHECK_EQUAL(*set
.begin(), 2);
100 BOOST_CHECK_EQUAL(*(set
.end() - 1), 5);
102 set
.erase(set
.begin(), set
.end(), queue
);
104 BOOST_CHECK_EQUAL(set
.size(), size_t(0));
107 BOOST_AUTO_TEST_CASE(clear
)
109 bc::flat_set
<float> set
;
110 BOOST_CHECK(set
.empty() == true);
111 BOOST_CHECK_EQUAL(set
.size(), size_t(0));
114 BOOST_CHECK(set
.empty() == true);
115 BOOST_CHECK_EQUAL(set
.size(), size_t(0));
118 BOOST_CHECK(set
.empty() == false);
119 BOOST_CHECK_EQUAL(set
.size(), size_t(1));
122 BOOST_CHECK(set
.empty() == false);
123 BOOST_CHECK_EQUAL(set
.size(), size_t(2));
126 BOOST_CHECK(set
.empty() == true);
127 BOOST_CHECK_EQUAL(set
.size(), size_t(0));
130 BOOST_AUTO_TEST_SUITE_END()