#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; }