From c963d75dfdeec11f82e79e727062fbf89afa2c04 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Sun, 22 Apr 2012 09:19:23 +1000 Subject: Update EFL to latest beta. --- libraries/eina/src/tests/eina_test_counter.c | 92 +++++++++++++++++++++++++++- 1 file changed, 91 insertions(+), 1 deletion(-) (limited to 'libraries/eina/src/tests/eina_test_counter.c') diff --git a/libraries/eina/src/tests/eina_test_counter.c b/libraries/eina/src/tests/eina_test_counter.c index 2a3f30d..4d956fd 100644 --- a/libraries/eina/src/tests/eina_test_counter.c +++ b/libraries/eina/src/tests/eina_test_counter.c @@ -27,6 +27,43 @@ #include "Eina.h" #include "eina_safety_checks.h" +#ifdef EINA_SAFETY_CHECKS +struct log_ctx { + const char *msg; + const char *fnc; + Eina_Bool did; +}; + +/* tests should not output on success, just uncomment this for debugging */ +//#define SHOW_LOG 1 + +static void +_eina_test_safety_print_cb(const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc, int line, const char *fmt, void *data, va_list args __UNUSED__) +{ + struct log_ctx *ctx = data; + va_list cp_args; + const char *str; + + va_copy(cp_args, args); + str = va_arg(cp_args, const char *); + va_end(cp_args); + + ck_assert_int_eq(level, EINA_LOG_LEVEL_ERR); + ck_assert_str_eq(fmt, "%s"); + ck_assert_str_eq(ctx->msg, str); + ck_assert_str_eq(ctx->fnc, fnc); + ctx->did = EINA_TRUE; + +#ifdef SHOW_LOG + eina_log_print_cb_stderr(d, level, file, fnc, line, fmt, NULL, args); +#else + (void)d; + (void)file; + (void)line; +#endif +} +#endif + START_TEST(eina_counter_simple) { Eina_Counter *cnt; @@ -61,6 +98,7 @@ START_TEST(eina_counter_simple) dump = eina_counter_dump(cnt); fail_if(!dump); + /* TODO: parse dump and check if it's right */ fprintf(stderr, "%s", dump); free(dump); @@ -86,13 +124,65 @@ START_TEST(eina_counter_break) #ifdef EINA_SAFETY_CHECKS { + struct log_ctx ctx; char *dump; +#define TEST_MAGIC_SAFETY(fn, _msg) \ + ctx.msg = _msg; \ + ctx.fnc = fn; \ + ctx.did = EINA_FALSE + + eina_log_print_cb_set(_eina_test_safety_print_cb, &ctx); + +#ifdef SHOW_LOG fprintf(stderr, "you should have a safety check failure below:\n"); +#endif + TEST_MAGIC_SAFETY("eina_counter_new", + "safety check failed: name == NULL"); + cnt = eina_counter_new(NULL); + fail_if(cnt); + fail_if(eina_error_get() != EINA_ERROR_SAFETY_FAILED); + fail_unless(ctx.did); + +#ifdef SHOW_LOG + fprintf(stderr, "you should have a safety check failure below:\n"); +#endif + TEST_MAGIC_SAFETY("eina_counter_free", + "safety check failed: counter == NULL"); + eina_counter_free(NULL); + fail_if(eina_error_get() != EINA_ERROR_SAFETY_FAILED); + fail_unless(ctx.did); + +#ifdef SHOW_LOG + fprintf(stderr, "you should have a safety check failure below:\n"); +#endif + TEST_MAGIC_SAFETY("eina_counter_start", + "safety check failed: counter == NULL"); + eina_counter_start(NULL); + fail_if(eina_error_get() != EINA_ERROR_SAFETY_FAILED); + fail_unless(ctx.did); + +#ifdef SHOW_LOG + fprintf(stderr, "you should have a safety check failure below:\n"); +#endif + TEST_MAGIC_SAFETY("eina_counter_stop", + "safety check failed: counter == NULL"); + eina_counter_stop(NULL, 0); + fail_if(eina_error_get() != EINA_ERROR_SAFETY_FAILED); + fail_unless(ctx.did); + + +#ifdef SHOW_LOG + fprintf(stderr, "you should have a safety check failure below:\n"); +#endif + TEST_MAGIC_SAFETY("eina_counter_dump", + "safety check failed: counter == NULL"); dump = eina_counter_dump(NULL); fail_if(dump); fail_if(eina_error_get() != EINA_ERROR_SAFETY_FAILED); - free(dump); + fail_unless(ctx.did); + + eina_log_print_cb_set(eina_log_print_cb_stderr, NULL); } #endif -- cgit v1.1