Skip to content

Commit 6067c3b

Browse files
committed
Add new tests for distributed::vector
1 parent a632361 commit 6067c3b

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed

test/test_distributed_vector.cpp

+92
Original file line numberDiff line numberDiff line change
@@ -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

7380
BOOST_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+
104137
BOOST_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

182230
BOOST_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+
250342
BOOST_AUTO_TEST_SUITE_END()

0 commit comments

Comments
 (0)