Author: hyperion Date: Wed Dec 24 17:22:04 2008 New Revision: 38339
URL: http://svn.reactos.org/svn/reactos?rev=38339&view=rev Log: Now a single test suite with 89 tests, instead of 89 test suites with 1 test each Added dummy implementations of sanity checks for compilers/architectures I didn't write them for yet. Long story short: now compiles and runs with Visual C++, both x86 and x64 Added copyright/license header
Modified: trunk/rostests/tests/pseh2/psehtest.c trunk/rostests/tests/pseh2/psehtest2.c
Modified: trunk/rostests/tests/pseh2/psehtest.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/tests/pseh2/psehtest.c?rev... ============================================================================== --- trunk/rostests/tests/pseh2/psehtest.c [iso-8859-1] (original) +++ trunk/rostests/tests/pseh2/psehtest.c [iso-8859-1] Wed Dec 24 17:22:04 2008 @@ -1,3 +1,25 @@ +/* + Copyright (c) 2008 KJK::Hyperion + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +*/ + #include <stddef.h> #include <stdio.h> #include <stdlib.h> @@ -42,12 +64,7 @@
static int call_test(int (*)(void));
-#define DEFINE_TEST(NAME_) \ - static int test_ ## NAME_(void); \ - \ - static void NAME_(void) { ok(call_test(test_ ## NAME_), "test failed\n"); } \ - \ - static int test_ ## NAME_(void) +#define DEFINE_TEST(NAME_) static int test_ ## NAME_(void)
/* Empty statements *///{{{ DEFINE_TEST(empty_1) @@ -2240,121 +2257,6 @@ // TODO //}}}
-#define USE_TEST_NAME_(NAME_) # NAME_ -#define USE_TEST_NAME(NAME_) USE_TEST_NAME_(NAME_) -#define USE_TEST(NAME_) { USE_TEST_NAME(NAME_), NAME_ } - -const struct test winetest_testlist[] = -{ - USE_TEST(empty_1), - USE_TEST(empty_2), - USE_TEST(empty_3), - USE_TEST(empty_4), - USE_TEST(empty_5), - USE_TEST(empty_6), - USE_TEST(empty_7), - USE_TEST(empty_8), - - USE_TEST(execute_handler_1), - USE_TEST(continue_execution_1), - USE_TEST(continue_search_1), - USE_TEST(execute_handler_2), - USE_TEST(continue_execution_2), - - USE_TEST(execute_handler_3), - USE_TEST(continue_execution_3), - USE_TEST(continue_search_2), - USE_TEST(execute_handler_4), - USE_TEST(continue_execution_4), - - USE_TEST(execute_handler_5), - USE_TEST(continue_execution_5), - USE_TEST(continue_search_3), - USE_TEST(execute_handler_6), - USE_TEST(continue_execution_6), - - USE_TEST(execute_handler_7), - USE_TEST(continue_execution_7), - USE_TEST(continue_search_4), - USE_TEST(execute_handler_8), - USE_TEST(continue_execution_8), - - USE_TEST(execute_handler_9), - USE_TEST(continue_execution_9), - USE_TEST(continue_search_5), - USE_TEST(execute_handler_10), - USE_TEST(continue_execution_10), - - USE_TEST(execute_handler_11), - USE_TEST(continue_execution_11), - USE_TEST(continue_search_6), - USE_TEST(execute_handler_12), - USE_TEST(continue_execution_12), - - USE_TEST(leave_1), - USE_TEST(leave_2), - USE_TEST(leave_3), - USE_TEST(leave_4), - USE_TEST(leave_5), - USE_TEST(leave_6), - - USE_TEST(yield_1), - USE_TEST(yield_2), - USE_TEST(yield_3), - USE_TEST(yield_4), - USE_TEST(yield_5), - USE_TEST(yield_6), - - USE_TEST(finally_1), - USE_TEST(finally_2), - USE_TEST(finally_3), - USE_TEST(finally_4), - USE_TEST(finally_5), - USE_TEST(finally_6), - USE_TEST(finally_7), - USE_TEST(finally_8), - USE_TEST(finally_9), - USE_TEST(finally_10), - USE_TEST(finally_11), - USE_TEST(finally_12), -#if 0 - USE_TEST(finally_13), - USE_TEST(finally_14), -#endif - - USE_TEST(xpointers_1), - USE_TEST(xpointers_2), - USE_TEST(xpointers_3), - USE_TEST(xpointers_4), - USE_TEST(xpointers_5), - USE_TEST(xpointers_6), - USE_TEST(xpointers_7), - USE_TEST(xpointers_8), - USE_TEST(xpointers_9), - USE_TEST(xpointers_10), - USE_TEST(xpointers_11), - USE_TEST(xpointers_12), - USE_TEST(xpointers_13), - USE_TEST(xpointers_14), - USE_TEST(xpointers_15), - USE_TEST(xpointers_16), - - USE_TEST(xcode_1), - USE_TEST(xcode_2), - USE_TEST(xcode_3), - - USE_TEST(abnorm_1), - USE_TEST(abnorm_2), - USE_TEST(abnorm_3), - USE_TEST(abnorm_4), - USE_TEST(abnorm_5), - USE_TEST(abnorm_6), - USE_TEST(abnorm_7), - USE_TEST(abnorm_8), - - { 0, 0 } -}; - static LONG WINAPI unhandled_exception(PEXCEPTION_POINTERS ExceptionInfo) { @@ -2372,12 +2274,14 @@ void * edi; }; #else -#error TODO +struct volatile_context +{ + int _ignore; +}; #endif
-#if defined(__GNUC__) static -__attribute__((noinline)) +DECLSPEC_NOINLINE int sanity_check(int ret, struct volatile_context * before, struct volatile_context * after) { if(ret && memcmp(before, after, sizeof(before))) @@ -2387,17 +2291,16 @@ }
static -__attribute__((noinline)) +DECLSPEC_NOINLINE int call_test(int (* func)(void)) { static int ret; + static struct volatile_context before, after; static LPTOP_LEVEL_EXCEPTION_FILTER prev_unhandled_exception;
prev_unhandled_exception = SetUnhandledExceptionFilter(&unhandled_exception);
-#if defined(__i386__) - static struct volatile_context before, after; - +#if defined(__GNUC__) && defined(__i386__) __asm__ __volatile__ ( "mov %%esp, 0x00 + %c[before]\n" @@ -2423,14 +2326,143 @@ "ebx", "ecx", "edx", "esi", "edi", "flags", "memory" ); #else -#error TODO + ret = func(); #endif
SetUnhandledExceptionFilter(prev_unhandled_exception); return ret; } -#else -#error TODO -#endif + +#define USE_TEST_NAME_(NAME_) # NAME_ +#define USE_TEST_NAME(NAME_) USE_TEST_NAME_(NAME_) +#define USE_TEST(NAME_) { USE_TEST_NAME(test_ ## NAME_), test_ ## NAME_ } + +struct subtest +{ + const char * name; + int (* func)(void); +}; + +void testsuite_syntax(void) +{ + const struct subtest testsuite[] = + { + USE_TEST(empty_1), + USE_TEST(empty_2), + USE_TEST(empty_3), + USE_TEST(empty_4), + USE_TEST(empty_5), + USE_TEST(empty_6), + USE_TEST(empty_7), + USE_TEST(empty_8), + + USE_TEST(execute_handler_1), + USE_TEST(continue_execution_1), + USE_TEST(continue_search_1), + USE_TEST(execute_handler_2), + USE_TEST(continue_execution_2), + + USE_TEST(execute_handler_3), + USE_TEST(continue_execution_3), + USE_TEST(continue_search_2), + USE_TEST(execute_handler_4), + USE_TEST(continue_execution_4), + + USE_TEST(execute_handler_5), + USE_TEST(continue_execution_5), + USE_TEST(continue_search_3), + USE_TEST(execute_handler_6), + USE_TEST(continue_execution_6), + + USE_TEST(execute_handler_7), + USE_TEST(continue_execution_7), + USE_TEST(continue_search_4), + USE_TEST(execute_handler_8), + USE_TEST(continue_execution_8), + + USE_TEST(execute_handler_9), + USE_TEST(continue_execution_9), + USE_TEST(continue_search_5), + USE_TEST(execute_handler_10), + USE_TEST(continue_execution_10), + + USE_TEST(execute_handler_11), + USE_TEST(continue_execution_11), + USE_TEST(continue_search_6), + USE_TEST(execute_handler_12), + USE_TEST(continue_execution_12), + + USE_TEST(leave_1), + USE_TEST(leave_2), + USE_TEST(leave_3), + USE_TEST(leave_4), + USE_TEST(leave_5), + USE_TEST(leave_6), + + USE_TEST(yield_1), + USE_TEST(yield_2), + USE_TEST(yield_3), + USE_TEST(yield_4), + USE_TEST(yield_5), + USE_TEST(yield_6), + + USE_TEST(finally_1), + USE_TEST(finally_2), + USE_TEST(finally_3), + USE_TEST(finally_4), + USE_TEST(finally_5), + USE_TEST(finally_6), + USE_TEST(finally_7), + USE_TEST(finally_8), + USE_TEST(finally_9), + USE_TEST(finally_10), + USE_TEST(finally_11), + USE_TEST(finally_12), + #if 0 + USE_TEST(finally_13), + USE_TEST(finally_14), + #endif + + USE_TEST(xpointers_1), + USE_TEST(xpointers_2), + USE_TEST(xpointers_3), + USE_TEST(xpointers_4), + USE_TEST(xpointers_5), + USE_TEST(xpointers_6), + USE_TEST(xpointers_7), + USE_TEST(xpointers_8), + USE_TEST(xpointers_9), + USE_TEST(xpointers_10), + USE_TEST(xpointers_11), + USE_TEST(xpointers_12), + USE_TEST(xpointers_13), + USE_TEST(xpointers_14), + USE_TEST(xpointers_15), + USE_TEST(xpointers_16), + + USE_TEST(xcode_1), + USE_TEST(xcode_2), + USE_TEST(xcode_3), + + USE_TEST(abnorm_1), + USE_TEST(abnorm_2), + USE_TEST(abnorm_3), + USE_TEST(abnorm_4), + USE_TEST(abnorm_5), + USE_TEST(abnorm_6), + USE_TEST(abnorm_7), + USE_TEST(abnorm_8), + }; + + size_t i; + + for(i = 0; i < sizeof(testsuite) / sizeof(testsuite[0]); ++ i) + ok(call_test(testsuite[i].func), "%s failed\n", testsuite[i].name); +} + +const struct test winetest_testlist[] = { + { "pseh2_syntax", testsuite_syntax }, + { 0, 0 } +};
/* EOF */
Modified: trunk/rostests/tests/pseh2/psehtest2.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/tests/pseh2/psehtest2.c?re... ============================================================================== --- trunk/rostests/tests/pseh2/psehtest2.c [iso-8859-1] (original) +++ trunk/rostests/tests/pseh2/psehtest2.c [iso-8859-1] Wed Dec 24 17:22:04 2008 @@ -1,3 +1,25 @@ +/* + Copyright (c) 2008 KJK::Hyperion + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +*/ + extern int return_arg(int arg) {