[USER32_WINETEST]

- Split user32:msg test to 14 separate tests
- The original test consisted of more than 14k lines of code

svn path=/trunk/; revision=66454
This commit is contained in:
Giannis Adamopoulos 2015-02-25 15:55:57 +00:00
parent 4c25d9683c
commit e657208f02
2 changed files with 270 additions and 2 deletions

View file

@ -13324,7 +13324,11 @@ static void test_WaitForInputIdle( char *argv0 )
{
ResetEvent( start_event );
ResetEvent( end_event );
#if 0
sprintf( path, "%s msg %u", argv0, i );
#else
sprintf( path, "%s msg_queue %u", argv0, i );
#endif
ret = CreateProcessA( NULL, path, NULL, NULL, TRUE, 0, NULL, NULL, &startup, &pi );
ok( ret, "CreateProcess '%s' failed err %u.\n", path, GetLastError() );
if (ret)
@ -14483,6 +14487,7 @@ static void init_funcs(void)
#undef X
}
#if 0
START_TEST(msg)
{
char **test_argv;
@ -14623,3 +14628,239 @@ START_TEST(msg)
}
DeleteCriticalSection( &sequence_cs );
}
#endif
static void init_tests()
{
HMODULE hModuleImm32;
BOOL (WINAPI *pImmDisableIME)(DWORD);
init_funcs();
InitializeCriticalSection( &sequence_cs );
init_procs();
hModuleImm32 = LoadLibraryA("imm32.dll");
if (hModuleImm32) {
pImmDisableIME = (void *)GetProcAddress(hModuleImm32, "ImmDisableIME");
if (pImmDisableIME)
pImmDisableIME(0);
}
pImmDisableIME = NULL;
FreeLibrary(hModuleImm32);
if (!RegisterWindowClasses()) assert(0);
cbt_hook_thread_id = GetCurrentThreadId();
hCBT_hook = SetWindowsHookExA(WH_CBT, cbt_hook_proc, 0, GetCurrentThreadId());
if (!hCBT_hook) win_skip( "cannot set global hook, will skip hook tests\n" );
}
static void cleanup_tests()
{
BOOL ret;
UnhookWindowsHookEx(hCBT_hook);
if (pUnhookWinEvent && hEvent_hook)
{
ret = pUnhookWinEvent(hEvent_hook);
ok( ret, "UnhookWinEvent error %d\n", GetLastError());
SetLastError(0xdeadbeef);
ok(!pUnhookWinEvent(hEvent_hook), "UnhookWinEvent succeeded\n");
ok(GetLastError() == ERROR_INVALID_HANDLE || /* Win2k */
GetLastError() == 0xdeadbeef, /* Win9x */
"unexpected error %d\n", GetLastError());
}
DeleteCriticalSection( &sequence_cs );
}
START_TEST(msg_queue)
{
int argc;
char **test_argv;
argc = winetest_get_mainargs( &test_argv );
if (argc >= 3)
{
unsigned int arg;
/* Child process. */
sscanf (test_argv[2], "%d", (unsigned int *) &arg);
do_wait_idle_child( arg );
return;
}
init_tests();
test_PostMessage();
test_PeekMessage();
test_PeekMessage2();
test_interthread_messages();
test_DispatchMessage();
test_SendMessageTimeout();
test_quit_message();
test_WaitForInputIdle( test_argv[0] );
test_DestroyWindow();
cleanup_tests();
}
START_TEST(msg_messages)
{
init_tests();
test_message_conversion();
test_messages();
test_wmime_keydown_message();
test_nullCallback();
test_dbcs_wm_char();
test_unicode_wm_char();
test_defwinproc();
cleanup_tests();
}
START_TEST(msg_focus)
{
init_tests();
test_SetFocus();
test_SetActiveWindow();
/* keep it the last test, under Windows it tends to break the tests
* which rely on active/foreground windows being correct.
*/
test_SetForegroundWindow();
cleanup_tests();
}
START_TEST(msg_winpos)
{
init_tests();
test_SetParent();
test_ShowWindow();
test_setwindowpos();
test_showwindow();
test_SetWindowRgn();
invisible_parent_tests();
cleanup_tests();
}
START_TEST(msg_paint)
{
init_tests();
test_scrollwindowex();
test_paint_messages();
test_paintingloop();
cleanup_tests();
}
START_TEST(msg_input)
{
init_tests();
test_accelerators();
if (!pTrackMouseEvent)
win_skip("TrackMouseEvent is not available\n");
else
test_TrackMouseEvent();
test_keyflags();
test_hotkey();
cleanup_tests();
}
START_TEST(msg_timer)
{
init_tests();
test_timers();
test_timers_no_wnd();
cleanup_tests();
}
typedef BOOL (WINAPI *IS_WINEVENT_HOOK_INSTALLED)(DWORD);
START_TEST(msg_hook)
{
// HMODULE user32 = GetModuleHandleA("user32.dll");
// IS_WINEVENT_HOOK_INSTALLED pIsWinEventHookInstalled = (IS_WINEVENT_HOOK_INSTALLED)GetProcAddress(user32, "IsWinEventHookInstalled");
BOOL (WINAPI *pIsWinEventHookInstalled)(DWORD)= 0;/*GetProcAddress(user32, "IsWinEventHookInstalled");*/
init_tests();
if (pSetWinEventHook)
{
hEvent_hook = pSetWinEventHook(EVENT_MIN, EVENT_MAX,
GetModuleHandleA(0), win_event_proc,
0, GetCurrentThreadId(),
WINEVENT_INCONTEXT);
if (pIsWinEventHookInstalled && hEvent_hook)
{
UINT event;
for (event = EVENT_MIN; event <= EVENT_MAX; event++)
ok(pIsWinEventHookInstalled(event), "IsWinEventHookInstalled(%u) failed\n", event);
}
}
if (!hEvent_hook) win_skip( "no win event hook support\n" );
test_winevents();
/* Fix message sequences before removing 4 lines below */
if (pUnhookWinEvent && hEvent_hook)
{
BOOL ret;
ret = pUnhookWinEvent(hEvent_hook);
ok( ret, "UnhookWinEvent error %d\n", GetLastError());
pUnhookWinEvent = 0;
}
hEvent_hook = 0;
if (hCBT_hook) test_set_hook();
cleanup_tests();
}
START_TEST(msg_menu)
{
init_tests();
test_sys_menu();
test_menu_messages();
if(!winetest_interactive)
skip("CORE-8299 : Skip Tracking popup menu tests.\n");
else
{
test_TrackPopupMenu();
test_TrackPopupMenuEmpty();
}
cleanup_tests();
}
START_TEST(msg_mdi)
{
init_tests();
test_mdi_messages();
cleanup_tests();
}
START_TEST(msg_controls)
{
init_tests();
test_button_messages();
test_static_messages();
test_listbox_messages();
test_combobox_messages();
test_edit_messages();
cleanup_tests();
}
START_TEST(msg_layered_window)
{
init_tests();
test_layered_window();
cleanup_tests();
}
START_TEST(msg_dialog)
{
init_tests();
test_dialog_messages();
test_EndDialog();
cleanup_tests();
}
START_TEST(msg_clipboard)
{
init_tests();
test_clipboard_viewers();
cleanup_tests();
}

