test: add a couple of sanity tests for ASSERT_*() macros
Also, introduce ASSERT_SIGNAL() macro that should help us test failing cases of mentioned macros (which usually end with calling abort()).
This commit is contained in:
@@ -1105,4 +1105,61 @@ TEST(u64_multiply_safe) {
|
||||
assert_se(u64_multiply_safe(UINT64_MAX, UINT64_MAX) == 0);
|
||||
}
|
||||
|
||||
TEST(ASSERT) {
|
||||
char *null = NULL;
|
||||
|
||||
ASSERT_OK(0);
|
||||
ASSERT_OK(255);
|
||||
ASSERT_OK(printf("Hello world\n"));
|
||||
ASSERT_SIGNAL(ASSERT_OK(-1), SIGABRT);
|
||||
ASSERT_SIGNAL(ASSERT_OK(-ENOANO), SIGABRT);
|
||||
|
||||
ASSERT_TRUE(true);
|
||||
ASSERT_TRUE(255);
|
||||
ASSERT_TRUE(getpid());
|
||||
ASSERT_SIGNAL(ASSERT_TRUE(1 == 0), SIGABRT);
|
||||
|
||||
ASSERT_FALSE(false);
|
||||
ASSERT_FALSE(1 == 0);
|
||||
ASSERT_SIGNAL(ASSERT_FALSE(1 > 0), SIGABRT);
|
||||
|
||||
ASSERT_NULL(NULL);
|
||||
ASSERT_SIGNAL(ASSERT_NULL(signal_to_string(SIGINT)), SIGABRT);
|
||||
|
||||
ASSERT_NOT_NULL(signal_to_string(SIGTERM));
|
||||
ASSERT_SIGNAL(ASSERT_NOT_NULL(NULL), SIGABRT);
|
||||
|
||||
ASSERT_STREQ(NULL, null);
|
||||
ASSERT_STREQ("foo", "foo");
|
||||
ASSERT_SIGNAL(ASSERT_STREQ(null, "bar"), SIGABRT);
|
||||
ASSERT_SIGNAL(ASSERT_STREQ("foo", "bar"), SIGABRT);
|
||||
|
||||
ASSERT_EQ(0, 0);
|
||||
ASSERT_EQ(-1, -1);
|
||||
ASSERT_SIGNAL(ASSERT_EQ(255, -1), SIGABRT);
|
||||
|
||||
ASSERT_GE(0, 0);
|
||||
ASSERT_GE(1, -1);
|
||||
ASSERT_SIGNAL(ASSERT_GE(-1, 1), SIGABRT);
|
||||
|
||||
ASSERT_LE(0, 0);
|
||||
ASSERT_LE(-1, 1);
|
||||
ASSERT_SIGNAL(ASSERT_LE(1, -1), SIGABRT);
|
||||
|
||||
ASSERT_NE(0, (int64_t) UINT_MAX);
|
||||
ASSERT_NE(-1, 1);
|
||||
ASSERT_SIGNAL(ASSERT_NE(0, 0), SIGABRT);
|
||||
ASSERT_SIGNAL(ASSERT_NE(-1, -1), SIGABRT);
|
||||
|
||||
ASSERT_GT(1, 0);
|
||||
ASSERT_GT(1, -1);
|
||||
ASSERT_SIGNAL(ASSERT_GT(0, 0), SIGABRT);
|
||||
ASSERT_SIGNAL(ASSERT_GT(-1, 1), SIGABRT);
|
||||
|
||||
ASSERT_LT(0, 1);
|
||||
ASSERT_LT(-1, 1);
|
||||
ASSERT_SIGNAL(ASSERT_LT(0, 0), SIGABRT);
|
||||
ASSERT_SIGNAL(ASSERT_LT(1, -1), SIGABRT);
|
||||
}
|
||||
|
||||
DEFINE_TEST_MAIN(LOG_INFO);
|
||||
|
||||
Reference in New Issue
Block a user