]>
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
);
41 BOOST_CHECK(location
.first
== set
.begin());
42 BOOST_CHECK(location
.second
== true);
43 BOOST_CHECK_EQUAL(*location
.first
, 12);
44 BOOST_CHECK_EQUAL(set
.size(), size_t(1));
46 location
= set
.insert(12, queue
);
48 BOOST_CHECK(location
.first
== set
.begin());
49 BOOST_CHECK(location
.second
== false);
50 BOOST_CHECK_EQUAL(set
.size(), size_t(1));
52 location
= set
.insert(4, queue
);
54 BOOST_CHECK(location
.first
== set
.begin());
55 BOOST_CHECK(location
.second
== true);
56 BOOST_CHECK_EQUAL(set
.size(), size_t(2));
58 location
= set
.insert(12, queue
);
60 BOOST_CHECK(location
.first
== set
.begin() + 1);
61 BOOST_CHECK(location
.second
== false);
62 BOOST_CHECK_EQUAL(set
.size(), size_t(2));
64 location
= set
.insert(9, queue
);
66 BOOST_CHECK(location
.first
== set
.begin() + 1);
67 BOOST_CHECK(location
.second
== true);
68 BOOST_CHECK_EQUAL(set
.size(), size_t(3));
71 BOOST_AUTO_TEST_CASE(erase
)
73 bc::flat_set
<int> set(context
);
74 typedef bc::flat_set
<int>::iterator iterator
;
81 BOOST_CHECK_EQUAL(set
.size(), size_t(5));
83 iterator i
= set
.erase(set
.begin(), queue
);
85 BOOST_CHECK(i
== set
.begin() + 1);
86 BOOST_CHECK_EQUAL(set
.size(), size_t(4));
87 BOOST_CHECK_EQUAL(*set
.begin(), 2);
89 size_t count
= set
.erase(3, queue
);
91 BOOST_CHECK_EQUAL(count
, size_t(1));
92 BOOST_CHECK_EQUAL(set
.size(), size_t(3));
93 BOOST_CHECK_EQUAL(*set
.begin(), 2);
95 count
= set
.erase(9, queue
);
97 BOOST_CHECK_EQUAL(count
, size_t(0));
98 BOOST_CHECK_EQUAL(set
.size(), size_t(3));
99 BOOST_CHECK_EQUAL(*set
.begin(), 2);
101 i
= set
.erase(set
.begin() + 1, queue
);
103 BOOST_CHECK(i
== set
.begin() + 2);
104 BOOST_CHECK_EQUAL(set
.size(), size_t(2));
105 BOOST_CHECK_EQUAL(*set
.begin(), 2);
106 BOOST_CHECK_EQUAL(*(set
.end() - 1), 5);
108 set
.erase(set
.begin(), set
.end(), queue
);
110 BOOST_CHECK_EQUAL(set
.size(), size_t(0));
113 BOOST_AUTO_TEST_CASE(clear
)
115 bc::flat_set
<float> set
;
116 BOOST_CHECK(set
.empty() == true);
117 BOOST_CHECK_EQUAL(set
.size(), size_t(0));
120 BOOST_CHECK(set
.empty() == true);
121 BOOST_CHECK_EQUAL(set
.size(), size_t(0));
124 BOOST_CHECK(set
.empty() == false);
125 BOOST_CHECK_EQUAL(set
.size(), size_t(1));
128 BOOST_CHECK(set
.empty() == false);
129 BOOST_CHECK_EQUAL(set
.size(), size_t(2));
132 BOOST_CHECK(set
.empty() == true);
133 BOOST_CHECK_EQUAL(set
.size(), size_t(0));
136 BOOST_AUTO_TEST_SUITE_END()