From 41a61de78a20446722bdda69d80e313630cdc853 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 1 Jan 2013 12:14:25 -0800 Subject: [PATCH] shared: Add user data support to tester framework --- src/shared/tester.c | 33 +++++++++++++++++++++++++++------ src/shared/tester.h | 15 ++++++++++----- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/src/shared/tester.c b/src/shared/tester.c index 5e7257b79..5ead2e065 100644 --- a/src/shared/tester.c +++ b/src/shared/tester.c @@ -85,6 +85,8 @@ struct test_case { tester_data_func_t post_teardown_func; gdouble start_time; gdouble end_time; + tester_destroy_func_t destroy; + void *user_data; }; static GMainLoop *main_loop; @@ -97,6 +99,9 @@ static void test_destroy(gpointer data) { struct test_case *test = data; + if (test->destroy) + test->destroy(test->user_data); + g_free(test->name); g_free(test); } @@ -147,11 +152,12 @@ static void default_post_teardown(const void *test_data) } void tester_add_full(const char *name, const void *test_data, - tester_data_func_t pre_setup_func, - tester_data_func_t setup_func, - tester_data_func_t test_func, - tester_data_func_t teardown_func, - tester_data_func_t post_teardown_func) + tester_data_func_t pre_setup_func, + tester_data_func_t setup_func, + tester_data_func_t test_func, + tester_data_func_t teardown_func, + tester_data_func_t post_teardown_func, + void *user_data, tester_destroy_func_t destroy) { struct test_case *test; @@ -188,6 +194,9 @@ void tester_add_full(const char *name, const void *test_data, else test->post_teardown_func = default_post_teardown; + test->destroy = destroy; + test->user_data = user_data; + test_list = g_list_append(test_list, test); } @@ -197,7 +206,19 @@ void tester_add(const char *name, const void *test_data, tester_data_func_t teardown_func) { tester_add_full(name, test_data, NULL, setup_func, test_func, - teardown_func, NULL); + teardown_func, NULL, NULL, NULL); +} + +void *tester_get_data(void) +{ + struct test_case *test; + + if (!test_current) + return NULL; + + test = test_current->data; + + return test->user_data; } static void tester_summarize(void) diff --git a/src/shared/tester.h b/src/shared/tester.h index 7c233406a..4c4b8ac27 100644 --- a/src/shared/tester.h +++ b/src/shared/tester.h @@ -34,19 +34,24 @@ void tester_print(const char *format, ...) void tester_warn(const char *format, ...) __attribute__((format(printf, 1, 2))); +typedef void (*tester_destroy_func_t)(void *user_data); typedef void (*tester_data_func_t)(const void *test_data); void tester_add_full(const char *name, const void *test_data, - tester_data_func_t pre_setup_func, - tester_data_func_t setup_func, - tester_data_func_t test_func, - tester_data_func_t teardown_func, - tester_data_func_t post_teardown_func); + tester_data_func_t pre_setup_func, + tester_data_func_t setup_func, + tester_data_func_t test_func, + tester_data_func_t teardown_func, + tester_data_func_t post_teardown_func, + void *user_data, tester_destroy_func_t destroy); + void tester_add(const char *name, const void *test_data, tester_data_func_t setup_func, tester_data_func_t test_func, tester_data_func_t teardown_func); +void *tester_get_data(void); + void tester_pre_setup_complete(void); void tester_pre_setup_failed(void); -- 2.47.3