View file

@ -17,7 +17,21 @@ extern void func_input(void);
extern void func_listbox(void);
extern void func_menu(void);
extern void func_monitor(void);
extern void func_msg(void);
//extern void func_msg(void);
extern void func_msg_queue(void);
extern void func_msg_messages(void);
extern void func_msg_focus(void);
extern void func_msg_winpos(void);
extern void func_msg_paint(void);
extern void func_msg_input(void);
extern void func_msg_timer(void);
extern void func_msg_hook(void);
extern void func_msg_menu(void);
extern void func_msg_mdi(void);
extern void func_msg_controls(void);
extern void func_msg_layered_window(void);
extern void func_msg_dialog(void);
extern void func_msg_clipboard(void);
extern void func_resource(void);
extern void func_scroll(void);
extern void func_static(void);
@ -44,7 +58,20 @@ const struct test winetest_testlist[] =
{ "listbox", func_listbox },
{ "menu", func_menu },
{ "monitor", func_monitor },
{ "msg", func_msg },
{ "msg_queue", func_msg_queue},
{ "msg_messages", func_msg_messages},
{ "msg_focus", func_msg_focus},
{ "msg_winpos", func_msg_winpos},
{ "msg_paint", func_msg_paint},
{ "msg_input", func_msg_input},
{ "msg_timer", func_msg_timer},
{ "msg_hook", func_msg_hook},
{ "msg_menu", func_msg_menu},
{ "msg_mdi", func_msg_mdi},
{ "msg_controls", func_msg_controls},
{ "msg_layered_window", func_msg_layered_window},
{ "msg_dialog", func_msg_dialog},
{ "msg_clipboard", func_msg_clipboard},
{ "resource", func_resource },
{ "scroll", func_scroll },
{ "static", func_static },