@@ -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,9 @@ 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+ );
167203
168204 BOOST_CHECK (
169205 distributed_equal (distributed_vector, value, distributed_queue1)
@@ -177,6 +213,9 @@ BOOST_AUTO_TEST_CASE(copy_ctor)
177213 BOOST_CHECK (
178214 distributed_equal (distributed_vector_copy3, value, distributed_queue2)
179215 );
216+ BOOST_CHECK (
217+ distributed_equal (distributed_vector_copy4, value, distributed_queue1)
218+ );
180219}
181220
182221BOOST_AUTO_TEST_CASE (at)
@@ -247,4 +286,48 @@ BOOST_AUTO_TEST_CASE(subscript_operator)
247286 );
248287}
249288
289+ BOOST_AUTO_TEST_CASE (swap)
290+ {
291+ // construct distributed::command_queue
292+ bc::distributed::command_queue distributed_queue1 =
293+ get_distributed_queue (queue);
294+ // construct 2nd distributed::command_queue
295+ bc::distributed::command_queue distributed_queue2 =
296+ get_distributed_queue (queue, 2 );
297+
298+ bc::int_ value1 = -88 ;
299+ bc::int_ value2 = 99 ;
300+ size_t size1 = 64 ;
301+ size_t size2 = 48 ;
302+
303+ bc::distributed::vector<bc::int_> distributed_vector1 (
304+ size1, value1, distributed_queue1
305+ );
306+ bc::distributed::vector<bc::int_> distributed_vector2 (
307+ size2, value2, distributed_queue2
308+ );
309+
310+ BOOST_CHECK_EQUAL (distributed_vector1.size (), size1);
311+ BOOST_CHECK (
312+ distributed_equal (distributed_vector1, value1, distributed_queue1)
313+ );
314+ BOOST_CHECK_EQUAL (distributed_vector2.size (), size2);
315+ BOOST_CHECK (
316+ distributed_equal (distributed_vector2, value2, distributed_queue2)
317+ );
318+ distributed_queue1.finish ();
319+ distributed_queue2.finish ();
320+
321+ distributed_vector1.swap (distributed_vector2);
322+
323+ BOOST_CHECK_EQUAL (distributed_vector1.size (), size2);
324+ BOOST_CHECK (
325+ distributed_equal (distributed_vector1, value2, distributed_queue2)
326+ );
327+ BOOST_CHECK_EQUAL (distributed_vector2.size (), size1);
328+ BOOST_CHECK (
329+ distributed_equal (distributed_vector2, value1, distributed_queue1)
330+ );
331+ }
332+
250333BOOST_AUTO_TEST_SUITE_END ()
0 commit comments