ReactOS 0.4.16-dev-340-g0540c21
GetMessageTime.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS api tests
3 * LICENSE: GPL - See COPYING in the top level directory
4 * PURPOSE: Test for GetMessageTime and GetTickCount
5 * PROGRAMMERS: Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
6 */
7#include "precomp.h"
8
9#define TIMER_ID 999
10#define TIMER_INTERVAL 500 /* 500 milliseconds */
11
12#define MOUSE_LOCATION_X(x) ((DWORD)(x) * 0xFFFF / GetSystemMetrics(SM_CXSCREEN))
13#define MOUSE_LOCATION_Y(y) ((DWORD)(y) * 0xFFFF / GetSystemMetrics(SM_CYSCREEN))
14
15#define WIN_X 50
16#define WIN_Y 50
17#define WIN_CX 100
18#define WIN_CY 100
19
20static INT s_nCount = 0;
21static LONG s_nMsgTime = 0;
22
23static LRESULT CALLBACK
25{
26 static BOOL s_bReach_WM_MOUSEMOVE;
27 static BOOL s_bReach_WM_LBUTTONDOWN;
28 static BOOL s_bReach_WM_LBUTTONUP;
29 switch (uMsg)
30 {
31 case WM_CREATE:
32 s_nCount = 0;
35 s_bReach_WM_MOUSEMOVE = FALSE;
36 s_bReach_WM_LBUTTONDOWN = FALSE;
37 s_bReach_WM_LBUTTONUP = FALSE;
38 break;
39 case WM_TIMER:
40 if (s_nCount == 5)
41 {
44 break;
45 }
46 if (s_nCount != 0)
47 {
49 "GetMessageTime() is wrong, compared to previous one\n");
51 "GetMessageTime() is wrong, compared to GetTickCount()\n");
52 }
54 ok(s_nMsgTime != 0, "message time was zero.\n");
55 s_nCount++;
56 if (s_nCount == 5)
57 {
61 0, 0);
62 mouse_event(MOUSEEVENTF_MOVE, 1, 1, 0, 0);
65 }
66 break;
67 case WM_MOUSEMOVE:
68 trace("WM_MOUSEMOVE\n");
69 ok_int(s_nCount, 5);
70 // This test randomly fails on Windows 2003
71 //ok(GetMessageTime() - s_nMsgTime < TIMER_INTERVAL,
72 // "GetMessageTime() is wrong, compared to previous one\n");
74 "GetMessageTime() is wrong, compared to GetTickCount()\n");
75 s_bReach_WM_MOUSEMOVE = TRUE;
76 break;
77 case WM_LBUTTONDOWN:
78 trace("WM_LBUTTONDOWN\n");
79 ok_int(s_nCount, 5);
81 "GetMessageTime() is wrong, compared to previous one\n");
83 "GetMessageTime() is wrong, compared to GetTickCount()\n");
84 s_bReach_WM_LBUTTONDOWN = TRUE;
85 break;
86 case WM_LBUTTONUP:
87 trace("WM_LBUTTONUP\n");
88 ok_int(s_nCount, 5);
90 "GetMessageTime() is wrong, compared to previous one\n");
92 "GetMessageTime() is wrong, compared to GetTickCount()\n");
93 s_bReach_WM_LBUTTONUP = TRUE;
94 break;
95 case WM_DESTROY:
96 ok_int(s_bReach_WM_MOUSEMOVE, TRUE);
97 ok_int(s_bReach_WM_LBUTTONDOWN, TRUE);
98 ok_int(s_bReach_WM_LBUTTONUP, TRUE);
100 break;
101 default:
102 return DefWindowProcW(hwnd, uMsg, wParam, lParam);
103 }
104 return 0;
105}
106
108{
109 static const WCHAR s_szName[] = L"MessageTimeTestWindow";
110 WNDCLASSW wc;
111 ATOM atom;
112 HWND hwnd;
113 MSG msg;
114 BOOL bRet;
115
118 0, 0);
119
120 ZeroMemory(&wc, sizeof(wc));
125 wc.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1);
127 atom = RegisterClassW(&wc);
128 ok(atom != 0, "RegisterClassW\n");
129
134 ok(hwnd != NULL, "CreateWindowW\n");
135
136 if (hwnd)
137 {
140
141 while (GetMessageW(&msg, NULL, 0, 0))
142 {
145 }
146 }
147 else
148 {
149 skip("hwnd was NULL.\n");
150 }
151
153 ok_int(bRet, 1);
154
155 ok_int(s_nCount, 5);
156 ok(s_nMsgTime != 0, "message time was zero.\n");
157}
#define WIN_Y
#define TIMER_INTERVAL
static INT s_nCount
#define WIN_CX
static LONG s_nMsgTime
#define MOUSE_LOCATION_Y(y)
#define WIN_X
#define WIN_CY
static LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
#define MOUSE_LOCATION_X(x)
#define TIMER_ID
Definition: GetMessageTime.c:9
#define trace
Definition: atltest.h:70
#define ok(value,...)
Definition: atltest.h:57
#define skip(...)
Definition: atltest.h:64
#define START_TEST(x)
Definition: atltest.h:75
#define ok_int(expression, result)
Definition: atltest.h:134
#define msg(x)
Definition: auth_time.c:54
static WCHAR s_szName[MAX_PATH]
Definition: find.c:22
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
WORD ATOM
Definition: dimm.idl:113
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define CALLBACK
Definition: compat.h:35
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
Definition: loader.c:838
DWORD WINAPI GetTickCount(VOID)
Definition: time.c:455
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned int UINT
Definition: ndis.h:50
#define L(x)
Definition: ntvdm.h:50
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
long LONG
Definition: pedump.c:60
LPCWSTR lpszClassName
Definition: winuser.h:3188
HBRUSH hbrBackground
Definition: winuser.h:3186
HICON hIcon
Definition: winuser.h:3184
HINSTANCE hInstance
Definition: winuser.h:3183
WNDPROC lpfnWndProc
Definition: winuser.h:3180
HCURSOR hCursor
Definition: winuser.h:3185
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
int32_t INT
Definition: typedefs.h:58
#define ZeroMemory
Definition: winbase.h:1737
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
#define SW_SHOWNORMAL
Definition: winuser.h:773
#define MOUSEEVENTF_ABSOLUTE
Definition: winuser.h:1197
void WINAPI mouse_event(_In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ ULONG_PTR)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define MOUSEEVENTF_LEFTUP
Definition: winuser.h:1188
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
#define WM_CREATE
Definition: winuser.h:1611
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
#define IDC_ARROW
Definition: winuser.h:687
#define WM_MOUSEMOVE
Definition: winuser.h:1778
#define WM_LBUTTONDOWN
Definition: winuser.h:1779
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
#define IDI_APPLICATION
Definition: winuser.h:704
#define MOUSEEVENTF_MOVE
Definition: winuser.h:1186
#define MOUSEEVENTF_LEFTDOWN
Definition: winuser.h:1187
#define WM_TIMER
Definition: winuser.h:1745
#define LoadIcon
Definition: winuser.h:5825
BOOL WINAPI UpdateWindow(_In_ HWND)
#define LoadCursor
Definition: winuser.h:5824
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
Definition: winuser.h:4319
#define WM_LBUTTONUP
Definition: winuser.h:1780
LONG WINAPI GetMessageTime(void)
Definition: message.c:1361
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
#define WM_DESTROY
Definition: winuser.h:1612
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
BOOL WINAPI DestroyWindow(_In_ HWND)
#define COLOR_3DFACE
Definition: winuser.h:932
__wchar_t WCHAR
Definition: xmlstorage.h:180