From d02fe67962c8002ddc6e0d6569128ae2645ea7fc Mon Sep 17 00:00:00 2001 From: Douglas Rumbaugh Date: Mon, 24 Jul 2023 16:49:21 -0400 Subject: VPTree: fixed knn query --- tests/vptree_tests.cpp | 74 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 65 insertions(+), 9 deletions(-) (limited to 'tests') diff --git a/tests/vptree_tests.cpp b/tests/vptree_tests.cpp index b86e1e9..894e64a 100644 --- a/tests/vptree_tests.cpp +++ b/tests/vptree_tests.cpp @@ -11,6 +11,7 @@ #include "shard/VPTree.h" #include "testing.h" +#include "vptree.hpp" #include @@ -108,6 +109,65 @@ START_TEST(t_point_lookup_miss) } +START_TEST(t_buffer_query) +{ + size_t n = 10000; + auto buffer = create_2d_sequential_mbuffer(n); + + PRec target; + target.data[0] = 120; + target.data[1] = 120; + + KNNQueryParms p; + p.k = 10; + p.point = target; + + auto state = KNNQuery::get_buffer_query_state(buffer, &p); + auto result = KNNQuery::buffer_query(buffer, state, &p); + KNNQuery::delete_buffer_query_state(state); + + std::sort(result.begin(), result.end()); + size_t start = 120 - 5; + for (size_t i=0; i p; + p.k = 10; + p.point = target; + + auto state = KNNQuery::get_buffer_query_state(buffer, &p); + auto result = KNNQuery::buffer_query(buffer, state, &p); + + KNNQuery::delete_buffer_query_state(state); + + auto vptree = VPTree(buffer); + auto state_2 = KNNQuery::get_query_state(&vptree, &p); + auto result_2 = KNNQuery::query(&vptree, state_2, &p); + KNNQuery::delete_query_state(state_2); + + std::sort(result_2.begin(), result_2.end()); + size_t start = 46; + for (size_t i=0; i