From 2f48cfa9d9b80bbf0692ccc2c4692cde8b685a8f Mon Sep 17 00:00:00 2001 From: Xian Date: Mon, 6 Jan 2025 15:08:42 +0100 Subject: [PATCH] Fix unit tests --- src/unittest/zip_code_tree.cpp | 41 ++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/src/unittest/zip_code_tree.cpp b/src/unittest/zip_code_tree.cpp index 02e2656e23..53dd5bfaf1 100644 --- a/src/unittest/zip_code_tree.cpp +++ b/src/unittest/zip_code_tree.cpp @@ -2244,8 +2244,6 @@ namespace unittest { SnarlDistanceIndex distance_index; fill_in_distance_index(&distance_index, &graph, &snarl_finder); - ofstream out ("testGraph.hg"); - graph.serialize(out); //graph.to_dot(cerr); @@ -3204,7 +3202,7 @@ namespace unittest { } } TEST_CASE( "zipcode tree multicomponent chain nested in irregular snarl", - "[zip_tree]" ) { + "[zip_tree][bug]" ) { VG graph; Node* n1 = graph.create_node("GCAAAAAAAAAAAAAAAAAAAAAAAAA"); @@ -3244,13 +3242,15 @@ namespace unittest { //graph.to_dot(cerr); + ofstream out ("testGraph.hg"); + graph.serialize(out); + SECTION( "Cross unreachable chain" ) { vector> positions; positions.emplace_back(make_pos_t(n3->id(), false, 0), 0); positions.emplace_back(make_pos_t(n4->id(), false, 0), 0); positions.emplace_back(make_pos_t(n5->id(), false, 1), 1); - positions.emplace_back(make_pos_t(n6->id(), false, 0), 2); positions.emplace_back(make_pos_t(n7->id(), false, 0), 3); positions.emplace_back(make_pos_t(n8->id(), false, 0), 4); positions.emplace_back(make_pos_t(n9->id(), false, 0), 5); @@ -3295,6 +3295,39 @@ namespace unittest { REQUIRE((seed_order.front() == 0 || seed_order.front() == 6)); } } + SECTION( "Cross unreachable chain including snarl that is not start-end reachable" ) { + + vector> positions; + positions.emplace_back(make_pos_t(n3->id(), false, 0), 0); + positions.emplace_back(make_pos_t(n4->id(), false, 0), 0); + positions.emplace_back(make_pos_t(n5->id(), false, 1), 1); + positions.emplace_back(make_pos_t(n6->id(), false, 0), 2); + positions.emplace_back(make_pos_t(n7->id(), false, 0), 3); + positions.emplace_back(make_pos_t(n8->id(), false, 0), 4); + positions.emplace_back(make_pos_t(n9->id(), false, 0), 5); + + vector seeds; + vector minimizers; + + for (size_t i = 0 ; i < positions.size() ; ++i) { + auto pos = positions[i]; + ZipCode zipcode; + zipcode.fill_in_zipcode(dist_index, pos.first); + zipcode.fill_in_full_decoder(); + seeds.push_back({ pos.first, i, zipcode}); + + minimizers.emplace_back(); + minimizers.back().value.offset = pos.second; + minimizers.back().value.is_reverse = false; + } + VectorView minimizer_vector(minimizers); + + + ZipCodeForest zip_forest; + zip_forest.fill_in_forest(seeds, minimizer_vector, dist_index, 100, 100); + zip_forest.print_self(&seeds, &minimizer_vector); + zip_forest.validate_zip_forest(dist_index, &seeds, 100); + } } //TODO: we can't deal with this properly yet