From: Pavol Rusnak Date: Wed, 26 Oct 2016 13:23:14 +0000 (+0200) Subject: Add unit tests for memory location comparison macros (ck_assert_mem_*) X-Git-Tag: 0.11.0~16^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=152577a982dd6015f37877e7078925ad51095046;p=check Add unit tests for memory location comparison macros (ck_assert_mem_*) --- diff --git a/src/check.h.in b/src/check.h.in index ccd409f..3b29d54 100644 --- a/src/check.h.in +++ b/src/check.h.in @@ -772,6 +772,12 @@ CK_DLL_EXP void CK_EXPORT _ck_assert_failed(const char *file, int line, } \ _ck_x_str[_ck_i * 2] = 0; \ _ck_y_str[_ck_i * 2] = 0; \ + if (_ck_maxl != _ck_l) { \ + _ck_x_str[_ck_i * 2 - 2] = '.'; \ + _ck_y_str[_ck_i * 2 - 2] = '.'; \ + _ck_x_str[_ck_i * 2 - 1] = '.'; \ + _ck_y_str[_ck_i * 2 - 1] = '.'; \ + } \ ck_assert_msg(0 OP memcmp(_ck_y, _ck_x, _ck_l), \ "Assertion '%s' failed: %s == \"%s\", %s == \"%s\"", #X" "#OP" "#Y, #X, _ck_x_str, #Y, _ck_y_str); \ } while (0) diff --git a/tests/check_check_master.c b/tests/check_check_master.c index 85dd9f6..605c50d 100644 --- a/tests/check_check_master.c +++ b/tests/check_check_master.c @@ -114,6 +114,15 @@ static master_test_t master_tests[] = { { "Simple Tests", CK_PASS, "Passed" }, { "Simple Tests", CK_FAILURE, "Assertion 'x == y' failed: x == 0x1, y == 0x2" }, { "Simple Tests", CK_FAILURE, "Assertion 'x != z' failed: x == 0x1, z == 0x1" }, + { "Simple Tests", CK_FAILURE, "Assertion '\"\\x00\\x00\\x00\\x00\\x01\" == s' failed: \"\\x00\\x00\\x00\\x00\\x01\" == \"0000000001\", s == \"0000000002\"" }, + { "Simple Tests", CK_FAILURE, "Assertion 't != s' failed: t == \"0000000002\", s == \"0000000002\"" }, + { "Simple Tests", CK_FAILURE, "Assertion 's < s' failed: s == \"0000000001\", s == \"0000000001\"" }, + { "Simple Tests", CK_FAILURE, "Assertion 't <= s' failed: t == \"0000000002\", s == \"0000000001\"" }, + { "Simple Tests", CK_FAILURE, "Assertion 't > t' failed: t == \"0000000002\", t == \"0000000002\"" }, + { "Simple Tests", CK_FAILURE, "Assertion 's >= t' failed: s == \"0000000001\", t == \"0000000002\"" }, + { "Simple Tests", CK_PASS, "Passed" }, + { "Simple Tests", CK_FAILURE, "Assertion 't == s' failed: t == \"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001\", s == \"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002\"" }, + { "Simple Tests", CK_FAILURE, "Assertion 't == s' failed: t == \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000..\", s == \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000..\"" }, #if defined(HAVE_FORK) && HAVE_FORK==1 { "Signal Tests", CK_ERROR, signal_11_str }, diff --git a/tests/check_check_sub.c b/tests/check_check_sub.c index 3ad4051..27a15ca 100644 --- a/tests/check_check_sub.c +++ b/tests/check_check_sub.c @@ -553,6 +553,94 @@ START_TEST(test_ck_assert_ptr_ne) } END_TEST +START_TEST(test_ck_assert_mem_eq) +{ + const char *s = "\x00\x00\x00\x00\x02"; + ck_assert_mem_eq("\x00\x00\x00\x00\x02", s, 5); + record_failure_line_num(__LINE__); + ck_assert_mem_eq("\x00\x00\x00\x00\x01", s, 5); +} +END_TEST + +START_TEST(test_ck_assert_mem_ne) +{ + const char *s = "\x00\x00\x00\x00\x02"; + const char *t = "\x00\x00\x00\x00\x01"; + ck_assert_mem_ne(t, s, 5); + t = "\x00\x00\x00\x00\x02"; + record_failure_line_num(__LINE__); + ck_assert_mem_ne(t, s, 5); +} +END_TEST + +START_TEST(test_ck_assert_mem_lt) +{ + const char *s = "\x00\x00\x00\x00\x01"; + const char *t = "\x00\x00\x00\x00\x02"; + ck_assert_mem_lt(s, t, 5); + record_failure_line_num(__LINE__); + ck_assert_mem_lt(s, s, 5); +} +END_TEST + +START_TEST(test_ck_assert_mem_le) +{ + const char *s = "\x00\x00\x00\x00\x01"; + const char *t = "\x00\x00\x00\x00\x02"; + ck_assert_mem_le(s, t, 5); + ck_assert_mem_le(s, s, 5); + record_failure_line_num(__LINE__); + ck_assert_mem_le(t, s, 5); +} +END_TEST + +START_TEST(test_ck_assert_mem_gt) +{ + const char *s = "\x00\x00\x00\x00\x01"; + const char *t = "\x00\x00\x00\x00\x02"; + ck_assert_mem_gt(t, s, 5); + record_failure_line_num(__LINE__); + ck_assert_mem_gt(t, t, 5); +} +END_TEST + +START_TEST(test_ck_assert_mem_ge) +{ + const char *s = "\x00\x00\x00\x00\x01"; + const char *t = "\x00\x00\x00\x00\x02"; + ck_assert_mem_ge(t, s, 5); + ck_assert_mem_ge(t, t, 5); + record_failure_line_num(__LINE__); + ck_assert_mem_ge(s, t, 5); +} +END_TEST + +START_TEST(test_ck_assert_mem_zerolen) +{ + const char *s = "\x00\x00\x00\x00\x02"; + const char *t = "\x00\x00\x00\x00\x01"; + ck_assert_mem_eq(t, s, 0); +} +END_TEST + +START_TEST(test_ck_assert_mem_eq_exact) +{ + const char *s = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02"; + const char *t = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01"; + record_failure_line_num(__LINE__); + ck_assert_mem_eq(t, s, 64); +} +END_TEST + +START_TEST(test_ck_assert_mem_eq_longer) +{ + const char *s = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02"; + const char *t = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01"; + record_failure_line_num(__LINE__); + ck_assert_mem_eq(t, s, 65); +} +END_TEST + #if defined(HAVE_FORK) && HAVE_FORK == 1 START_TEST(test_segv_pass) { @@ -1095,6 +1183,15 @@ Suite *make_sub_suite(void) tcase_add_test (tc_simple, test_ck_assert_str_expr); tcase_add_test (tc_simple, test_ck_assert_ptr_eq); tcase_add_test (tc_simple, test_ck_assert_ptr_ne); + tcase_add_test (tc_simple, test_ck_assert_mem_eq); + tcase_add_test (tc_simple, test_ck_assert_mem_ne); + tcase_add_test (tc_simple, test_ck_assert_mem_lt); + tcase_add_test (tc_simple, test_ck_assert_mem_le); + tcase_add_test (tc_simple, test_ck_assert_mem_gt); + tcase_add_test (tc_simple, test_ck_assert_mem_ge); + tcase_add_test (tc_simple, test_ck_assert_mem_zerolen); + tcase_add_test (tc_simple, test_ck_assert_mem_eq_exact); + tcase_add_test (tc_simple, test_ck_assert_mem_eq_longer); #if defined(HAVE_FORK) && HAVE_FORK==1 tcase_add_test (tc_signal, test_segv);