rizin/test/unit/test_compare.c
Dhruv Maroo 0801f7adf6
Port c commands to newshell (#1854)
Co-authored-by: Riccardo Schirone <ret2libc@users.noreply.github.com>
2021-11-25 17:55:08 +05:30

91 lines
3 KiB
C

// SPDX-FileCopyrightText: 2021 Dhruv Maroo <dhruvmaru007@gmail.com>
// SPDX-License-Identifier: LGPL-3.0-only
#include <rz_cmp.h>
#include "minunit.h"
char *data =
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwx"
"ABCDEFGHIJKLMNOPQRSTUVWX";
char *la = "abcdefghijklmnopqrstuvwxyz";
char *ua = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
bool test_cmp_mem_mem(void) {
RzCore *core = rz_core_new();
rz_io_open(core->io, "malloc://100", RZ_PERM_RW, 0);
rz_io_write(core->io, (ut8 *)data, 100);
RzCompareData *cmp = rz_core_cmp_mem_mem(core, 0, 52, 24);
mu_assert_notnull(cmp, "RzCompareData object null");
mu_assert_eq(cmp->len, 24, "Incorrect length");
mu_assert_eq(cmp->addr1, 0, "Incorrect addr1");
mu_assert_eq(cmp->addr2, 52, "Incorrect addr2");
mu_assert_memeq(cmp->data1, (ut8 *)la, 24, "Memory at offset 0 does not match");
mu_assert_memeq(cmp->data2, (ut8 *)la, 24, "Memory at offset 52 does not match");
mu_assert_eq(cmp->same, true, "Memory not same");
rz_core_cmp_free(cmp);
cmp = rz_core_cmp_mem_mem(core, 0, 26, 26);
mu_assert_notnull(cmp, "RzCompareData object null");
mu_assert_eq(cmp->len, 26, "Incorrect length");
mu_assert_eq(cmp->addr1, 0, "Incorrect addr1");
mu_assert_eq(cmp->addr2, 26, "Incorrect addr2");
mu_assert_memeq(cmp->data1, (ut8 *)la, 26, "Memory at offset 0 does not match");
mu_assert_memeq(cmp->data2, (ut8 *)ua, 26, "Memory at offset 26 does not match");
mu_assert_eq(cmp->same, false, "Memory same");
rz_core_cmp_free(cmp);
cmp = rz_core_cmp_mem_mem(core, 26, 76, 26);
mu_assert_null(cmp, "RzCompareData not null");
rz_core_cmp_free(cmp);
rz_core_free(core);
mu_end;
}
bool test_cmp_mem_data(void) {
RzCore *core = rz_core_new();
rz_io_open(core->io, "malloc://100", RZ_PERM_RW, 0);
rz_io_write(core->io, (ut8 *)data, 100);
RzCompareData *cmp = rz_core_cmp_mem_data(core, 52, (ut8 *)la, 24);
mu_assert_notnull(cmp, "RzCompareData object null");
mu_assert_eq(cmp->len, 24, "Incorrect length");
mu_assert_eq(cmp->addr1, 52, "Incorrect addr1");
mu_assert_eq(cmp->addr2, UT64_MAX, "Incorrect addr2");
mu_assert_memeq(cmp->data1, (ut8 *)la, 24, "Memory at offset 52 does not match");
mu_assert_memeq(cmp->data2, (ut8 *)la, 24, "Data does not match");
mu_assert_eq(cmp->same, true, "Memory not same");
rz_core_cmp_free(cmp);
cmp = rz_core_cmp_mem_data(core, 26, (ut8 *)la, 26);
mu_assert_notnull(cmp, "RzCompareData object null");
mu_assert_eq(cmp->len, 26, "Incorrect length");
mu_assert_eq(cmp->addr1, 26, "Incorrect addr1");
mu_assert_eq(cmp->addr2, UT64_MAX, "Incorrect addr2");
mu_assert_memeq(cmp->data1, (ut8 *)ua, 26, "Memory at offset 26 does not match");
mu_assert_memeq(cmp->data2, (ut8 *)la, 26, "Data does not match");
mu_assert_eq(cmp->same, false, "Memory same");
rz_core_cmp_free(cmp);
cmp = rz_core_cmp_mem_data(core, 76, (ut8 *)ua, 26);
mu_assert_null(cmp, "RzCompareData not null");
rz_core_cmp_free(cmp);
rz_core_free(core);
mu_end;
}
int all_tests() {
mu_run_test(test_cmp_mem_mem);
mu_run_test(test_cmp_mem_data);
return tests_run != tests_passed;
}
mu_main(all_tests);