Skip to content

Commit 0087085

Browse files
committed
Simplify and improve readability of new zero-range graph_generation_test
1 parent c87e65c commit 0087085

File tree

2 files changed

+13
-22
lines changed

2 files changed

+13
-22
lines changed

include/command_graph.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,12 @@ namespace detail {
115115

116116
bool has(command_id cid) const { return commands.count(cid) == 1; }
117117

118-
template <typename T = abstract_command>
118+
abstract_command* get(command_id cid) { return commands.at(cid).get(); }
119+
120+
template <typename T>
119121
T* get(command_id cid) {
120-
assert(commands.find(cid) != commands.end());
121-
return commands[cid].get();
122+
// dynamic_cast with reference to force bad_cast to be thrown if type mismatches
123+
return &dynamic_cast<T&>(*commands.at(cid));
122124
}
123125

124126
size_t command_count() const { return commands.size(); }

test/graph_generation_tests.cc

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1515,19 +1515,15 @@ namespace detail {
15151515
const range<1> buf_range{16};
15161516
auto buf = mbf.create_buffer(buf_range);
15171517

1518-
const auto write_rm = [&](chunk<1> chnk) {
1519-
const range<1> rg{chnk.offset[0] < 8 ? 8 - chnk.offset[0] : 0};
1520-
return subrange<1>{chnk.offset, rg};
1521-
};
15221518
const auto write_tid = test_utils::build_and_flush(ctx, num_nodes,
15231519
test_utils::add_compute_task<class UKN(write)>(
1524-
tm, [&](handler& cgh) { buf.get_access<access_mode::discard_write>(cgh, write_rm); }, buf_range));
1520+
tm, [&](handler& cgh) { buf.get_access<access_mode::discard_write>(cgh, one_to_one{}); }, buf_range));
15251521

15261522
const auto read_rm = [&](chunk<1> chnk) {
1527-
subrange<1> sr;
1528-
sr.offset[0] = 4;
1529-
sr.range[0] = chnk.offset[0] + chnk.range[0] > 4 ? chnk.offset[0] + chnk.range[0] - 4 : 0;
1530-
return sr;
1523+
const auto chunk_end = chnk.offset[0] + chnk.range[0];
1524+
const auto window_start = 4;
1525+
const auto window_length = chunk_end > window_start ? chunk_end - window_start : 0;
1526+
return subrange<1>{window_start, window_length};
15311527
};
15321528
const auto read_tid = test_utils::build_and_flush(ctx, num_nodes,
15331529
test_utils::add_compute_task<class UKN(read)>(
@@ -1563,26 +1559,19 @@ namespace detail {
15631559
CHECK(!inspector.has_dependency(read_cmds[0]->get_cid(), write_cmds[0]->get_cid()));
15641560
CHECK(!inspector.has_dependency(read_cmds[1]->get_cid(), write_cmds[1]->get_cid()));
15651561

1566-
const abstract_command* push_cmd;
15671562
{
15681563
const auto pushes = inspector.get_commands(std::nullopt, std::nullopt, command_type::PUSH);
15691564
REQUIRE(pushes.size() == 1);
1570-
push_cmd = cdag.get(*pushes.begin());
1565+
const auto push_cmd = cdag.get<push_command>(*pushes.begin());
15711566
CHECK(push_cmd->get_nid() == 0);
1572-
const auto push_dependencies = push_cmd->get_dependencies();
1573-
REQUIRE(std::distance(push_dependencies.begin(), push_dependencies.end()) == 1);
1574-
CHECK(push_dependencies.begin()->node == write_cmds[0]);
1567+
CHECK(push_cmd->get_target() == 1);
15751568
}
15761569

1577-
const abstract_command* await_push_cmd;
15781570
{
15791571
const auto await_pushes = inspector.get_commands(std::nullopt, std::nullopt, command_type::AWAIT_PUSH);
15801572
REQUIRE(await_pushes.size() == 1);
1581-
await_push_cmd = cdag.get(*await_pushes.begin());
1573+
const auto await_push_cmd = cdag.get<await_push_command>(*await_pushes.begin());
15821574
CHECK(await_push_cmd->get_nid() == 1);
1583-
const auto await_push_dependents = await_push_cmd->get_dependents();
1584-
REQUIRE(std::distance(await_push_dependents.begin(), await_push_dependents.end()) == 1);
1585-
CHECK(await_push_dependents.begin()->node == read_cmds[1]);
15861575
}
15871576
}
15881577

0 commit comments

Comments
 (0)