@@ -68,6 +68,13 @@ BOOST_AUTO_TEST_CASE(count_ctor)
68
68
size_sum += distributed_vector.part_size (i);
69
69
}
70
70
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
+ }
71
78
}
72
79
73
80
BOOST_AUTO_TEST_CASE (command_queue_ctor)
@@ -101,6 +108,32 @@ BOOST_AUTO_TEST_CASE(command_queue_ctor)
101
108
BOOST_CHECK (distributed_equal (distributed_vector, value, distributed_queue));
102
109
}
103
110
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
+
104
137
BOOST_AUTO_TEST_CASE (host_iterator_ctor)
105
138
{
106
139
// construct distributed::command_queue
@@ -164,6 +197,9 @@ BOOST_AUTO_TEST_CASE(copy_ctor)
164
197
> distributed_vector_copy3 (
165
198
distributed_vector, distributed_queue2
166
199
);
200
+ bc::distributed::vector<bc::int_> distributed_vector_copy4 (
201
+ distributed_vector, distributed_queue1
202
+ );
167
203
168
204
BOOST_CHECK (
169
205
distributed_equal (distributed_vector, value, distributed_queue1)
@@ -177,6 +213,9 @@ BOOST_AUTO_TEST_CASE(copy_ctor)
177
213
BOOST_CHECK (
178
214
distributed_equal (distributed_vector_copy3, value, distributed_queue2)
179
215
);
216
+ BOOST_CHECK (
217
+ distributed_equal (distributed_vector_copy4, value, distributed_queue1)
218
+ );
180
219
}
181
220
182
221
BOOST_AUTO_TEST_CASE (at)
@@ -247,4 +286,48 @@ BOOST_AUTO_TEST_CASE(subscript_operator)
247
286
);
248
287
}
249
288
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
+
250
333
BOOST_AUTO_TEST_SUITE_END ()
0 commit comments