diff --git a/arbor/backends/multicore/multi_event_stream.hpp b/arbor/backends/multicore/multi_event_stream.hpp index aa0bea06b1095c38bb937e9b1d0b3a3feb60fb54..ae189364200433be039f6b11d8652808ece85014 100644 --- a/arbor/backends/multicore/multi_event_stream.hpp +++ b/arbor/backends/multicore/multi_event_stream.hpp @@ -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); }); diff --git a/test/unit/test_multi_event_stream.cpp b/test/unit/test_multi_event_stream.cpp index d471a7ba1723275cce7333e84348637cc760bec1..22e68efad33c956116269bc2fbd0272cb94591e3 100644 --- a/test/unit/test_multi_event_stream.cpp +++ b/test/unit/test_multi_event_stream.cpp @@ -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).