mirror of
https://github.com/reactos/reactos.git
synced 2025-07-28 01:32:20 +00:00
[USER32_APITEST] -Move the helper functions in the common include directory
[UXTHEME_APITEST] -Use the helper functions to test the messages sent by DrawThemeParentBackground svn path=/trunk/; revision=74123
This commit is contained in:
parent
f7b5561d60
commit
93bbc9d548
19 changed files with 172 additions and 30 deletions
|
@ -34,6 +34,7 @@ add_subdirectory(psapi)
|
||||||
add_subdirectory(user32)
|
add_subdirectory(user32)
|
||||||
add_subdirectory(user32_dynamic)
|
add_subdirectory(user32_dynamic)
|
||||||
add_subdirectory(userenv)
|
add_subdirectory(userenv)
|
||||||
|
add_subdirectory(uxtheme)
|
||||||
if(NOT ARCH STREQUAL "amd64" AND NOT CMAKE_BUILD_TYPE STREQUAL "Release")
|
if(NOT ARCH STREQUAL "amd64" AND NOT CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||||
add_subdirectory(win32kdll)
|
add_subdirectory(win32kdll)
|
||||||
add_subdirectory(win32nt)
|
add_subdirectory(win32nt)
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <winuser.h>
|
#include <winuser.h>
|
||||||
#include "helper.h"
|
#include <msgtrace.h>
|
||||||
#include <undocuser.h>
|
#include <undocuser.h>
|
||||||
|
|
||||||
MSG_CACHE default_cache = {
|
MSG_CACHE default_cache = {
|
||||||
|
@ -58,6 +58,10 @@ static char* get_msg_name(UINT msg)
|
||||||
case WM_SETICON: return "WM_SETICON";
|
case WM_SETICON: return "WM_SETICON";
|
||||||
case WM_KEYDOWN: return "WM_KEYDOWN";
|
case WM_KEYDOWN: return "WM_KEYDOWN";
|
||||||
case WM_KEYUP: return "WM_KEYUP";
|
case WM_KEYUP: return "WM_KEYUP";
|
||||||
|
case WM_NOTIFY: return "WM_NOTIFY";
|
||||||
|
case WM_COMMAND: return "WM_COMMAND";
|
||||||
|
case WM_PRINTCLIENT: return "WM_PRINTCLIENT";
|
||||||
|
case WM_CTLCOLORSTATIC: return "WM_CTLCOLORSTATIC";
|
||||||
default: return NULL;
|
default: return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -203,16 +207,3 @@ void record_message(MSG_CACHE* cache, int iwnd, UINT message, MSG_TYPE type, int
|
||||||
|
|
||||||
cache->count++;
|
cache->count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
ATOM RegisterSimpleClass(WNDPROC lpfnWndProc, LPCWSTR lpszClassName)
|
|
||||||
{
|
|
||||||
WNDCLASSEXW wcex;
|
|
||||||
|
|
||||||
memset(&wcex, 0, sizeof(wcex));
|
|
||||||
wcex.cbSize = sizeof(WNDCLASSEX);
|
|
||||||
wcex.lpfnWndProc = lpfnWndProc;
|
|
||||||
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
|
|
||||||
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
|
|
||||||
wcex.lpszClassName = lpszClassName;
|
|
||||||
return RegisterClassExW(&wcex);
|
|
||||||
}
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#ifndef APITESTS_MSGTRACE_H
|
||||||
|
#define APITESTS_MSGTRACE_H
|
||||||
|
|
||||||
typedef enum _MSG_TYPE
|
typedef enum _MSG_TYPE
|
||||||
{
|
{
|
||||||
|
@ -31,8 +33,6 @@ void compare_cache(MSG_CACHE* cache, const char* file, int line, MSG_ENTRY *msg_
|
||||||
void trace_cache(MSG_CACHE* cache, const char* file, int line);
|
void trace_cache(MSG_CACHE* cache, const char* file, int line);
|
||||||
void empty_message_cache(MSG_CACHE* cache);
|
void empty_message_cache(MSG_CACHE* cache);
|
||||||
|
|
||||||
ATOM RegisterSimpleClass(WNDPROC lpfnWndProc, LPCWSTR lpszClassName);
|
|
||||||
|
|
||||||
/* filter messages that are affected by dwm */
|
/* filter messages that are affected by dwm */
|
||||||
static inline BOOL IsDWmMsg(UINT msg)
|
static inline BOOL IsDWmMsg(UINT msg)
|
||||||
{
|
{
|
||||||
|
@ -68,3 +68,5 @@ static inline BOOL IseKeyMsg(UINT msg)
|
||||||
if(notexpected) \
|
if(notexpected) \
|
||||||
ok((status & (notexpected))!=(notexpected), "wrong queue status. got non expected %li\n", (DWORD)(notexpected)); \
|
ok((status & (notexpected))!=(notexpected), "wrong queue status. got non expected %li\n", (DWORD)(notexpected)); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
13
rostests/apitests/include/user32testhelpers.h
Normal file
13
rostests/apitests/include/user32testhelpers.h
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
|
||||||
|
static __inline ATOM RegisterSimpleClass(WNDPROC lpfnWndProc, LPCWSTR lpszClassName)
|
||||||
|
{
|
||||||
|
WNDCLASSEXW wcex;
|
||||||
|
|
||||||
|
memset(&wcex, 0, sizeof(wcex));
|
||||||
|
wcex.cbSize = sizeof(WNDCLASSEX);
|
||||||
|
wcex.lpfnWndProc = lpfnWndProc;
|
||||||
|
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||||
|
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
|
||||||
|
wcex.lpszClassName = lpszClassName;
|
||||||
|
return RegisterClassExW(&wcex);
|
||||||
|
}
|
|
@ -9,7 +9,8 @@
|
||||||
|
|
||||||
#include <wingdi.h>
|
#include <wingdi.h>
|
||||||
#include <winuser.h>
|
#include <winuser.h>
|
||||||
#include "helper.h"
|
#include <msgtrace.h>
|
||||||
|
#include <user32testhelpers.h>
|
||||||
|
|
||||||
#define DESKTOP_ALL_ACCESS 0x01ff
|
#define DESKTOP_ALL_ACCESS 0x01ff
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
list(APPEND SOURCE
|
list(APPEND SOURCE
|
||||||
AttachThreadInput.c
|
AttachThreadInput.c
|
||||||
helper.c
|
../include/msgtrace.c
|
||||||
CreateDialog.c
|
CreateDialog.c
|
||||||
CreateIconFromResourceEx.c
|
CreateIconFromResourceEx.c
|
||||||
CreateWindowEx.c
|
CreateWindowEx.c
|
||||||
|
|
|
@ -8,8 +8,9 @@
|
||||||
#include <apitest.h>
|
#include <apitest.h>
|
||||||
|
|
||||||
#include <winuser.h>
|
#include <winuser.h>
|
||||||
#include "helper.h"
|
|
||||||
#include <undocuser.h>
|
#include <undocuser.h>
|
||||||
|
#include <msgtrace.h>
|
||||||
|
#include <user32testhelpers.h>
|
||||||
|
|
||||||
HWND hWnd1, hWnd2, hWnd3, hWnd4;
|
HWND hWnd1, hWnd2, hWnd3, hWnd4;
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <wine/test.h>
|
#include <wine/test.h>
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include "helper.h"
|
|
||||||
|
|
||||||
#define DCX_USESTYLE 0x00010000
|
#define DCX_USESTYLE 0x00010000
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
#include <wingdi.h>
|
#include <wingdi.h>
|
||||||
#include <winuser.h>
|
#include <winuser.h>
|
||||||
#include "helper.h"
|
|
||||||
#include <undocuser.h>
|
#include <undocuser.h>
|
||||||
|
|
||||||
static ATOM _RegisterClass(LPCWSTR lpwszClassName, HINSTANCE hInstance, UINT style, WNDPROC lpfnWndProc)
|
static ATOM _RegisterClass(LPCWSTR lpwszClassName, HINSTANCE hInstance, UINT style, WNDPROC lpfnWndProc)
|
||||||
|
|
|
@ -7,7 +7,9 @@
|
||||||
|
|
||||||
#include <apitest.h>
|
#include <apitest.h>
|
||||||
#include <winuser.h>
|
#include <winuser.h>
|
||||||
#include "helper.h"
|
|
||||||
|
#include <msgtrace.h>
|
||||||
|
#include <user32testhelpers.h>
|
||||||
|
|
||||||
static DWORD dwThread1;
|
static DWORD dwThread1;
|
||||||
static DWORD dwThread2;
|
static DWORD dwThread2;
|
||||||
|
|
|
@ -9,9 +9,11 @@
|
||||||
|
|
||||||
#include <wingdi.h>
|
#include <wingdi.h>
|
||||||
#include <winuser.h>
|
#include <winuser.h>
|
||||||
#include "helper.h"
|
|
||||||
#include <undocuser.h>
|
#include <undocuser.h>
|
||||||
|
|
||||||
|
#include <msgtrace.h>
|
||||||
|
#include <user32testhelpers.h>
|
||||||
|
|
||||||
HWND hWnd1, hWnd2;
|
HWND hWnd1, hWnd2;
|
||||||
|
|
||||||
/* FIXME: test for HWND_TOP, etc...*/
|
/* FIXME: test for HWND_TOP, etc...*/
|
||||||
|
|
|
@ -8,7 +8,8 @@
|
||||||
#include <apitest.h>
|
#include <apitest.h>
|
||||||
|
|
||||||
#include <winuser.h>
|
#include <winuser.h>
|
||||||
#include "helper.h"
|
#include <msgtrace.h>
|
||||||
|
#include <user32testhelpers.h>
|
||||||
|
|
||||||
static HWND hWndList[5 + 1];
|
static HWND hWndList[5 + 1];
|
||||||
static const int hWndCount = sizeof(hWndList) / sizeof(hWndList[0]) - 1;
|
static const int hWndCount = sizeof(hWndList) / sizeof(hWndList[0]) - 1;
|
||||||
|
|
|
@ -6,9 +6,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <apitest.h>
|
#include <apitest.h>
|
||||||
|
|
||||||
#include <winuser.h>
|
#include <winuser.h>
|
||||||
#include "helper.h"
|
#include <user32testhelpers.h>
|
||||||
|
|
||||||
static ATOM Atom1, Atom2, Atom3;
|
static ATOM Atom1, Atom2, Atom3;
|
||||||
|
|
||||||
|
|
|
@ -9,9 +9,11 @@
|
||||||
|
|
||||||
#include <wingdi.h>
|
#include <wingdi.h>
|
||||||
#include <winuser.h>
|
#include <winuser.h>
|
||||||
#include "helper.h"
|
|
||||||
#include <undocuser.h>
|
#include <undocuser.h>
|
||||||
|
|
||||||
|
#include <msgtrace.h>
|
||||||
|
#include <user32testhelpers.h>
|
||||||
|
|
||||||
HWND hWnd1, hWnd2;
|
HWND hWnd1, hWnd2;
|
||||||
|
|
||||||
/* FIXME: test for HWND_TOP, etc...*/
|
/* FIXME: test for HWND_TOP, etc...*/
|
||||||
|
|
|
@ -6,12 +6,13 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <apitest.h>
|
#include <apitest.h>
|
||||||
|
|
||||||
#include <wingdi.h>
|
#include <wingdi.h>
|
||||||
#include <winuser.h>
|
#include <winuser.h>
|
||||||
#include "helper.h"
|
|
||||||
#include <undocuser.h>
|
#include <undocuser.h>
|
||||||
|
|
||||||
|
#include <msgtrace.h>
|
||||||
|
#include <user32testhelpers.h>
|
||||||
|
|
||||||
HWND hWnd1, hWnd2, hWnd3;
|
HWND hWnd1, hWnd2, hWnd3;
|
||||||
HHOOK hMouseHookLL, hMouseHook;
|
HHOOK hMouseHookLL, hMouseHook;
|
||||||
int ignore_timer = 0, ignore_mouse = 0, ignore_mousell = 0;
|
int ignore_timer = 0, ignore_mouse = 0, ignore_mousell = 0;
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <wingdi.h>
|
#include <wingdi.h>
|
||||||
#include <winuser.h>
|
#include <winuser.h>
|
||||||
#include "helper.h"
|
#include <user32testhelpers.h>
|
||||||
#include <ndk/umtypes.h>
|
#include <ndk/umtypes.h>
|
||||||
#include <ndk/obfuncs.h>
|
#include <ndk/obfuncs.h>
|
||||||
|
|
||||||
|
|
11
rostests/apitests/uxtheme/CMakeLists.txt
Normal file
11
rostests/apitests/uxtheme/CMakeLists.txt
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
list(APPEND SOURCE
|
||||||
|
DrawThemeParentBackground.c
|
||||||
|
../include/msgtrace.c
|
||||||
|
testlist.c)
|
||||||
|
|
||||||
|
add_executable(uxtheme_apitest ${SOURCE})
|
||||||
|
target_link_libraries(uxtheme_apitest wine ${PSEH_LIB})
|
||||||
|
set_module_type(uxtheme_apitest win32cui)
|
||||||
|
add_importlibs(uxtheme_apitest uxtheme comctl32 user32 msvcrt kernel32)
|
||||||
|
add_rostests_file(TARGET uxtheme_apitest)
|
105
rostests/apitests/uxtheme/DrawThemeParentBackground.c
Normal file
105
rostests/apitests/uxtheme/DrawThemeParentBackground.c
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
/*
|
||||||
|
* PROJECT: ReactOS api tests
|
||||||
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
|
* PURPOSE: Test for DrawThemeParentBackground
|
||||||
|
* PROGRAMMERS: Giannis Adamopoulos
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <apitest.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <windows.h>
|
||||||
|
#include <uxtheme.h>
|
||||||
|
#include <undocuser.h>
|
||||||
|
#include <msgtrace.h>
|
||||||
|
#include <user32testhelpers.h>
|
||||||
|
|
||||||
|
HWND hWnd1, hWnd2;
|
||||||
|
|
||||||
|
static int get_iwnd(HWND hWnd)
|
||||||
|
{
|
||||||
|
if(hWnd == hWnd1) return 1;
|
||||||
|
else if(hWnd == hWnd2) return 2;
|
||||||
|
else return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static LRESULT CALLBACK TestProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
int iwnd = get_iwnd(hwnd);
|
||||||
|
|
||||||
|
if(message > WM_USER || !iwnd || message == WM_GETICON)
|
||||||
|
return DefWindowProc(hwnd, message, wParam, lParam);
|
||||||
|
|
||||||
|
RECORD_MESSAGE(iwnd, message, SENT, 0,0);
|
||||||
|
return DefWindowProc(hwnd, message, wParam, lParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void FlushMessages()
|
||||||
|
{
|
||||||
|
MSG msg;
|
||||||
|
|
||||||
|
while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE ))
|
||||||
|
{
|
||||||
|
int iwnd = get_iwnd(msg.hwnd);
|
||||||
|
if(iwnd && msg.message <= WM_USER)
|
||||||
|
RECORD_MESSAGE(iwnd, msg.message, POST,0,0);
|
||||||
|
DispatchMessageW( &msg );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MSG_ENTRY draw_parent_chain[]={{1, WM_ERASEBKGND},
|
||||||
|
{1, WM_PRINTCLIENT},
|
||||||
|
{0,0}};
|
||||||
|
|
||||||
|
void Test_Messages()
|
||||||
|
{
|
||||||
|
HDC hdc;
|
||||||
|
RECT rc;
|
||||||
|
|
||||||
|
RegisterSimpleClass(TestProc, L"testClass");
|
||||||
|
|
||||||
|
hWnd1 = CreateWindowW(L"testClass", L"Test parent", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 200, 200, 0, NULL, NULL, NULL);
|
||||||
|
ok (hWnd1 != NULL, "Expected CreateWindowW to succeed\n");
|
||||||
|
ShowWindow(hWnd1, SW_SHOW);
|
||||||
|
UpdateWindow(hWnd1);
|
||||||
|
|
||||||
|
hWnd2 = CreateWindowW(L"testClass", L"test window", WS_CHILD | WS_VISIBLE, 0, 0, 100, 100, hWnd1, NULL, NULL, NULL);
|
||||||
|
ok (hWnd2 != NULL, "Expected CreateWindowW to succeed\n");
|
||||||
|
ShowWindow(hWnd2, SW_SHOW);
|
||||||
|
UpdateWindow(hWnd2);
|
||||||
|
|
||||||
|
FlushMessages();
|
||||||
|
EMPTY_CACHE();
|
||||||
|
|
||||||
|
DrawThemeParentBackground(hWnd2, NULL, NULL);
|
||||||
|
FlushMessages();
|
||||||
|
COMPARE_CACHE(empty_chain);
|
||||||
|
|
||||||
|
DrawThemeParentBackground(hWnd1, NULL, NULL);
|
||||||
|
FlushMessages();
|
||||||
|
COMPARE_CACHE(empty_chain);
|
||||||
|
|
||||||
|
hdc = GetDC(hWnd1);
|
||||||
|
|
||||||
|
DrawThemeParentBackground(hWnd2, hdc, NULL);
|
||||||
|
FlushMessages();
|
||||||
|
COMPARE_CACHE(draw_parent_chain);
|
||||||
|
|
||||||
|
DrawThemeParentBackground(hWnd1, hdc, NULL);
|
||||||
|
FlushMessages();
|
||||||
|
COMPARE_CACHE(empty_chain);
|
||||||
|
|
||||||
|
memset(&rc, 0, sizeof(rc));
|
||||||
|
|
||||||
|
DrawThemeParentBackground(hWnd2, hdc, &rc);
|
||||||
|
FlushMessages();
|
||||||
|
COMPARE_CACHE(draw_parent_chain);
|
||||||
|
|
||||||
|
DrawThemeParentBackground(hWnd1, hdc, &rc);
|
||||||
|
FlushMessages();
|
||||||
|
COMPARE_CACHE(empty_chain);
|
||||||
|
}
|
||||||
|
|
||||||
|
START_TEST(DrawThemeParentBackground)
|
||||||
|
{
|
||||||
|
Test_Messages();
|
||||||
|
}
|
12
rostests/apitests/uxtheme/testlist.c
Normal file
12
rostests/apitests/uxtheme/testlist.c
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#define __ROS_LONG64__
|
||||||
|
|
||||||
|
#define STANDALONE
|
||||||
|
#include <apitest.h>
|
||||||
|
|
||||||
|
extern void func_DrawThemeParentBackground(void);
|
||||||
|
|
||||||
|
const struct test winetest_testlist[] =
|
||||||
|
{
|
||||||
|
{ "DrawThemeParentBackground", func_DrawThemeParentBackground },
|
||||||
|
{ 0, 0 }
|
||||||
|
};
|
Loading…
Add table
Add a link
Reference in a new issue