diff --git a/src/kunity.c b/src/kunity.c index 132b093..4a796ea 100644 --- a/src/kunity.c +++ b/src/kunity.c @@ -34,19 +34,19 @@ typedef struct string_builder_sTag { static void printk_put_char(char /* letter */); -static result_code_e set_test_output(/*in */ const ptr_output_functions_s output); +static result_code_e set_test_output(/*in */ const ptr_test_session_control_block_s output); //} //{ local var region -static output_functions_s prink_output = { printk_put_char }; +static test_session_control_block_s prink_output = { printk_put_char,0 ,0 }; -static ptr_output_functions_s kunity_output = &prink_output; +static ptr_test_session_control_block_s kunity_output = &prink_output; static string_builder_s string_builder; -static size_t sizeof_output = sizeof(output_functions_s); +static size_t sizeof_output = sizeof(test_session_control_block_s); //} @@ -57,9 +57,9 @@ void putchark(/* in */ char a) kunity_output->redirect_char(a); } -result_code_e create_default_test_output(/* out*/ ptr_output_functions_s* output_location) +result_code_e create_default_test_output(/* out*/ ptr_test_session_control_block_s* output_location) { - ptr_output_functions_s tmp_output = NULL; + ptr_test_session_control_block_s tmp_output = NULL; if (output_location == NULL) { return ERROR_NULL_ARGUMENT; } @@ -77,7 +77,7 @@ result_code_e create_default_test_output(/* out*/ ptr_output_functions_s* output return OK; } -result_code_e run_unity_test(/* in */ const unity_test_function_ptr test_function, /* in */ const char* file_name, /* in */ const char* test_name, /* in */ int line_number, /* in */ const ptr_output_functions_s output) +result_code_e run_unity_test(/* in */ const unity_test_function_ptr test_function, /* in */ const char* file_name, /* in */ const char* test_name, /* in */ int line_number, /* in */ const ptr_test_session_control_block_s output) { result_code_e result; if (output == NULL) { @@ -89,9 +89,17 @@ result_code_e run_unity_test(/* in */ const unity_test_function_ptr test_functio return result; } - UnityBegin(file_name); + if (output->_skip_start){ + Unity.TestFile = file_name; + } else { + UnityBegin(file_name); + } + UnityDefaultTestRun(test_function, test_name, line_number); - UNITY_END(); + if (!output->_skip_end){ + UNITY_END(); + } + return result; } @@ -121,7 +129,7 @@ static void printk_put_char(char letter) string_builder.write_postion = (string_builder.write_postion + 1) % KUNITY_LINE_SIZE; } -static result_code_e set_test_output(/* in */ const ptr_output_functions_s output) +static result_code_e set_test_output(/* in */ const ptr_test_session_control_block_s output) { if (output == NULL) { return ERROR_NULL_ARGUMENT; diff --git a/src/kunity.h b/src/kunity.h index 1c01439..50e2d97 100644 --- a/src/kunity.h +++ b/src/kunity.h @@ -17,9 +17,9 @@ extern "C" { extern void putchark(/* in */ char a); -extern result_code_e create_default_test_output(/* out*/ ptr_output_functions_s* output_location); +extern result_code_e create_default_test_output(/* out*/ ptr_test_session_control_block_s* output_location); -extern result_code_e run_unity_test(/* in */ const unity_test_function_ptr test_function, /* in */ const char* file_name, /* in */ const char* test_name, /* in */ int line_number, /* in */ const ptr_output_functions_s output); +extern result_code_e run_unity_test(/* in */ const unity_test_function_ptr test_function, /* in */ const char* file_name, /* in */ const char* test_name, /* in */ int line_number, /* in */ const ptr_test_session_control_block_s output); extern result_code_e run_unity_printk_test(/* in */ const kunity_test_function_ptr test_function); diff --git a/src/kunity_t.h b/src/kunity_t.h index 240a37f..9652336 100644 --- a/src/kunity_t.h +++ b/src/kunity_t.h @@ -34,16 +34,16 @@ #endif #ifndef KUNITY_TEST -#define KUNITY_TEST(function_name) \ - extern result_code_e KUNITY_CREATE_TEST_NAME(function_name)(const ptr_output_functions_s output); \ - static void function_name(void); \ - \ - result_code_e KUNITY_CREATE_TEST_NAME(function_name)(const ptr_output_functions_s output) \ - { \ - return run_unity_test(function_name, __FILE__, #function_name, __LINE__, output); \ - } \ - EXPORT_SYMBOL(KUNITY_CREATE_TEST_NAME(function_name)); \ - \ +#define KUNITY_TEST(function_name) \ + extern result_code_e KUNITY_CREATE_TEST_NAME(function_name)(const ptr_test_session_control_block_s output); \ + static void function_name(void); \ + \ + result_code_e KUNITY_CREATE_TEST_NAME(function_name)(const ptr_test_session_control_block_s output) \ + { \ + return run_unity_test(function_name, __FILE__, #function_name, __LINE__, output); \ + } \ + EXPORT_SYMBOL(KUNITY_CREATE_TEST_NAME(function_name)); \ + \ static void function_name() #endif @@ -71,16 +71,16 @@ typedef void (*unity_test_function_ptr)(void); //{ struct region -typedef struct output_functions_sTag { +typedef struct test_session_control_block_sTag { redirect_char redirect_char; -} output_functions_s, *ptr_output_functions_s; + bool _skip_start; + bool _skip_end; +} test_session_control_block_s, *ptr_test_session_control_block_s; - -typedef result_code_e (*kunity_test_function_ptr)(ptr_output_functions_s); +typedef result_code_e (*kunity_test_function_ptr)(ptr_test_session_control_block_s); typedef struct test_sTag { const char* name; - const char* modul_name; kunity_test_function_ptr test_function; } test_s, *ptr_test_s;