diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2016-05-06 14:38:06 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-05-10 19:41:47 -0700 |
commit | 099eeb9b978c70128bc2ec99cfdddf39e44a8249 (patch) | |
tree | 59f9c2cf419871e946ae9ed092a924ea9a465881 /tests/test_common.h | |
parent | f3f9e00ef037695c4e792948effa1253f680c118 (diff) | |
download | vboot-099eeb9b978c70128bc2ec99cfdddf39e44a8249.tar.gz |
test: Make TEST_* report test locationstabilize-8337.B
This patch converts TEST_* functions to macros, which print file name
and line # of the check. This will allow us to locate a failed test
quickly.
New TEST_* macros also automatically generate a test name if
testname == NULL. This will save us time to think of a name for
every single check we write in a test.
BUG=none
BRANCH=tot
TEST=make runtests
Change-Id: Ibdeb99681985c3f348836d256fa3484f2f0c315f
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/343233
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'tests/test_common.h')
-rw-r--r-- | tests/test_common.h | 95 |
1 files changed, 81 insertions, 14 deletions
diff --git a/tests/test_common.h b/tests/test_common.h index ef21c3b5..0e2c8d6c 100644 --- a/tests/test_common.h +++ b/tests/test_common.h @@ -7,49 +7,116 @@ #ifndef VBOOT_REFERENCE_TEST_COMMON_H_ #define VBOOT_REFERENCE_TEST_COMMON_H_ +#include <stdio.h> + +/* Used to get a line number as a constant string. Need to stringify it twice */ +#define STRINGIFY(x) #x +#define TOSTRING(x) STRINGIFY(x) + extern int gTestSuccess; /* Return 1 if result is equal to expected_result, else return 0. * Also update the global gTestSuccess flag if test fails. */ -int TEST_EQ(int result, int expected_result, const char* testname); +int test_eq(int result, int expected, + const char *preamble, const char *desc, const char *comment); + +#define TEST_EQ(result, expected, comment) \ + test_eq(result, expected, \ + __FILE__ ":" TOSTRING(__LINE__), \ + #result " == " #expected, \ + comment) + +#define TEST_EQ_S(result, expected) TEST_EQ(result, expected, NULL); /* Return 0 if result is equal to not_expected_result, else return 1. * Also update the global gTestSuccess flag if test fails. */ -int TEST_NEQ(int result, int not_expected_result, const char* testname); +int test_neq(int result, int not_expected, + const char *preamble, const char *desc, const char *comment); + +#define TEST_NEQ(result, not_expected, comment) \ + test_neq(result, not_expected, \ + __FILE__ ":" TOSTRING(__LINE__), \ + #result " != " #not_expected, \ + comment) /* Return 1 if result pointer is equal to expected_result pointer, * else return 0. Does not check pointer contents, only the pointer * itself. Also update the global gTestSuccess flag if test fails. */ -int TEST_PTR_EQ(const void* result, const void* expected_result, - const char* testname); +int test_ptr_eq(const void* result, const void* expected, + const char *preamble, const char *desc, const char *comment); + +#define TEST_PTR_EQ(result, expected, comment) \ + test_ptr_eq(result, expected, \ + __FILE__ ":" TOSTRING(__LINE__), \ + #result " == " #expected, \ + comment) /* Return 1 if result pointer is not equal to expected_result pointer, * else return 0. Does not check pointer contents, only the pointer * itself. Also update the global gTestSuccess flag if test fails. */ -int TEST_PTR_NEQ(const void* result, const void* expected_result, - const char* testname); +int test_ptr_neq(const void* result, const void* not_expected, + const char *preamble, const char *desc, const char *comment); + +#define TEST_PTR_NEQ(result, not_expected, comment) \ + test_ptr_neq(result, not_expected, \ + __FILE__ ":" TOSTRING(__LINE__), \ + #result " != " #not_expected, \ + comment) /* Return 1 if result string is equal to expected_result string, * else return 0. Also update the global gTestSuccess flag if test fails. */ -int TEST_STR_EQ(const char* result, const char* expected_result, - const char* testname); +int test_str_eq(const char* result, const char* expected, + const char *preamble, const char *desc, const char *comment); + +#define TEST_STR_EQ(result, expected, comment) \ + test_str_eq(result, expected, \ + __FILE__ ":" TOSTRING(__LINE__), \ + #result " == " #expected, \ + comment) -/* Return 1 if result string is not equal to not_expected_result string, +/* Return 1 if result string is not equal to not_expected string, * else return 0. Also update the global gTestSuccess flag if test fails. */ -int TEST_STR_NEQ(const char* result, const char* not_expected_result, - const char* testname); +int test_str_neq(const char* result, const char* not_expected, + const char *preamble, const char *desc, const char *comment); + +#define TEST_STR_NEQ(result, not_expected, comment) \ + test_str_neq(result, not_expected, \ + __FILE__ ":" TOSTRING(__LINE__), \ + #result " != " #not_expected, \ + comment) /* Return 1 if the result is true, else return 0. * Also update the global gTestSuccess flag if test fails. */ -int TEST_TRUE(int result, const char* testname); +int test_true(int result, + const char *preamble, const char *desc, const char *comment); + +#define TEST_TRUE(result, comment) \ + test_true(result, \ + __FILE__ ":" TOSTRING(__LINE__), \ + #result " == true", \ + comment) /* Return 1 if the result is false, else return 0. * Also update the global gTestSuccess flag if test fails. */ -int TEST_FALSE(int result, const char* testname); +int test_false(int result, + const char *preamble, const char *desc, const char *comment); + +#define TEST_FALSE(result, comment) \ + test_false(result, \ + __FILE__ ":" TOSTRING(__LINE__), \ + #result " == false", \ + comment) /* Return 1 if result is 0 (VB_ERROR_SUCCESS / VB2_SUCCESS), else return 0. * Also update the global gTestSuccess flag if test fails. */ -int TEST_SUCC(int result, const char* testname); +int test_succ(int result, + const char *preamble, const char *desc, const char *comment); + +#define TEST_SUCC(result, comment) \ + test_succ(result, \ + __FILE__ ":" TOSTRING(__LINE__), \ + #result " == 0", \ + comment) /* ANSI Color coding sequences. * |