@@ -68,6 +68,13 @@ BOOST_AUTO_TEST_CASE(count_ctor)
6868 size_sum += distributed_vector.part_size (i);
6969 }
7070 BOOST_CHECK_EQUAL (distributed_vector.size (), size_sum);
71+
72+ std::vector<bc::buffer> buffers = distributed_vector.get_buffers ();
73+ for (size_t i = 0 ; i < distributed_vector.parts (); i++)
74+ {
75+ BOOST_CHECK (buffers[i].get () != 0 );
76+ BOOST_CHECK (buffers[i] == distributed_vector.get_buffer (i));
77+ }
7178}
7279
7380BOOST_AUTO_TEST_CASE (command_queue_ctor)
@@ -101,6 +108,32 @@ BOOST_AUTO_TEST_CASE(command_queue_ctor)
101108 BOOST_CHECK (distributed_equal (distributed_vector, value, distributed_queue));
102109}
103110
111+ BOOST_AUTO_TEST_CASE (command_queue_ctor_one_queue)
112+ {
113+ // construct distributed::command_queue
114+ // with only 1 device command queue
115+ bc::distributed::command_queue distributed_queue =
116+ get_distributed_queue (queue, 0 );
117+
118+ bc::uint_ value = 1 ;
119+ bc::distributed::vector<bc::uint_> distributed_vector (
120+ size_t (5 ), value, distributed_queue
121+ );
122+
123+ BOOST_CHECK (!distributed_vector.empty ());
124+ BOOST_CHECK (distributed_vector.size () == 5 );
125+ BOOST_CHECK (distributed_vector.parts () == 1 );
126+ BOOST_CHECK_EQUAL (distributed_vector.size (), distributed_vector.part_size (0 ));
127+
128+ // need to finish since back() and front()
129+ // use different (self-made) queues
130+ distributed_queue.finish ();
131+ BOOST_CHECK_EQUAL (distributed_vector.back (), value);
132+ BOOST_CHECK_EQUAL (distributed_vector.front (), value);
133+
134+ BOOST_CHECK (distributed_equal (distributed_vector, value, distributed_queue));
135+ }
136+
104137BOOST_AUTO_TEST_CASE (host_iterator_ctor)
105138{
106139 // construct distributed::command_queue
@@ -164,6 +197,15 @@ BOOST_AUTO_TEST_CASE(copy_ctor)
164197 > distributed_vector_copy3 (
165198 distributed_vector, distributed_queue2
166199 );
200+ bc::distributed::vector<bc::int_> distributed_vector_copy4 (
201+ distributed_vector, distributed_queue1
202+ );
203+ bc::distributed::vector<
204+ bc::int_,
205+ bc::distributed::default_weight_func, bc::pinned_allocator<bc::int_>
206+ > distributed_vector_copy5 (
207+ distributed_vector, distributed_queue1
208+ );
167209
168210 BOOST_CHECK (
169211 distributed_equal (distributed_vector, value, distributed_queue1)
@@ -177,6 +219,12 @@ BOOST_AUTO_TEST_CASE(copy_ctor)
177219 BOOST_CHECK (
178220 distributed_equal (distributed_vector_copy3, value, distributed_queue2)
179221 );
222+ BOOST_CHECK (
223+ distributed_equal (distributed_vector_copy4, value, distributed_queue1)
224+ );
225+ BOOST_CHECK (
226+ distributed_equal (distributed_vector_copy5, value, distributed_queue1)
227+ );
180228}
181229
182230BOOST_AUTO_TEST_CASE (at)
@@ -247,4 +295,48 @@ BOOST_AUTO_TEST_CASE(subscript_operator)
247295 );
248296}
249297
298+ BOOST_AUTO_TEST_CASE (swap)
299+ {
300+ // construct distributed::command_queue
301+ bc::distributed::command_queue distributed_queue1 =
302+ get_distributed_queue (queue);
303+ // construct 2nd distributed::command_queue
304+ bc::distributed::command_queue distributed_queue2 =
305+ get_distributed_queue (queue, 2 );
306+
307+ bc::int_ value1 = -88 ;
308+ bc::int_ value2 = 99 ;
309+ size_t size1 = 64 ;
310+ size_t size2 = 48 ;
311+
312+ bc::distributed::vector<bc::int_> distributed_vector1 (
313+ size1, value1, distributed_queue1
314+ );
315+ bc::distributed::vector<bc::int_> distributed_vector2 (
316+ size2, value2, distributed_queue2
317+ );
318+
319+ BOOST_CHECK_EQUAL (distributed_vector1.size (), size1);
320+ BOOST_CHECK (
321+ distributed_equal (distributed_vector1, value1, distributed_queue1)
322+ );
323+ BOOST_CHECK_EQUAL (distributed_vector2.size (), size2);
324+ BOOST_CHECK (
325+ distributed_equal (distributed_vector2, value2, distributed_queue2)
326+ );
327+ distributed_queue1.finish ();
328+ distributed_queue2.finish ();
329+
330+ distributed_vector1.swap (distributed_vector2);
331+
332+ BOOST_CHECK_EQUAL (distributed_vector1.size (), size2);
333+ BOOST_CHECK (
334+ distributed_equal (distributed_vector1, value2, distributed_queue2)
335+ );
336+ BOOST_CHECK_EQUAL (distributed_vector2.size (), size1);
337+ BOOST_CHECK (
338+ distributed_equal (distributed_vector2, value1, distributed_queue1)
339+ );
340+ }
341+
250342BOOST_AUTO_TEST_SUITE_END ()
0 commit comments