Skip to content
Snippets Groups Projects
Commit 6db581c1 authored by noraabiakar's avatar noraabiakar Committed by Sam Yates
Browse files

Assertion fix (#663)

Events arrive already sorted first by index then by time. 
* Remove sort by event index.
* Replace assertion that events are sorted by time with assertion that they are sorted by index. Assertion that the subrange of events with the same index is sorted by time already exists.
parent 712070f1
No related branches found
No related tags found
No related merge requests found
......@@ -62,9 +62,8 @@ public:
throw arbor_internal_error("multicore/multi_event_stream: too many events for size type");
}
// Sort by index (staged events should already be time-sorted).
arb_assert(util::is_sorted_by(staged, [](const Event& ev) { return event_time(ev); }));
util::stable_sort_by(staged, [](const Event& ev) { return event_index(ev); });
// Staged events should already be sorted by index.
arb_assert(util::is_sorted_by(staged, [](const Event& ev) { return event_index(ev); }));
std::size_t n_ev = staged.size();
util::assign_by(ev_data_, staged, [](const Event& ev) { return event_data(ev); });
......
......@@ -29,9 +29,9 @@ namespace {
// cell_3 (handle 3) has one event at t=3
std::vector<deliverable_event> common_events = {
deliverable_event(2.f, handle[1], 2.f),
deliverable_event(3.f, handle[0], 1.f),
deliverable_event(3.f, handle[3], 4.f),
deliverable_event(2.f, handle[1], 2.f),
deliverable_event(5.f, handle[2], 3.f)
};
}
......@@ -51,7 +51,7 @@ TEST(multi_event_stream, init) {
EXPECT_EQ(n_cell, m.n_streams());
auto events = common_events;
ASSERT_TRUE(util::is_sorted_by(events, [](deliverable_event e) { return event_time(e); }));
ASSERT_TRUE(util::is_sorted_by(events, [](deliverable_event e) { return event_index(e); }));
m.init(events);
EXPECT_FALSE(m.empty());
......@@ -66,7 +66,7 @@ TEST(multi_event_stream, mark) {
ASSERT_EQ(n_cell, m.n_streams());
auto events = common_events;
ASSERT_TRUE(util::is_sorted_by(events, [](deliverable_event e) { return event_time(e); }));
ASSERT_TRUE(util::is_sorted_by(events, [](deliverable_event e) { return event_index(e); }));
m.init(events);
for (cell_size_type i = 0; i<n_cell; ++i) {
......@@ -176,7 +176,7 @@ TEST(multi_event_stream, time_if_before) {
ASSERT_EQ(n_cell, m.n_streams());
auto events = common_events;
ASSERT_TRUE(util::is_sorted_by(events, [](deliverable_event e) { return event_time(e); }));
ASSERT_TRUE(util::is_sorted_by(events, [](deliverable_event e) { return event_index(e); }));
m.init(events);
// Test times less than all event times (first event at t=2).
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment