From 34ee34eb7334c69ef278944c84a833ad1901a26f Mon Sep 17 00:00:00 2001 From: Ledmington Date: Thu, 31 Mar 2022 23:14:59 +0200 Subject: [PATCH 1/2] Added before_each and after_each --- minunit.h | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/minunit.h b/minunit.h index b716888..fb54e11 100644 --- a/minunit.h +++ b/minunit.h @@ -87,6 +87,10 @@ static char minunit_last_message[MINUNIT_MESSAGE_LEN]; static void (*minunit_setup)(void) = NULL; static void (*minunit_teardown)(void) = NULL; +/* Test before_each and after_each function pointers */ +static void (*minunit_before_each)(void) = NULL; +static void (*minunit_after_each)(void) = NULL; + /* Definitions */ #define MU_TEST(method_name) static void method_name(void) #define MU_TEST_SUITE(suite_name) static void suite_name(void) @@ -98,14 +102,20 @@ static void (*minunit_teardown)(void) = NULL; /* Run test suite and unset setup and teardown functions */ #define MU_RUN_SUITE(suite_name) MU__SAFE_BLOCK(\ suite_name();\ + if (minunit_teardown) (*minunit_teardown)();\ minunit_setup = NULL;\ minunit_teardown = NULL;\ + minunit_before_each = NULL;\ + minunit_after_each = NULL;\ ) /* Configure setup and teardown functions */ -#define MU_SUITE_CONFIGURE(setup_fun, teardown_fun) MU__SAFE_BLOCK(\ +#define MU_SUITE_CONFIGURE(setup_fun, teardown_fun, before_each_fun, after_each_fun) MU__SAFE_BLOCK(\ minunit_setup = setup_fun;\ minunit_teardown = teardown_fun;\ + minunit_before_each = before_each_fun;\ + minunit_after_each = after_each_fun;\ + if (minunit_setup) (*minunit_setup)();\ ) /* Test runner */ @@ -114,7 +124,7 @@ static void (*minunit_teardown)(void) = NULL; minunit_real_timer = mu_timer_real();\ minunit_proc_timer = mu_timer_cpu();\ }\ - if (minunit_setup) (*minunit_setup)();\ + if (minunit_before_each) (*minunit_before_each)();\ minunit_status = 0;\ test();\ minunit_run++;\ @@ -124,7 +134,7 @@ static void (*minunit_teardown)(void) = NULL; printf("\n%s\n", minunit_last_message);\ }\ fflush(stdout);\ - if (minunit_teardown) (*minunit_teardown)();\ + if (minunit_after_each) (*minunit_after_each)();\ ) /* Report */ @@ -211,7 +221,7 @@ static void (*minunit_teardown)(void) = NULL; if (!minunit_tmp_r) {\ minunit_tmp_r = "";\ }\ - if(strcmp(minunit_tmp_e, minunit_tmp_r)) {\ + if (strcmp(minunit_tmp_e, minunit_tmp_r)) {\ snprintf(minunit_last_message, MINUNIT_MESSAGE_LEN, "%s failed:\n\t%s:%d: '%s' expected but was '%s'", __func__, __FILE__, __LINE__, minunit_tmp_e, minunit_tmp_r);\ minunit_status = 1;\ return;\ From 34991a44b574018392f300e27961b429c47eecc4 Mon Sep 17 00:00:00 2001 From: Ledmington Date: Thu, 31 Mar 2022 23:38:43 +0200 Subject: [PATCH 2/2] Fixed test --- minunit_example.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/minunit_example.c b/minunit_example.c index dedd7f0..9e70310 100644 --- a/minunit_example.c +++ b/minunit_example.c @@ -6,10 +6,19 @@ static double dbar = 0.1; static const char* foostring = "Thisstring"; void test_setup(void) { + /* Maybe allocate some memory */ +} + +void test_before_each(void) { foo = 7; bar = 4; } +void test_after_each(void) { + foo = -1; + bar = -1; +} + void test_teardown(void) { /* Nothing */ } @@ -60,7 +69,7 @@ MU_TEST(test_string_eq_fail){ MU_TEST_SUITE(test_suite) { - MU_SUITE_CONFIGURE(&test_setup, &test_teardown); + MU_SUITE_CONFIGURE(&test_setup, &test_teardown, &test_before_each, &test_after_each); MU_RUN_TEST(test_check); MU_RUN_TEST(test_assert);