1 /*
2  * PROJECT:     ReactOS Win32k tests
3  * LICENSE:     LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
4  * PURPOSE:     Test for NtUserGetAsyncKeyState
5  * COPYRIGHT:   Copyright 2022 Thomas Faber (thomas.faber@reactos.org)
6  */
7 
8 #include "../win32nt.h"
9 
10 START_TEST(NtUserGetAsyncKeyState)
11 {
12     SHORT Ret;
13     DWORD Error;
14 
15     SetLastError(0xdeadbeef);
16     Ret = NtUserGetAsyncKeyState(0);
17     Error = GetLastError();
18     ok(Ret == 0, "Ret = %d\n", Ret);
19     ok(Error == 0xdeadbeef, "Error = %lu\n", Error);
20 
21     SetLastError(0xdeadbeef);
22     Ret = NtUserGetAsyncKeyState(1); // VK_LBUTTON
23     Error = GetLastError();
24     ok(Ret == 0 || Ret == 1, "Ret = %d\n", Ret);
25     ok(Error == 0xdeadbeef, "Error = %lu\n", Error);
26 
27     SetLastError(0xdeadbeef);
28     Ret = NtUserGetAsyncKeyState(0xfe);
29     Error = GetLastError();
30     ok(Ret == 0, "Ret = %d\n", Ret);
31     ok(Error == 0xdeadbeef, "Error = %lu\n", Error);
32 
33     SetLastError(0xdeadbeef);
34     Ret = NtUserGetAsyncKeyState(0xff);
35     Error = GetLastError();
36     ok(Ret == 0, "Ret = %d\n", Ret);
37     ok(Error == 0xdeadbeef, "Error = %lu\n", Error);
38 
39     SetLastError(0xdeadbeef);
40     Ret = NtUserGetAsyncKeyState(0x100);
41     Error = GetLastError();
42     ok(Ret == 0, "Ret = %d\n", Ret);
43     ok(Error == ERROR_INVALID_PARAMETER, "Error = %lu\n", Error);
44 
45     SetLastError(0xdeadbeef);
46     Ret = NtUserGetAsyncKeyState(0x101);
47     Error = GetLastError();
48     ok(Ret == 0, "Ret = %d\n", Ret);
49     ok(Error == ERROR_INVALID_PARAMETER, "Error = %lu\n", Error);
50 
51     SetLastError(0xdeadbeef);
52     Ret = NtUserGetAsyncKeyState(0x10000000);
53     Error = GetLastError();
54     ok(Ret == 0, "Ret = %d\n", Ret);
55     ok(Error == ERROR_INVALID_PARAMETER, "Error = %lu\n", Error);
56 
57     SetLastError(0xdeadbeef);
58     Ret = NtUserGetAsyncKeyState(0x7fffffff);
59     Error = GetLastError();
60     ok(Ret == 0, "Ret = %d\n", Ret);
61     ok(Error == ERROR_INVALID_PARAMETER, "Error = %lu\n", Error);
62 
63     SetLastError(0xdeadbeef);
64     Ret = NtUserGetAsyncKeyState(0x80000000);
65     Error = GetLastError();
66     ok(Ret == 0, "Ret = %d\n", Ret);
67     ok(Error == ERROR_INVALID_PARAMETER, "Error = %lu\n", Error);
68 
69     SetLastError(0xdeadbeef);
70     Ret = NtUserGetAsyncKeyState(-2);
71     Error = GetLastError();
72     ok(Ret == 0, "Ret = %d\n", Ret);
73     ok(Error == ERROR_INVALID_PARAMETER, "Error = %lu\n", Error);
74 
75     SetLastError(0xdeadbeef);
76     Ret = NtUserGetAsyncKeyState(-1);
77     Error = GetLastError();
78     ok(Ret == 0, "Ret = %d\n", Ret);
79     ok(Error == ERROR_INVALID_PARAMETER, "Error = %lu\n", Error);
80 }
81