Skip to content

Commit 0601a35

Browse files
committed
Add new tests for distributed::vector
1 parent 95b7773 commit 0601a35

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

test/test_distributed_vector.cpp

+83
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,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

182221
BOOST_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+
250333
BOOST_AUTO_TEST_SUITE_END()

0 commit comments

Comments
 (0)