diff options
| author | Douglas Rumbaugh <dbr4@psu.edu> | 2023-05-09 14:38:13 -0400 |
|---|---|---|
| committer | Douglas Rumbaugh <dbr4@psu.edu> | 2023-05-09 14:38:13 -0400 |
| commit | d6184f363bfc90bf626a86b66f62074f37c139f4 (patch) | |
| tree | acb959a43c6099a4aa0d3656c6bf089321aff0c4 /tests/internal_level_tests.cpp | |
| parent | 09949110fe71cd1594e53a2ddd4d21722a8774df (diff) | |
| download | dynamic-extension-d6184f363bfc90bf626a86b66f62074f37c139f4.tar.gz | |
Internal Level and PagedFile Unit Tests
Diffstat (limited to 'tests/internal_level_tests.cpp')
| -rw-r--r-- | tests/internal_level_tests.cpp | 80 |
1 files changed, 80 insertions, 0 deletions
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 <check.h> + +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; +} |