From d6184f363bfc90bf626a86b66f62074f37c139f4 Mon Sep 17 00:00:00 2001 From: Douglas Rumbaugh Date: Tue, 9 May 2023 14:38:13 -0400 Subject: Internal Level and PagedFile Unit Tests --- tests/internal_level_tests.cpp | 80 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 tests/internal_level_tests.cpp (limited to 'tests/internal_level_tests.cpp') diff --git a/tests/internal_level_tests.cpp b/tests/internal_level_tests.cpp new file mode 100644 index 0000000..f65ef04 --- /dev/null +++ b/tests/internal_level_tests.cpp @@ -0,0 +1,80 @@ +#include "shard/WIRS.h" +#include "framework/InternalLevel.h" +#include "util/bf_config.h" +#include "testing.h" + +#include + +using namespace de; + +START_TEST(t_memlevel_merge) +{ + auto tbl1 = create_test_mbuffer(100); + auto tbl2 = create_test_mbuffer(100); + + auto base_level = new WeightedLevel(1, 1, false); + base_level->append_mem_table(tbl1, g_rng); + ck_assert_int_eq(base_level->get_record_cnt(), 100); + + auto merging_level = new WeightedLevel(0, 1, false); + merging_level->append_mem_table(tbl2, g_rng); + ck_assert_int_eq(merging_level->get_record_cnt(), 100); + + auto old_level = base_level; + base_level = WeightedLevel::merge_levels(old_level, merging_level, false, g_rng); + + delete old_level; + delete merging_level; + ck_assert_int_eq(base_level->get_record_cnt(), 200); + + delete base_level; + delete tbl1; + delete tbl2; +} + + +WeightedLevel *create_test_memlevel(size_t reccnt) { + auto tbl1 = create_test_mbuffer(reccnt/2); + auto tbl2 = create_test_mbuffer(reccnt/2); + + auto base_level = new WeightedLevel(1, 2, false); + base_level->append_mem_table(tbl1, g_rng); + base_level->append_mem_table(tbl2, g_rng); + + delete tbl1; + delete tbl2; + + return base_level; +} + +Suite *unit_testing() +{ + Suite *unit = suite_create("InternalLevel Unit Testing"); + + TCase *merge = tcase_create("de::InternalLevel::merge_level Testing"); + tcase_add_test(merge, t_memlevel_merge); + suite_add_tcase(unit, merge); + + return unit; +} + +int run_unit_tests() +{ + int failed = 0; + Suite *unit = unit_testing(); + SRunner *unit_runner = srunner_create(unit); + + srunner_run_all(unit_runner, CK_NORMAL); + failed = srunner_ntests_failed(unit_runner); + srunner_free(unit_runner); + + return failed; +} + + +int main() +{ + int unit_failed = run_unit_tests(); + + return (unit_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE; +} -- cgit v1.2.3