diff --git a/tests/unit/test_fvm_multi.cpp b/tests/unit/test_fvm_multi.cpp index 568241b0532eb17f4e5e03b4ab8e8c3a6999c2c4..68d25afa43d30b50b2b018904e4e327691695870 100644 --- a/tests/unit/test_fvm_multi.cpp +++ b/tests/unit/test_fvm_multi.cpp @@ -328,7 +328,7 @@ struct handle_info { // test handle <-> mechanism/index correspondence // on a two-cell ball-and-stick system. -void run_target_handle_test(std::vector<handle_info> handles) { +void run_target_handle_test(std::vector<handle_info> all_handles) { using namespace nest::mc; nest::mc::cell cells[] = { @@ -344,7 +344,9 @@ void run_target_handle_test(std::vector<handle_info> handles) { EXPECT_EQ(4u, cells[1].segment(1)->num_compartments()); EXPECT_EQ(5u, cells[1].num_compartments()); - for (auto& x: handles) { + std::vector<std::vector<handle_info>> handles(2); + + for (auto x: all_handles) { unsigned seg_id; double pos; @@ -368,9 +370,10 @@ void run_target_handle_test(std::vector<handle_info> handles) { } cells[x.cell].add_synapse({seg_id, pos}, parameter_list(x.mech)); + handles[x.cell].push_back(x); } - auto n = handles.size(); + auto n = all_handles.size(); std::vector<fvm_cell::target_handle> targets(n); std::vector<fvm_cell::probe_handle> probes; @@ -378,12 +381,16 @@ void run_target_handle_test(std::vector<handle_info> handles) { fvcell.initialize(cells, targets, probes); ASSERT_EQ(n, util::size(targets)); - for (std::size_t i = 0; i<n; ++i) { - // targets are represented by a pair of mechanism index and instance index - const auto& mech = fvcell.mechanisms()[targets[i].first]; - const auto& cvidx = mech->node_index(); - EXPECT_EQ(handles[i].mech, mech->name()); - EXPECT_EQ(handles[i].cv, cvidx[targets[i].second]); + unsigned i = 0; + for (unsigned ci = 0; ci<=1; ++ci) { + for (auto h: handles[ci]) { + // targets are represented by a pair of mechanism index and instance index + const auto& mech = fvcell.mechanisms()[targets[i].first]; + const auto& cvidx = mech->node_index(); + EXPECT_EQ(h.mech, mech->name()); + EXPECT_EQ(h.cv, cvidx[targets[i].second]); + ++i; + } } } @@ -414,32 +421,17 @@ TEST(fvm_multi, target_handles_onecell) run_target_handle_test(handles1); } -TEST(fvm_multi, target_handles_twocell_sorted) +TEST(fvm_multi, target_handles_twocell) { - SCOPED_TRACE("handles: expsyn only on cells 0 and 1, cvs sorted"); + SCOPED_TRACE("handles: expsyn only on cells 0 and 1"); std::vector<handle_info> handles = { {0, "expsyn", 0}, + {1, "expsyn", 3}, {0, "expsyn", 2}, - {0, "expsyn", 4}, - {1, "expsyn", 1}, {1, "expsyn", 2}, - {1, "expsyn", 3}, - {1, "expsyn", 4} - }; - run_target_handle_test(handles); -} - -TEST(fvm_multi, target_handles_twocell_unsorted) -{ - SCOPED_TRACE("handles: expsyn only on cells 0 and 1, cvs unsorted"); - std::vector<handle_info> handles = { {0, "expsyn", 4}, - {1, "expsyn", 4}, - {1, "expsyn", 3}, - {0, "expsyn", 2}, - {0, "expsyn", 0}, {1, "expsyn", 1}, - {1, "expsyn", 2} + {1, "expsyn", 4} }; run_target_handle_test(handles); } @@ -464,10 +456,10 @@ TEST(fvm_multi, target_handles_general) SCOPED_TRACE("handles: expsyn and exp2syn on cells 0 and 1"); std::vector<handle_info> handles = { {0, "expsyn", 4}, - {1, "exp2syn", 4}, - {1, "expsyn", 3}, {0, "exp2syn", 2}, {0, "exp2syn", 0}, + {1, "exp2syn", 4}, + {1, "expsyn", 3}, {1, "expsyn", 1}, {1, "expsyn", 2} };