From: Peter Hutterer Date: Mon, 16 Sep 2024 06:13:44 +0000 (+1000) Subject: test: add litest string comparison macros X-Git-Tag: 1.27.0~92 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0bc2bf60d2bc398ef57ab720dd34bc1a88d7fb4e;p=platform%2Fupstream%2Flibinput.git test: add litest string comparison macros Part-of: --- diff --git a/test/litest-selftest.c b/test/litest-selftest.c index b3c504ba..9634bcdf 100644 --- a/test/litest-selftest.c +++ b/test/litest-selftest.c @@ -420,6 +420,38 @@ START_TEST(litest_double_ge_fails) } END_TEST +START_TEST(litest_string_eq_ne) +{ + litest_assert_str_eq("foo", "foo"); + litest_assert_str_ne("foo", "bar"); + litest_assert_str_ne("foo", "foobar"); + litest_assert_str_ne("foobar", "foo"); + + const char *a1 = "a"; + const char *a2 = "a"; + const char *b = "b"; + + litest_assert_str_eq(NULL, NULL); + litest_assert_str_eq(a1, a2); + litest_assert_str_ne(a1, b); + litest_assert_str_ne(a2, b); + litest_assert_str_ne(a2, b); + litest_assert_str_ne(b, NULL); +} +END_TEST + +START_TEST(litest_string_eq_fails) +{ + litest_assert_str_eq("foo", "bar"); +} +END_TEST + +START_TEST(litest_string_ne_fails) +{ + litest_assert_str_ne("foo", "foo"); +} +END_TEST + START_TEST(zalloc_overflow) { zalloc((size_t)-1); @@ -514,6 +546,12 @@ litest_assert_macros_suite(void) tcase_add_test_raise_signal(tc, litest_double_ge_fails, SIGABRT); suite_add_tcase(s, tc); + tc = tcase_create("string comparison "); + tcase_add_test(tc, litest_string_eq_ne); + tcase_add_test_raise_signal(tc, litest_string_eq_fails, SIGABRT); + tcase_add_test_raise_signal(tc, litest_string_ne_fails, SIGABRT); + suite_add_tcase(s, tc); + tc = tcase_create("zalloc "); tcase_add_test(tc, zalloc_max_size); tcase_add_test_raise_signal(tc, zalloc_overflow, SIGABRT); diff --git a/test/litest.c b/test/litest.c index 22cf92a6..ee21fe44 100644 --- a/test/litest.c +++ b/test/litest.c @@ -258,6 +258,23 @@ litest_fail_comparison_ptr(const char *file, abort(); } +__attribute__((noreturn)) +void +litest_fail_comparison_str(const char *file, + int line, + const char *func, + const char *comparison, + const char *operator, + const char *astr, + const char *bstr) +{ + litest_log("FAILED COMPARISON: %s %s %s\n", astr, operator, bstr); + litest_log("Resolved to: %s %s %s\n", astr, operator, bstr); + litest_log("in %s() (%s:%d)\n", func, file, line); + litest_backtrace(); + abort(); +} + struct test { struct list node; char *name; diff --git a/test/litest.h b/test/litest.h index 98ca00f9..0f192c9d 100644 --- a/test/litest.h +++ b/test/litest.h @@ -131,6 +131,15 @@ litest_fail_comparison_ptr(const char *file, const char *func, const char *comparison); +void +litest_fail_comparison_str(const char *file, + int line, + const char *func, + const char *comparison, + const char *operator, + const char *astr, + const char *bstr); + #define litest_assert(cond) \ do { \ if (!(cond)) \ @@ -222,6 +231,28 @@ litest_fail_comparison_ptr(const char *file, #define litest_assert_ptr_notnull(a_) \ litest_assert_comparison_ptr_(a_, !=, NULL) +#define litest_assert_str_eq(a_, b_) \ + do { \ + const char *_a = a_; \ + const char *_b = b_; \ + if (!streq(_a, _b)) \ + litest_fail_comparison_str(__FILE__, __LINE__, __func__,\ + #a_ " == " #b_, \ + "==", \ + _a, _b); \ + } while(0) + +#define litest_assert_str_ne(a_, b_) \ + do { \ + const char *_a = a_; \ + const char *_b = b_; \ + if (streq(_a, _b)) \ + litest_fail_comparison_str(__FILE__, __LINE__, __func__,\ + #a_ " != " #b_, \ + "!=", \ + _a, _b); \ + } while(0) + #define LITEST_DEFAULT_EPSILON 0.001 #define litest_assert_double_eq_epsilon(a_, b_, epsilon_)\