]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/compute/test/test_flat_set.cpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / compute / test / test_flat_set.cpp
1 //---------------------------------------------------------------------------//
2 // Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com>
3 //
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
7 //
8 // See http://boostorg.github.com/compute for more information.
9 //---------------------------------------------------------------------------//
10
11 #define BOOST_TEST_MODULE TestFlatSet
12 #include <boost/test/unit_test.hpp>
13
14 #include <utility>
15
16 #include <boost/concept_check.hpp>
17
18 #include <boost/compute/system.hpp>
19 #include <boost/compute/command_queue.hpp>
20 #include <boost/compute/container/flat_set.hpp>
21
22 #include "context_setup.hpp"
23
24 namespace bc = boost::compute;
25
26 BOOST_AUTO_TEST_CASE(concept_check)
27 {
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>));
33 }
34
35 BOOST_AUTO_TEST_CASE(insert)
36 {
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));
44
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));
49
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));
54
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));
59
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));
64 }
65
66 BOOST_AUTO_TEST_CASE(erase)
67 {
68 bc::flat_set<int> set(context);
69 typedef bc::flat_set<int>::iterator iterator;
70 set.insert(1, queue);
71 set.insert(2, queue);
72 set.insert(3, queue);
73 set.insert(4, queue);
74 set.insert(5, queue);
75 BOOST_CHECK_EQUAL(set.size(), size_t(5));
76
77 iterator i = set.erase(set.begin(), queue);
78 queue.finish();
79 BOOST_CHECK(i == set.begin() + 1);
80 BOOST_CHECK_EQUAL(set.size(), size_t(4));
81 BOOST_CHECK_EQUAL(*set.begin(), 2);
82
83 size_t count = set.erase(3, queue);
84 queue.finish();
85 BOOST_CHECK_EQUAL(count, size_t(1));
86 BOOST_CHECK_EQUAL(set.size(), size_t(3));
87 BOOST_CHECK_EQUAL(*set.begin(), 2);
88
89 count = set.erase(9, queue);
90 queue.finish();
91 BOOST_CHECK_EQUAL(count, size_t(0));
92 BOOST_CHECK_EQUAL(set.size(), size_t(3));
93 BOOST_CHECK_EQUAL(*set.begin(), 2);
94
95 i = set.erase(set.begin() + 1, queue);
96 queue.finish();
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);
101
102 set.erase(set.begin(), set.end(), queue);
103 queue.finish();
104 BOOST_CHECK_EQUAL(set.size(), size_t(0));
105 }
106
107 BOOST_AUTO_TEST_CASE(clear)
108 {
109 bc::flat_set<float> set;
110 BOOST_CHECK(set.empty() == true);
111 BOOST_CHECK_EQUAL(set.size(), size_t(0));
112
113 set.clear();
114 BOOST_CHECK(set.empty() == true);
115 BOOST_CHECK_EQUAL(set.size(), size_t(0));
116
117 set.insert(3.14f);
118 BOOST_CHECK(set.empty() == false);
119 BOOST_CHECK_EQUAL(set.size(), size_t(1));
120
121 set.insert(4.184f);
122 BOOST_CHECK(set.empty() == false);
123 BOOST_CHECK_EQUAL(set.size(), size_t(2));
124
125 set.clear();
126 BOOST_CHECK(set.empty() == true);
127 BOOST_CHECK_EQUAL(set.size(), size_t(0));
128 }
129
130 BOOST_AUTO_TEST_SUITE_END()