summaryrefslogtreecommitdiffstats
path: root/tests/triespline_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/triespline_tests.cpp
parent79b5e0b630ee9f53535fc8469e450024af7439e1 (diff)
downloaddynamic-extension-d47eeea719448f649e93b6a9ec7593b4cb2fb40e.tar.gz
Added TrieSpline and PGM Range queries + tests and bugfixes
Diffstat (limited to 'tests/triespline_tests.cpp')
-rw-r--r--tests/triespline_tests.cpp67
1 files changed, 64 insertions, 3 deletions
diff --git a/tests/triespline_tests.cpp b/tests/triespline_tests.cpp
index 982be79..d88d4b1 100644
--- a/tests/triespline_tests.cpp
+++ b/tests/triespline_tests.cpp
@@ -1,5 +1,5 @@
/*
- * tests/irs_tests.cpp
+ * tests/triespline_tests.cpp
*
* Unit tests for TrieSpline (Augmented B+Tree) shard
*
@@ -45,7 +45,7 @@ START_TEST(t_mbuffer_init)
}
-START_TEST(t_irs_init)
+START_TEST(t_init)
{
size_t n = 512;
auto mbuffer1 = create_test_mbuffer<Rec>(n);
@@ -169,13 +169,67 @@ START_TEST(t_full_cancelation)
END_TEST
+START_TEST(t_range_query)
+{
+ auto buffer = create_sequential_mbuffer<Rec>(100, 1000);
+ auto shard = Shard(buffer);
+
+ ts_range_query_parms<Rec> parms;
+ parms.lower_bound = 300;
+ parms.upper_bound = 500;
+
+ auto state = TrieSplineRangeQuery<Rec>::get_query_state(&shard, &parms);
+ auto result = TrieSplineRangeQuery<Rec>::query(&shard, state, &parms);
+ TrieSplineRangeQuery<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);
+
+ ts_range_query_parms<Rec> parms;
+ parms.lower_bound = 300;
+ parms.upper_bound = 500;
+
+ auto state = TrieSplineRangeQuery<Rec>::get_buffer_query_state(buffer, &parms);
+ auto result = TrieSplineRangeQuery<Rec>::buffer_query(buffer, state, &parms);
+ TrieSplineRangeQuery<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
+
+
Suite *unit_testing()
{
Suite *unit = suite_create("TrieSpline Shard Unit Testing");
TCase *create = tcase_create("de::TrieSpline constructor Testing");
tcase_add_test(create, t_mbuffer_init);
- tcase_add_test(create, t_irs_init);
+ tcase_add_test(create, t_init);
tcase_set_timeout(create, 100);
suite_add_tcase(unit, create);
@@ -191,6 +245,13 @@ Suite *unit_testing()
suite_add_tcase(unit, lookup);
+ TCase *range_query = tcase_create("de:TrieSpline::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;
}