MCPcopy Create free account
hub / github.com/AdaptiveCpp/AdaptiveCpp / BOOST_AUTO_TEST_CASE

Function BOOST_AUTO_TEST_CASE

tests/runtime/data.cpp:23–80  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

21
22BOOST_FIXTURE_TEST_SUITE(data, reset_device_fixture)
23BOOST_AUTO_TEST_CASE(page_table) {
24 rt::range_store::rect full_range{rt::id<3>{0, 0, 0},
25 rt::range<3>{16, 16, 16}};
26 rt::range_store::rect fill_subrange{rt::id<3>{2, 3, 4},
27 rt::range<3>{4, 4, 4}};
28 rt::range_store::rect intersection_subrange(rt::id<3>{2, 2, 2},
29 rt::range<3>{4, 4, 4});
30
31 struct input_configuration {
32 rt::range_store::rect page_table_size;
33 rt::range_store::rect filled_subrange;
34 rt::range_store::rect intersection_subrange;
35 std::vector<rt::range_store::rect> expected_intersections;
36 };
37
38 // TODO Test more configurations
39 std::vector<input_configuration> configurations {
40 {
41 rt::range_store::rect{rt::id<3>{0, 0, 0}, rt::range<3>{16, 16, 16}},
42 rt::range_store::rect{rt::id<3>{2, 3, 4}, rt::range<3>{4, 4, 4}},
43 rt::range_store::rect{rt::id<3>{2, 2, 2}, rt::range<3>{4, 4, 4}},
44 {
45 rt::range_store::rect{rt::id<3>{2,3,4}, rt::range<3>{4,3,2}}
46 }
47 }
48 };
49
50 for (auto config : configurations) {
51
52 auto full_range = config.page_table_size;
53 auto fill_subrange = config.filled_subrange;
54 auto intersection_subrange = config.intersection_subrange;
55
56 rt::range_store pt(full_range.second);
57
58 BOOST_CHECK(
59 pt.entire_range_equals(full_range, rt::range_store::data_state::empty));
60 BOOST_CHECK(pt.entire_range_empty(full_range));
61 BOOST_CHECK(!pt.entire_range_filled(full_range));
62 BOOST_CHECK(pt.get_size() == full_range.second);
63
64 pt.add(fill_subrange);
65 BOOST_CHECK(!pt.entire_range_filled(full_range));
66 BOOST_CHECK(!pt.entire_range_empty(full_range));
67 BOOST_CHECK(pt.entire_range_filled(fill_subrange));
68
69 std::vector<rt::range_store::rect> intersections;
70 pt.intersections_with(intersection_subrange, intersections);
71 // We require that the set of returned subranges is the same, but not
72 // necessarily the order in which the subranges are returned
73 BOOST_CHECK(intersections.size() == config.expected_intersections.size());
74 for (auto sub_range : intersections) {
75 auto it = std::find(config.expected_intersections.begin(),
76 config.expected_intersections.end(), sub_range);
77 BOOST_CHECK(it != config.expected_intersections.end());
78 }
79 }
80}

Callers 1

device_manager.cppFile · 0.70

Calls 10

entire_range_equalsMethod · 0.80
entire_range_emptyMethod · 0.80
entire_range_filledMethod · 0.80
findFunction · 0.50
get_sizeMethod · 0.45
addMethod · 0.45
intersections_withMethod · 0.45
sizeMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected