#include "seatest.h" #include #ifdef WIN32 #include #include "windows.h" #else unsigned int GetTickCount() { return 0;} void _getch( void ) { } #endif static int sea_tests_run = 0; static int sea_tests_passed = 0; static int sea_tests_failed = 0; static char* seatest_current_fixture; static void (*seatest_suite_setup_func)( void ) = 0; static void (*seatest_suite_teardown_func)( void ) = 0; static void (*seatest_fixture_setup)( void ) = 0; static void (*seatest_fixture_teardown)( void ) = 0; void suite_setup(void (*setup)( void )) { seatest_suite_setup_func = setup; } void suite_teardown(void (*teardown)( void )) { seatest_suite_teardown_func = teardown; } void seatest_suite_setup( void ) { if(seatest_suite_setup_func != 0) seatest_suite_setup_func(); } void seatest_suite_teardown( void ) { if(seatest_suite_teardown_func != 0) seatest_suite_teardown_func(); } void fixture_setup(void (*setup)( void )) { seatest_fixture_setup = setup; } void fixture_teardown(void (*teardown)( void )) { seatest_fixture_teardown = teardown; } void seatest_setup( void ) { if(seatest_fixture_setup != 0) seatest_fixture_setup(); } void seatest_teardown( void ) { if(seatest_fixture_teardown != 0) seatest_fixture_teardown(); } char* test_file_name(char* path) { char* file = path + strlen(path); while(file != path && *file!= '\\' ) file--; if(*file == '\\') file++; return file; } static int seatest_fixture_tests_run; static int seatest_fixture_tests_failed; void seatest_simple_test_result(int passed, char* reason, const char* function, unsigned int line) { if (!passed) { printf("%-20s Line %-5d %s\r\n", function, line, reason ); sea_tests_failed++; } else { sea_tests_passed++; } } void seatest_assert_true(int test, const char* function, unsigned int line) { seatest_simple_test_result(test, "Should of been true", function, line); } void seatest_assert_false(int test, const char* function, unsigned int line) { seatest_simple_test_result(!test, "Should of been false", function, line); } void seatest_assert_int_equal(int expected, int actual, const char* function, unsigned int line) { char s[SEATEST_PRINT_BUFFER_SIZE]; sprintf(s, "Expected %d but was %d", expected, actual); seatest_simple_test_result(expected==actual, s, function, line); } void seatest_assert_ulong_equal(unsigned long expected, unsigned long actual, const char* function, unsigned int line) { char s[SEATEST_PRINT_BUFFER_SIZE]; sprintf(s, "Expected %lu but was %lu", expected, actual); seatest_simple_test_result(expected==actual, s, function, line); } void seatest_assert_ptr_equal(void * expected, void * actual, const char* function, unsigned int line) { char s[SEATEST_PRINT_BUFFER_SIZE]; sprintf(s, "Expected %p but was %p", expected, actual); seatest_simple_test_result(expected==actual, s, function, line); } void seatest_assert_float_equal( float expected, float actual, float delta, const char* function, unsigned int line ) { char s[SEATEST_PRINT_BUFFER_SIZE]; float result = expected-actual; sprintf(s, "Expected %f but was %f", expected, actual); if(result < 0.0) result = 0.0f - result; seatest_simple_test_result( result <= delta, s, function, line); } void seatest_assert_double_equal( double expected, double actual, double delta, const char* function, unsigned int line ) { char s[SEATEST_PRINT_BUFFER_SIZE]; double result = expected-actual; sprintf(s, "Expected %f but was %f", expected, actual); if(result < 0.0) result = 0.0 - result; seatest_simple_test_result( result <= delta, s, function, line); } void seatest_assert_string_equal(char* expected, char* actual, const char* function, unsigned int line) { char s[SEATEST_PRINT_BUFFER_SIZE]; sprintf(s, "Expected %s but was %s", expected, actual); seatest_simple_test_result(strcmp(expected, actual)==0, s, function, line); } void seatest_assert_string_ends_with(char* expected, char* actual, const char* function, unsigned int line) { char s[SEATEST_PRINT_BUFFER_SIZE]; sprintf(s, "Expected %s to end with %s", actual, expected); seatest_simple_test_result(strcmp(expected, actual+(strlen(actual)-strlen(expected)))==0, s, function, line); } void seatest_assert_string_starts_with(char* expected, char* actual, const char* function, unsigned int line) { char s[SEATEST_PRINT_BUFFER_SIZE]; sprintf(s, "Expected %s to start with %s", actual, expected); seatest_simple_test_result(strncmp(expected, actual, strlen(expected))==0, s, function, line); } void seatest_assert_string_contains(char* expected, char* actual, const char* function, unsigned int line) { char s[SEATEST_PRINT_BUFFER_SIZE]; sprintf(s, "Expected %s to be in %s", expected, actual); seatest_simple_test_result(strstr(actual, expected)!=0, s, function, line); } void seatest_assert_string_doesnt_contain(char* expected, char* actual, const char* function, unsigned int line) { char s[SEATEST_PRINT_BUFFER_SIZE]; sprintf(s, "Expected %s not to have %s in it", actual, expected); seatest_simple_test_result(strstr(actual, expected)==0, s, function, line); } void seatest_run_test(void) { sea_tests_run++; } void seatest_header_printer(char* s, int length, char f) { int l = strlen(s); int d = (length- (l + 2)) / 2; int i; for(i = 0; i 0) { printf(" Failed\r\n"); } else { printf(" ALL TESTS PASSED\r\n"); } printf(" %d tests run\r\n", sea_tests_run); printf(" in %lu ms\r\n",end - start); printf("==================================================\r\n"); _getch(); return sea_tests_failed == 0; }