rizin/test/unit/test_itv.c
2021-08-03 22:44:38 +08:00

42 lines
1.8 KiB
C

// SPDX-FileCopyrightText: 2021 GustavoLCR <gugulcr@gmail.com>
// SPDX-License-Identifier: LGPL-3.0-only
#include <rz_util.h>
#include "minunit.h"
bool test_rz_itv_overlap(void) {
RzInterval a = { 0 }, b = { 0 };
mu_assert_true(rz_itv_overlap(a, b), "at same address a and b overlap, both size = 0");
mu_assert_true(rz_itv_overlap(b, a), "at same address b and a overlap, both size = 0");
a.size = 1;
mu_assert_true(rz_itv_overlap(a, b), "at same address a and b overlap, a size = 1");
mu_assert_true(rz_itv_overlap(b, a), "at same address b and a overlap, a size = 1");
b.size = 1;
mu_assert_true(rz_itv_overlap(a, b), "at same address a and b overlap, both size = 1");
mu_assert_true(rz_itv_overlap(b, a), "at same address b and a overlap, both size = 1");
a.size = 2;
mu_assert_true(rz_itv_overlap(a, b), "at same address a and b overlap, a size > b size");
mu_assert_true(rz_itv_overlap(b, a), "at same address b and a overlap, a size > b size");
a.size = 3;
b.addr = 2;
mu_assert_true(rz_itv_overlap(a, b), "a contains b, so they overlap");
mu_assert_true(rz_itv_overlap(b, a), "b is contained by a, so they overlap");
a.addr = 1;
b.size = 4;
mu_assert_true(rz_itv_overlap(a, b), "a is before b, the end of a overlaps the start of b");
mu_assert_true(rz_itv_overlap(b, a), "b is after a, the start of b overlaps the end of a");
b.addr = 4;
mu_assert_false(rz_itv_overlap(a, b), "a ends where b starts, no overlap");
mu_assert_false(rz_itv_overlap(b, a), "b starts where a ends, no overlap");
b.addr = 10;
mu_assert_false(rz_itv_overlap(a, b), "theres a gap between a and b, no overlap");
mu_assert_false(rz_itv_overlap(b, a), "theres a gap between b and a, no overlap");
mu_end;
}
bool all_tests(void) {
mu_run_test(test_rz_itv_overlap);
return tests_passed != tests_run;
}
mu_main(all_tests)