summaryrefslogtreecommitdiffstats
path: root/tests/pgm_tests.cpp
diff options
context:
space:
mode:
authorDouglas Rumbaugh <dbr4@psu.edu>2023-06-05 14:25:19 -0400
committerDouglas Rumbaugh <dbr4@psu.edu>2023-06-05 14:25:19 -0400
commitd47eeea719448f649e93b6a9ec7593b4cb2fb40e (patch)
tree0880f4c5b2c2881adb5dce5afa8474b6ccd54450 /tests/pgm_tests.cpp
parent79b5e0b630ee9f53535fc8469e450024af7439e1 (diff)
downloaddynamic-extension-d47eeea719448f649e93b6a9ec7593b4cb2fb40e.tar.gz
Added TrieSpline and PGM Range queries + tests and bugfixes
Diffstat (limited to 'tests/pgm_tests.cpp')
-rw-r--r--tests/pgm_tests.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/pgm_tests.cpp b/tests/pgm_tests.cpp
index 33979ae..254de03 100644
--- a/tests/pgm_tests.cpp
+++ b/tests/pgm_tests.cpp
@@ -139,6 +139,60 @@ START_TEST(t_point_lookup_miss)
}
+START_TEST(t_range_query)
+{
+ auto buffer = create_sequential_mbuffer<Rec>(100, 1000);
+ auto shard = Shard(buffer);
+
+ pgm_range_query_parms<Rec> parms;
+ parms.lower_bound = 300;
+ parms.upper_bound = 500;
+
+ auto state = PGMRangeQuery<Rec>::get_query_state(&shard, &parms);
+ auto result = PGMRangeQuery<Rec>::query(&shard, state, &parms);
+ PGMRangeQuery<Rec>::delete_query_state(state);
+
+ ck_assert_int_eq(result.size(), parms.upper_bound - parms.lower_bound + 1);
+ for (size_t i=0; i<result.size(); i++) {
+ ck_assert_int_le(result[i].rec.key, parms.upper_bound);
+ ck_assert_int_ge(result[i].rec.key, parms.lower_bound);
+ }
+
+ delete buffer;
+}
+END_TEST
+
+
+START_TEST(t_buffer_range_query)
+{
+ auto buffer = create_sequential_mbuffer<Rec>(100, 1000);
+
+ pgm_range_query_parms<Rec> parms;
+ parms.lower_bound = 300;
+ parms.upper_bound = 500;
+
+ auto state = PGMRangeQuery<Rec>::get_buffer_query_state(buffer, &parms);
+ auto result = PGMRangeQuery<Rec>::buffer_query(buffer, state, &parms);
+ PGMRangeQuery<Rec>::delete_buffer_query_state(state);
+
+ ck_assert_int_eq(result.size(), parms.upper_bound - parms.lower_bound + 1);
+ for (size_t i=0; i<result.size(); i++) {
+ ck_assert_int_le(result[i].rec.key, parms.upper_bound);
+ ck_assert_int_ge(result[i].rec.key, parms.lower_bound);
+ }
+
+ delete buffer;
+}
+END_TEST
+
+
+START_TEST(t_range_query_merge)
+{
+
+}
+END_TEST
+
+
START_TEST(t_full_cancelation)
{
size_t n = 100;
@@ -190,6 +244,11 @@ Suite *unit_testing()
tcase_add_test(lookup, t_point_lookup_miss);
suite_add_tcase(unit, lookup);
+ TCase *range_query = tcase_create("de:PGM::range_query Testing");
+ tcase_add_test(range_query, t_range_query);
+ tcase_add_test(range_query, t_buffer_range_query);
+ tcase_add_test(range_query, t_range_query_merge);
+ suite_add_tcase(unit, range_query);
return unit;
}