mirror of
https://github.com/reactos/reactos.git
synced 2024-08-30 07:08:19 +00:00
1198 lines
40 KiB
C
1198 lines
40 KiB
C
/*
|
|
* PROJECT: ReactOS api tests
|
|
* LICENSE: GPL - See COPYING in the top level directory
|
|
* PURPOSE: Test for NtUserSystemParametersInfo
|
|
* PROGRAMMERS:
|
|
*/
|
|
|
|
#include <win32nt.h>
|
|
|
|
#include <winreg.h>
|
|
|
|
static const WCHAR* KEY_MOUSE = L"Control Panel\\Mouse";
|
|
//static const WCHAR* VAL_MOUSE1 = L"MouseThreshold1";
|
|
//static const WCHAR* VAL_MOUSE2 = L"MouseThreshold2";
|
|
//static const WCHAR* VAL_MOUSE3 = L"MouseSpeed";
|
|
//static const WCHAR* VAL_DBLCLKWIDTH = L"DoubleClickWidth";
|
|
//static const WCHAR* VAL_DBLCLKHEIGHT = L"DoubleClickHeight";
|
|
//static const WCHAR* VAL_DBLCLKTIME = L"DoubleClickSpeed";
|
|
static const WCHAR* VAL_SWAP = L"SwapMouseButtons";
|
|
|
|
static const WCHAR* KEY_DESKTOP = L"Control Panel\\Desktop";
|
|
//static const WCHAR* VAL_SCRTO = L"ScreenSaveTimeOut";
|
|
//static const WCHAR* VAL_SCRACT = L"ScreenSaveActive";
|
|
//static const WCHAR* VAL_GRID = L"GridGranularity";
|
|
//static const WCHAR* VAL_DRAG = L"DragFullWindows";
|
|
//static const WCHAR* VAL_DRAGHEIGHT = L"DragHeight";
|
|
//static const WCHAR* VAL_DRAGWIDTH = L"DragWidth";
|
|
//static const WCHAR* VAL_FNTSMOOTH = L"FontSmoothing";
|
|
static const WCHAR* VAL_PREFMASK = L"UserPreferencesMask";
|
|
|
|
enum
|
|
{
|
|
UPM_ACTIVEWINDOWTRACKING = 0x01,
|
|
UPM_MENUANIMATION = 0x02,
|
|
UPM_COMBOBOXANIMATION = 0x04,
|
|
UPM_LISTBOXSMOOTHSCROLLING = 0x08,
|
|
UPM_GRADIENTCAPTIONS = 0x10,
|
|
UPM_KEYBOARDCUES = 0x20,
|
|
UPM_ACTIVEWNDTRKZORDER = 0x40,
|
|
UPM_HOTTRACKING = 0x80,
|
|
UPM_RESERVED = 0x100,
|
|
UPM_MENUFADE = 0x200,
|
|
UPM_SELECTIONFADE = 0x400,
|
|
UPM_TOOLTIPANIMATION = 0x800,
|
|
UPM_TOOLTIPFADE = 0x1000,
|
|
UPM_CURSORSHADOW = 0x2000,
|
|
UPM_CLICKLOCK = 0x8000,
|
|
// room for more
|
|
UPM_UIEFFECTS = 0x80000000,
|
|
UPM_DEFAULT = 0x80003E9E
|
|
} USERPREFMASKS;
|
|
|
|
|
|
//static const WCHAR* KEY_MDALIGN = L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows";
|
|
//static const WCHAR* VAL_MDALIGN = L"MenuDropAlignment";
|
|
|
|
static const WCHAR* KEY_METRIC = L"Control Panel\\Desktop\\WindowMetrics";
|
|
//static const WCHAR* VAL_BORDER = L"BorderWidth";
|
|
//static const WCHAR* VAL_ICONSPC = L"IconSpacing";
|
|
//static const WCHAR* VAL_ICONVSPC = L"IconVerticalspacing";
|
|
//static const WCHAR* VAL_ITWRAP = L"IconTitleWrap";
|
|
|
|
static const WCHAR* KEY_SOUND = L"Control Panel\\Sound";
|
|
static const WCHAR* VAL_BEEP = L"Beep";
|
|
|
|
//static const WCHAR* KEY_KBD = L"Control Panel\\Keyboard";
|
|
//static const WCHAR* VAL_KBDSPD = L"KeyboardSpeed";
|
|
//static const WCHAR* VAL_KBDDELAY = L"KeyboardDelay";
|
|
|
|
//static const WCHAR* KEY_SHOWSNDS = L"Control Panel\\Accessibility\\ShowSounds";
|
|
//static const WCHAR* KEY_KDBPREF = L"Control Panel\\Accessibility\\Keyboard Preference";
|
|
//static const WCHAR* KEY_SCRREAD = L"Control Panel\\Accessibility\\Blind Access";
|
|
//static const WCHAR* VAL_ON = L"On";
|
|
|
|
LONG
|
|
QueryUserRegValueW(PCWSTR pszSubKey, PCWSTR pszValueName, PVOID pData, LPDWORD cbSize, LPDWORD pType)
|
|
{
|
|
HKEY hKey;
|
|
LONG ret;
|
|
|
|
RegOpenKeyExW(HKEY_CURRENT_USER, pszSubKey, 0, KEY_QUERY_VALUE, &hKey);
|
|
ret = RegQueryValueExW(hKey, pszValueName, NULL, pType, (LPBYTE)pData, cbSize);
|
|
RegCloseKey(hKey);
|
|
return ret;
|
|
}
|
|
|
|
|
|
HWND
|
|
CreateTestWindow()
|
|
{
|
|
HINSTANCE hinst = GetModuleHandle(NULL);
|
|
WNDCLASSA wc;
|
|
|
|
wc.style = 0;
|
|
wc.lpfnWndProc = DefWindowProcA;
|
|
wc.cbClsExtra = 0;
|
|
wc.cbWndExtra = 0;
|
|
wc.hInstance = hinst;
|
|
wc.hIcon = NULL;
|
|
wc.hCursor = NULL;
|
|
wc.hbrBackground = NULL;
|
|
wc.lpszMenuName = NULL;
|
|
wc.lpszClassName = "testclass";
|
|
|
|
RegisterClassA(&wc);
|
|
return CreateWindowA("testclass",
|
|
"testwnd",
|
|
WS_VISIBLE,
|
|
0,
|
|
0,
|
|
50,
|
|
30,
|
|
NULL,
|
|
NULL,
|
|
hinst,
|
|
0);
|
|
}
|
|
|
|
void
|
|
Test_NtUserSystemParametersInfo_Params(void)
|
|
{
|
|
// UINT uint;
|
|
DWORD data[1000];
|
|
UINT i, uint;
|
|
ACCESSTIMEOUT ato;
|
|
/* Test normal */
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETFOCUSBORDERHEIGHT, 0, &uint, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
|
|
/* Test invalid SPI code */
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(7, 0, &data, 0) == FALSE);
|
|
TEST(GetLastError() == ERROR_INVALID_PARAMETER);
|
|
|
|
/* Test wrong cbSize member */
|
|
ato.cbSize = 1;
|
|
SetLastError(0xdeadbeef);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETACCESSTIMEOUT, 0, &ato, 0) == FALSE);
|
|
TEST(GetLastError() == 0xdeadbeef);
|
|
#if 0
|
|
/* Test undocumented, but valid SPI codes */
|
|
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(0x1010, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] <= 1);
|
|
TEST(data[1] == 0xdeadbeef);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(0x1011, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] == 0xbeefdead);
|
|
TEST(data[1] == 0xbeefdead);
|
|
data[0] = 0;
|
|
NtUserSystemParametersInfo(0x1010, 0, &data, 0);
|
|
TEST(data[0] == 1);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(0x1028, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] != 0xdeadbeef);
|
|
TEST(data[1] == 0xdeadbeef);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(0x1029, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] == 0xbeefdead);
|
|
TEST(data[1] == 0xbeefdead);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(0x102A, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] != 0xdeadbeef);
|
|
TEST(data[1] == 0xdeadbeef);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4139, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] == 0xbeefdead);
|
|
TEST(data[1] == 0xbeefdead);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4140, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] != 0xdeadbeef);
|
|
TEST(data[1] == 0xdeadbeef);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4141, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] == 0xbeefdead);
|
|
TEST(data[1] == 0xbeefdead);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4142, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] != 0xdeadbeef);
|
|
TEST(data[1] == 0xdeadbeef);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4143, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] == 0xbeefdead);
|
|
TEST(data[1] == 0xbeefdead);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4144, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] != 0xdeadbeef);
|
|
TEST(data[1] == 0xdeadbeef);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4145, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] == 0xbeefdead);
|
|
TEST(data[1] == 0xbeefdead);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4146, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] != 0xdeadbeef);
|
|
TEST(data[1] == 0xdeadbeef);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4147, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] == 0xbeefdead);
|
|
TEST(data[1] == 0xbeefdead);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4148, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] != 0xdeadbeef);
|
|
TEST(data[1] == 0xdeadbeef);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4149, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] == 0xbeefdead);
|
|
TEST(data[1] == 0xbeefdead);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4150, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] != 0xdeadbeef);
|
|
TEST(data[1] == 0xdeadbeef);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4151, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] == 0xbeefdead);
|
|
TEST(data[1] == 0xbeefdead);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4152, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] != 0xdeadbeef);
|
|
TEST(data[1] == 0xdeadbeef);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4153, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] == 0xbeefdead);
|
|
TEST(data[1] == 0xbeefdead);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4154, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] != 0xdeadbeef);
|
|
TEST(data[1] == 0xdeadbeef);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4155, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] == 0xbeefdead);
|
|
TEST(data[1] == 0xbeefdead);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4156, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] != 0xdeadbeef);
|
|
TEST(data[1] == 0xdeadbeef);
|
|
|
|
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(4157, 0, &data, 0) == TRUE);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
TEST(data[0] == 0xbeefdead);
|
|
TEST(data[1] == 0xbeefdead);
|
|
#endif
|
|
/* Test invalid pointer */
|
|
SetLastError(ERROR_SUCCESS);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETFOCUSBORDERHEIGHT, 0, (PVOID)0x80000000, 0) == FALSE);
|
|
TEST(GetLastError() == ERROR_NOACCESS);
|
|
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
|
|
|
/* test wrong bools */
|
|
}
|
|
|
|
void
|
|
Test_NtUserSystemParametersInfo_Winsta(void)
|
|
{
|
|
HWINSTA hwinsta, hwinstaOld;
|
|
INT ai[20];
|
|
BOOL bRet;
|
|
// INT i;
|
|
|
|
hwinstaOld = GetProcessWindowStation();
|
|
hwinsta = CreateWindowStation(NULL, 0, READ_CONTROL, NULL);
|
|
SetProcessWindowStation(hwinsta);
|
|
printf("hwinstaOld=%p, hwinsta=%p\n", hwinstaOld, hwinsta);
|
|
|
|
#if 1 // currently Winsta stuff is broken in ros
|
|
TEST(SystemParametersInfoA(SPI_GETBEEP, 0, ai, 0) == 0);
|
|
TEST(GetLastError() == ERROR_ACCESS_DENIED);
|
|
TEST(SystemParametersInfoA(SPI_SETBEEP, 0, ai, 0) == 0);
|
|
TEST(GetLastError() == ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION);
|
|
TEST(SystemParametersInfoA(SPI_GETMOUSE, 0, ai, 0) == 0);
|
|
TEST(GetLastError() == ERROR_ACCESS_DENIED);
|
|
TEST(SystemParametersInfoA(SPI_SETMOUSE, 0, ai, 0) == 0);
|
|
TEST(GetLastError() == ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION);
|
|
TEST(SystemParametersInfoA(SPI_GETBORDER, 0, ai, 0) == 0);
|
|
TEST(GetLastError() == ERROR_ACCESS_DENIED);
|
|
TEST(SystemParametersInfoA(SPI_SETBORDER, 0, ai, 0) == 0);
|
|
TEST(GetLastError() == ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION);
|
|
TEST(SystemParametersInfoA(SPI_GETKEYBOARDSPEED, 0, ai, 0) == 0);
|
|
TEST(GetLastError() == ERROR_ACCESS_DENIED);
|
|
TEST(SystemParametersInfoA(SPI_SETKEYBOARDSPEED, 0, ai, 0) == 0);
|
|
TEST(GetLastError() == ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION);
|
|
TEST(SystemParametersInfoA(SPI_ICONHORIZONTALSPACING, 0, ai, 0) == 0);
|
|
TEST(GetLastError() == ERROR_ACCESS_DENIED);
|
|
TEST(SystemParametersInfoA(SPI_ICONHORIZONTALSPACING, 32, 0, 0) == 0);
|
|
TEST(GetLastError() == ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION);
|
|
TEST(SystemParametersInfoA(SPI_GETSCREENSAVETIMEOUT, 0, ai, 0) == 0);
|
|
TEST(GetLastError() == ERROR_ACCESS_DENIED);
|
|
TEST(SystemParametersInfoA(SPI_SETSCREENSAVETIMEOUT, 0, ai, 0) == 0);
|
|
TEST(GetLastError() == ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION);
|
|
TEST(SystemParametersInfoA(SPI_GETKEYBOARDCUES, 0, &bRet, 0) == 0);
|
|
TEST(GetLastError() == ERROR_ACCESS_DENIED);
|
|
TEST(SystemParametersInfoA(SPI_SETKEYBOARDCUES, 0, (PVOID)1, 0) == 0);
|
|
TEST(GetLastError() == ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION);
|
|
#endif
|
|
|
|
SetProcessWindowStation(hwinstaOld);
|
|
}
|
|
|
|
void
|
|
Test_NtUserSystemParametersInfo_fWinIni(void)
|
|
{
|
|
ACCESSTIMEOUT ato;
|
|
// UINT uFocusBorderHeight;
|
|
WCHAR Buffer[6];
|
|
DWORD cbSize;
|
|
|
|
ato.cbSize = sizeof(ato);
|
|
NtUserSystemParametersInfo(SPI_GETACCESSTIMEOUT, 0, &ato, 0);
|
|
ato.iTimeOutMSec++;
|
|
NtUserSystemParametersInfo(SPI_SETACCESSTIMEOUT, 0, &ato, 0);
|
|
ato.iTimeOutMSec--;
|
|
|
|
// NtUserSystemParametersInfo(SPI_GETFOCUSBORDERHEIGHT, 0, &uFocusBorderHeight, 0);
|
|
// NtUserSystemParametersInfo(SPI_SETFOCUSBORDERHEIGHT, 0, &uFocusBorderHeight, SPIF_UPDATEINIFILE);
|
|
|
|
NtUserSystemParametersInfo(SPI_SETACCESSTIMEOUT, 0, &ato, 0);
|
|
|
|
cbSize = 6;
|
|
QueryUserRegValueW(L"Control Panel\\Accessibility\\TimeOut", L"TimeToWait", &Buffer, &cbSize, NULL);
|
|
|
|
}
|
|
|
|
void
|
|
Test_MetricKey(PCWSTR pwszVal, INT iVal)
|
|
{
|
|
WCHAR szReg[10];
|
|
DWORD cbSize;
|
|
|
|
cbSize = sizeof(szReg);
|
|
TESTX(QueryUserRegValueW(KEY_METRIC, pwszVal, &szReg, &cbSize, NULL) == ERROR_SUCCESS, "Value=%S\n", pwszVal);
|
|
TESTX(_wcsicmp(szReg, L"1") == 0, "Value=%S\n", pwszVal);
|
|
|
|
}
|
|
|
|
void
|
|
Test_UserPref(UINT uiGet, UINT uiSet, DWORD dwPrefMask)
|
|
{
|
|
BOOL bOrig, bTemp = 0;
|
|
DWORD dwUserPref, dwUserPrefOrg;
|
|
DWORD cbSize;
|
|
|
|
/* Get original values */
|
|
NtUserSystemParametersInfo(uiGet, 0, &bOrig, 0);
|
|
cbSize = sizeof(dwUserPrefOrg);
|
|
QueryUserRegValueW(KEY_DESKTOP, VAL_PREFMASK, &dwUserPrefOrg, &cbSize, NULL);
|
|
|
|
/* Value 0 */
|
|
NtUserSystemParametersInfo(uiSet, 0, NULL, SPIF_UPDATEINIFILE);
|
|
NtUserSystemParametersInfo(uiGet, 0, &bTemp, 0);
|
|
TEST(bTemp == 0);
|
|
cbSize = sizeof(dwUserPref);
|
|
TEST(QueryUserRegValueW(KEY_DESKTOP, VAL_PREFMASK, &dwUserPref, &cbSize, NULL) == ERROR_SUCCESS);
|
|
TEST((dwUserPref & dwPrefMask) == 0);
|
|
TEST((dwUserPref & (~dwPrefMask)) == (dwUserPrefOrg & (~dwPrefMask)));
|
|
|
|
/* Value 1 without Registry */
|
|
NtUserSystemParametersInfo(uiSet, 0, (PVOID)1, 0);
|
|
NtUserSystemParametersInfo(uiGet, 0, &bTemp, 0);
|
|
TEST(bTemp == 1);
|
|
cbSize = sizeof(dwUserPref);
|
|
TEST(QueryUserRegValueW(KEY_DESKTOP, VAL_PREFMASK, &dwUserPref, &cbSize, NULL) == ERROR_SUCCESS);
|
|
TEST((dwUserPref & dwPrefMask) == 0);
|
|
TEST((dwUserPref & (~dwPrefMask)) == (dwUserPrefOrg & (~dwPrefMask)));
|
|
|
|
/* Value 2 without Registry */
|
|
NtUserSystemParametersInfo(uiSet, 0, (PVOID)2, 0);
|
|
NtUserSystemParametersInfo(uiGet, 0, &bTemp, 0);
|
|
TEST(bTemp == 1);
|
|
cbSize = sizeof(dwUserPref);
|
|
TEST(QueryUserRegValueW(KEY_DESKTOP, VAL_PREFMASK, &dwUserPref, &cbSize, NULL) == ERROR_SUCCESS);
|
|
TEST((dwUserPref & dwPrefMask) == 0);
|
|
TEST((dwUserPref & (~dwPrefMask)) == (dwUserPrefOrg & (~dwPrefMask)));
|
|
|
|
/* Value 1 with Registry */
|
|
NtUserSystemParametersInfo(uiSet, 0, (PVOID)1, SPIF_UPDATEINIFILE);
|
|
NtUserSystemParametersInfo(uiGet, 0, &bTemp, 0);
|
|
TEST(bTemp == 1);
|
|
cbSize = sizeof(dwUserPref);
|
|
TEST(QueryUserRegValueW(KEY_DESKTOP, VAL_PREFMASK, &dwUserPref, &cbSize, NULL) == ERROR_SUCCESS);
|
|
TEST((dwUserPref & dwPrefMask) == dwPrefMask);
|
|
TEST((dwUserPref & (~dwPrefMask)) == (dwUserPrefOrg & (~dwPrefMask)));
|
|
|
|
/* Restore original value */
|
|
NtUserSystemParametersInfo(uiSet, 0, (PVOID)bOrig, SPIF_UPDATEINIFILE);
|
|
|
|
|
|
}
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
void
|
|
Test_SPI_SETBEEP(void)
|
|
{
|
|
BOOL bOrig, bTemp = 0;
|
|
WCHAR szReg[10];
|
|
DWORD cbSize;
|
|
|
|
/* Get original value */
|
|
NtUserSystemParametersInfo(SPI_GETBEEP, 0, &bOrig, 0);
|
|
|
|
/* Value 0 */
|
|
NtUserSystemParametersInfo(SPI_SETBEEP, 0, NULL, SPIF_UPDATEINIFILE);
|
|
NtUserSystemParametersInfo(SPI_GETBEEP, 0, &bTemp, 0);
|
|
TEST(bTemp == 0);
|
|
cbSize = sizeof(szReg);
|
|
TEST(QueryUserRegValueW(KEY_SOUND, VAL_BEEP, &szReg, &cbSize, NULL) == ERROR_SUCCESS);
|
|
TEST(_wcsicmp(szReg, L"No") == 0);
|
|
|
|
/* Value 1 */
|
|
NtUserSystemParametersInfo(SPI_SETBEEP, 1, NULL, SPIF_UPDATEINIFILE);
|
|
NtUserSystemParametersInfo(SPI_GETBEEP, 0, &bTemp, 0);
|
|
TEST(bTemp == 1);
|
|
cbSize = sizeof(szReg);
|
|
TEST(QueryUserRegValueW(KEY_SOUND, VAL_BEEP, &szReg, &cbSize, NULL) == ERROR_SUCCESS);
|
|
TEST(_wcsicmp(szReg, L"Yes") == 0);
|
|
|
|
/* Value 2 */
|
|
NtUserSystemParametersInfo(SPI_SETBEEP, 2, NULL, SPIF_UPDATEINIFILE);
|
|
NtUserSystemParametersInfo(SPI_GETBEEP, 0, &bTemp, 0);
|
|
TEST(bTemp == 1);
|
|
cbSize = sizeof(szReg);
|
|
TEST(QueryUserRegValueW(KEY_SOUND, VAL_BEEP, &szReg, &cbSize, NULL) == ERROR_SUCCESS);
|
|
TEST(_wcsicmp(szReg, L"Yes") == 0);
|
|
|
|
/* Restore original value */
|
|
NtUserSystemParametersInfo(SPI_SETBEEP, 0, &bOrig, SPIF_UPDATEINIFILE);
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETMOUSE(void)
|
|
{
|
|
INT aiOrig[3], aiTemp[3];
|
|
|
|
/* Get original value */
|
|
NtUserSystemParametersInfo(SPI_GETMOUSE, 0, aiOrig, 0);
|
|
|
|
/* Test uiParam value */
|
|
TEST(NtUserSystemParametersInfo(SPI_GETMOUSE, 0, aiTemp, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETMOUSE, 1, aiTemp, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETMOUSE, -1, aiTemp, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETMOUSE, 0xdeadbeef, aiTemp, 0) == 1);
|
|
|
|
/* Set modified values */
|
|
aiTemp[0] = aiOrig[0] + 1;
|
|
aiTemp[1] = aiOrig[1] - 1;
|
|
aiTemp[2] = aiOrig[2] + 2;
|
|
NtUserSystemParametersInfo(SPI_SETMOUSE, 2, aiTemp, SPIF_UPDATEINIFILE);
|
|
aiTemp[0] = aiTemp[1] = aiTemp[2] = 0;
|
|
|
|
/* Get new values */
|
|
NtUserSystemParametersInfo(SPI_GETMOUSE, 0, aiTemp, 0);
|
|
|
|
/* Test modified values */
|
|
TEST(aiTemp[0] == aiOrig[0] + 1);
|
|
TEST(aiTemp[1] == aiOrig[1] - 1);
|
|
TEST(aiTemp[2] == aiOrig[2] + 2);
|
|
|
|
// FIXME: Test registry values
|
|
|
|
/* Restore original value */
|
|
NtUserSystemParametersInfo(SPI_SETMOUSE, 0, aiOrig, SPIF_UPDATEINIFILE);
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETBORDER(void)
|
|
{
|
|
INT iOrig, iTemp = 0;
|
|
|
|
/* Get original value */
|
|
NtUserSystemParametersInfo(SPI_GETBORDER, 0, &iOrig, 0);
|
|
|
|
/* Value 0 */
|
|
NtUserSystemParametersInfo(SPI_SETBORDER, 0, NULL, SPIF_UPDATEINIFILE);
|
|
NtUserSystemParametersInfo(SPI_GETBORDER, 0, &iTemp, 0);
|
|
TEST(iTemp == 1);
|
|
TEST(GetSystemMetrics(SM_CXBORDER) == 1);
|
|
|
|
/* Value 1 */
|
|
NtUserSystemParametersInfo(SPI_SETBORDER, 1, NULL, SPIF_UPDATEINIFILE);
|
|
NtUserSystemParametersInfo(SPI_GETBORDER, 0, &iTemp, 0);
|
|
TEST(iTemp == 1);
|
|
// Test_MetricKey(pti, VAL_BORDER, 1);
|
|
|
|
/* Value 2 */
|
|
NtUserSystemParametersInfo(SPI_SETBORDER, 2, NULL, SPIF_UPDATEINIFILE);
|
|
NtUserSystemParametersInfo(SPI_GETBORDER, 0, &iTemp, 0);
|
|
TEST(iTemp == 2);
|
|
TEST(GetSystemMetrics(SM_CXBORDER) == 1);
|
|
|
|
/* Restore original value */
|
|
NtUserSystemParametersInfo(SPI_SETBORDER, iOrig, NULL, SPIF_UPDATEINIFILE);
|
|
|
|
}
|
|
|
|
// Test_SPI_SETKEYBOARDSPEED();
|
|
// Test_SPI_LANGDRIVER();
|
|
// Test_SPI_ICONHORIZONTALSPACING();
|
|
// Test_SPI_SETSCREENSAVETIMEOUT();
|
|
// Test_SPI_SETSCREENSAVEACTIVE();
|
|
// Test_SPI_SETGRIDGRANULARITY();
|
|
|
|
void
|
|
Test_SPI_SETDESKWALLPAPER(void)
|
|
{
|
|
UNICODE_STRING ustrOld, ustrNew;
|
|
WCHAR szOld[MAX_PATH];
|
|
WCHAR szNew[MAX_PATH];
|
|
|
|
/* Get old Wallpaper */
|
|
TEST(NtUserSystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, szOld, 0) == 1);
|
|
RtlInitUnicodeString(&ustrOld, szOld);
|
|
|
|
/* Set no Wallpaper */
|
|
TEST(NtUserSystemParametersInfo(SPI_SETDESKWALLPAPER, 0, L"", 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, szNew, 0) == 1);
|
|
TEST(szNew[0] == 0);
|
|
|
|
/* Set no Wallpaper 2 */
|
|
RtlInitUnicodeString(&ustrNew, L"");
|
|
TEST(NtUserSystemParametersInfo(SPI_SETDESKWALLPAPER, 0, &ustrNew, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, szNew, 0) == 1);
|
|
TEST(szNew[0] == 0);
|
|
|
|
/* Reset Wallpaper */
|
|
TEST(NtUserSystemParametersInfo(SPI_SETDESKWALLPAPER, 0, NULL, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, szNew, 0) == 1);
|
|
TEST(wcscmp(szNew, szOld) == 0);
|
|
|
|
/* Set new Wallpaper */
|
|
RtlInitUnicodeString(&ustrNew, L"test.bmp");
|
|
TEST(NtUserSystemParametersInfo(SPI_SETDESKWALLPAPER, 0, &ustrNew, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, szNew, 0) == 1);
|
|
TEST(wcscmp(szNew, L"test.bmp") == 0);
|
|
|
|
/* Get Wallpaper, too small buffer */
|
|
szNew[0] = 0; szNew[1] = 0; szNew[2] = 0;
|
|
TEST(NtUserSystemParametersInfo(SPI_GETDESKWALLPAPER, 3, szNew, 0) == 1);
|
|
TEST(szNew[0] != 0);
|
|
TEST(szNew[1] != 0);
|
|
TEST(szNew[2] != 0);
|
|
|
|
/* Set invalid Wallpaper */
|
|
SetLastError(0xdeadbeef);
|
|
RtlInitUnicodeString(&ustrNew, L"*#!!-&");
|
|
TEST(NtUserSystemParametersInfo(SPI_SETDESKWALLPAPER, 0, &ustrNew, 0) == 0);
|
|
TEST(GetLastError() == ERROR_FILE_NOT_FOUND);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, szNew, 0) == 1);
|
|
TEST(wcscmp(szNew, L"*#!!-&") == 0);
|
|
|
|
/* Restore old Wallpaper */
|
|
TEST(NtUserSystemParametersInfo(SPI_SETDESKWALLPAPER, MAX_PATH, &ustrOld, SPIF_UPDATEINIFILE) == 1);
|
|
|
|
}
|
|
|
|
// Test_SPI_SETDESKPATTERN();
|
|
// Test_SPI_SETKEYBOARDDELAY();
|
|
// Test_SPI_ICONVERTICALSPACING();
|
|
// Test_SPI_SETICONTITLEWRAP();
|
|
// Test_SPI_SETMENUDROPALIGNMENT();
|
|
// Test_SPI_SETDOUBLECLKWIDTH();
|
|
// Test_SPI_SETDOUBLECLKHEIGHT();
|
|
// Test_SPI_SETDOUBLECLICKTIME();
|
|
|
|
void
|
|
Test_SPI_SETMOUSEBUTTONSWAP(void)
|
|
{
|
|
BOOL bOrig, bTemp = 0;
|
|
WCHAR szReg[10];
|
|
DWORD cbSize;
|
|
|
|
/* Get original value */
|
|
bOrig = GetSystemMetrics(SM_SWAPBUTTON);
|
|
|
|
/* Value 0 */
|
|
NtUserSystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, 0, NULL, SPIF_UPDATEINIFILE);
|
|
bTemp = GetSystemMetrics(SM_SWAPBUTTON);
|
|
TEST(bTemp == 0);
|
|
cbSize = sizeof(szReg);
|
|
TEST(QueryUserRegValueW(KEY_MOUSE, VAL_SWAP, &szReg, &cbSize, NULL) == ERROR_SUCCESS);
|
|
TEST(_wcsicmp(szReg, L"0") == 0);
|
|
|
|
/* Value 1 */
|
|
NtUserSystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, 1, NULL, SPIF_UPDATEINIFILE);
|
|
bTemp = GetSystemMetrics(SM_SWAPBUTTON);
|
|
TEST(bTemp == 1);
|
|
cbSize = sizeof(szReg);
|
|
TEST(QueryUserRegValueW(KEY_MOUSE, VAL_SWAP, &szReg, &cbSize, NULL) == ERROR_SUCCESS);
|
|
TEST(_wcsicmp(szReg, L"1") == 0);
|
|
|
|
/* Value 2 */
|
|
NtUserSystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, 2, NULL, SPIF_UPDATEINIFILE);
|
|
bTemp = GetSystemMetrics(SM_SWAPBUTTON);
|
|
TEST(bTemp == 1);
|
|
cbSize = sizeof(szReg);
|
|
TEST(QueryUserRegValueW(KEY_MOUSE, VAL_SWAP, &szReg, &cbSize, NULL) == ERROR_SUCCESS);
|
|
TEST(_wcsicmp(szReg, L"2") == 0);
|
|
|
|
/* Value -1 */
|
|
NtUserSystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, -1, NULL, SPIF_UPDATEINIFILE);
|
|
bTemp = GetSystemMetrics(SM_SWAPBUTTON);
|
|
TEST(bTemp == 1);
|
|
cbSize = sizeof(szReg);
|
|
TEST(QueryUserRegValueW(KEY_MOUSE, VAL_SWAP, &szReg, &cbSize, NULL) == ERROR_SUCCESS);
|
|
TEST(_wcsicmp(szReg, L"-1") == 0);
|
|
|
|
/* Restore original value */
|
|
NtUserSystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, bOrig, 0, SPIF_UPDATEINIFILE);
|
|
|
|
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETICONTITLELOGFONT(void)
|
|
{
|
|
LOGFONTW lfOrig;
|
|
struct
|
|
{
|
|
LOGFONTW lf;
|
|
DWORD dwRedzone;
|
|
} buf;
|
|
|
|
/* Get original value */
|
|
ASSERT(NtUserSystemParametersInfo(SPI_GETICONTITLELOGFONT, sizeof(lfOrig), &lfOrig, 0));
|
|
|
|
/* Test uiParam == 0 */
|
|
memset(&buf, 0, sizeof(buf));
|
|
buf.lf.lfFaceName[LF_FACESIZE-1] = 33;
|
|
buf.dwRedzone = 0xdeadbeef;
|
|
TEST(NtUserSystemParametersInfo(SPI_GETICONTITLELOGFONT, 0, &buf.lf, 0) == 1);
|
|
TEST(buf.lf.lfHeight != 0);
|
|
TEST(buf.lf.lfWeight != 0);
|
|
TEST(buf.lf.lfFaceName[0] != 0);
|
|
TEST(buf.lf.lfFaceName[LF_FACESIZE-1] == 0);
|
|
TEST(buf.dwRedzone == 0xdeadbeef);
|
|
|
|
/* Test uiParam < sizeof(LOGFONTW) */
|
|
memset(&buf, 0, sizeof(buf));
|
|
buf.lf.lfFaceName[LF_FACESIZE-1] = 33;
|
|
buf.dwRedzone = 0xdeadbeef;
|
|
TEST(NtUserSystemParametersInfo(SPI_GETICONTITLELOGFONT, 8, &buf.lf, 0) == 1);
|
|
TEST(buf.lf.lfHeight != 0);
|
|
TEST(buf.lf.lfWeight != 0);
|
|
TEST(buf.lf.lfFaceName[0] != 0);
|
|
TEST(buf.lf.lfFaceName[LF_FACESIZE-1] == 0);
|
|
TEST(buf.dwRedzone == 0xdeadbeef);
|
|
|
|
/* Test uiParam < 0 */
|
|
TEST(NtUserSystemParametersInfo(SPI_GETICONTITLELOGFONT, -1, &buf.lf, 0) == 1);
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETFASTTASKSWITCH(void)
|
|
{
|
|
char buf[10];
|
|
TEST(NtUserSystemParametersInfo(SPI_SETFASTTASKSWITCH, 0, 0, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_SETFASTTASKSWITCH, 0, buf, 0) == 1);
|
|
|
|
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETDRAGFULLWINDOWS(void)
|
|
{
|
|
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETNONCLIENTMETRICS(void)
|
|
{
|
|
NONCLIENTMETRICSW metrics;
|
|
NONCLIENTMETRICSW origMetrics;
|
|
|
|
metrics.cbSize = sizeof(NONCLIENTMETRICSW);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICSW), &metrics, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICSW), (PVOID)0xdeadbeef, 0) == 0);
|
|
|
|
origMetrics = metrics;
|
|
|
|
metrics.cbSize = sizeof(NONCLIENTMETRICSW) + 10;
|
|
TEST(NtUserSystemParametersInfo(SPI_SETNONCLIENTMETRICS, 0, (PVOID)&metrics, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, (PVOID)&metrics, 0) == 1);
|
|
ok(metrics.cbSize == sizeof(NONCLIENTMETRICSW), "Expected size: %lu, got %lu\n", (ULONG)sizeof(NONCLIENTMETRICSW), (ULONG)metrics.cbSize);
|
|
|
|
TEST(NtUserSystemParametersInfo(SPI_SETNONCLIENTMETRICS, 0, (PVOID)&origMetrics, 0) == 1);
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETMINIMIZEDMETRICS(void)
|
|
{
|
|
MINIMIZEDMETRICS metrics;
|
|
MINIMIZEDMETRICS origMetrics;
|
|
|
|
metrics.cbSize = sizeof(MINIMIZEDMETRICS);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETMINIMIZEDMETRICS, sizeof(MINIMIZEDMETRICS), (PVOID)&metrics, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETMINIMIZEDMETRICS, sizeof(MINIMIZEDMETRICS), (PVOID)0xdeadbeef, 0) == 0);
|
|
|
|
origMetrics = metrics;
|
|
|
|
metrics.cbSize = sizeof(MINIMIZEDMETRICS) + 10;
|
|
TEST(NtUserSystemParametersInfo(SPI_SETMINIMIZEDMETRICS, 0, (PVOID)&metrics, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETMINIMIZEDMETRICS, 0, (PVOID)&metrics, 0) == 1);
|
|
ok(metrics.cbSize == sizeof(MINIMIZEDMETRICS), "Expected size: %lu, got %lu\n", (ULONG)sizeof(MINIMIZEDMETRICS), (ULONG)metrics.cbSize);
|
|
|
|
TEST(NtUserSystemParametersInfo(SPI_SETMINIMIZEDMETRICS, 0, (PVOID)&origMetrics, 0) == 1);
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETICONMETRICS(void)
|
|
{
|
|
ICONMETRICSW metrics;
|
|
ICONMETRICSW origMetrics;
|
|
|
|
metrics.cbSize = sizeof(ICONMETRICSW);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETICONMETRICS, sizeof(ICONMETRICSW), (PVOID)&metrics, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETICONMETRICS, sizeof(ICONMETRICSW), (PVOID)0xdeadbeef, 0) == 0);
|
|
|
|
origMetrics = metrics;
|
|
|
|
metrics.cbSize = sizeof(ICONMETRICSW) + 10;
|
|
TEST(NtUserSystemParametersInfo(SPI_SETICONMETRICS, 0, (PVOID)&metrics, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETICONMETRICS, 0, (PVOID)&metrics, 0) == 1);
|
|
ok(metrics.cbSize == sizeof(ICONMETRICSW), "Expected size: %lu, got %lu\n", (ULONG)sizeof(ICONMETRICSW), (ULONG)metrics.cbSize);
|
|
|
|
TEST(NtUserSystemParametersInfo(SPI_SETICONMETRICS, 0, (PVOID)&origMetrics, 0) == 1);
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETWORKAREA(void)
|
|
{
|
|
RECT rcOrig, rc;
|
|
|
|
/* Get the original value */
|
|
ASSERT(NtUserSystemParametersInfo(SPI_GETWORKAREA, 0, &rcOrig, 0) == 1);
|
|
|
|
/* Change value */
|
|
rc = rcOrig;
|
|
rc.left += 1;
|
|
rc.top += 2;
|
|
rc.right -= 3;
|
|
rc.bottom -= 2;
|
|
TEST(NtUserSystemParametersInfo(SPI_SETWORKAREA, 1, &rc, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_SETWORKAREA, 0, &rc, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_SETWORKAREA, sizeof(RECT), &rc, 0) == 1);
|
|
|
|
TEST(NtUserSystemParametersInfo(SPI_GETWORKAREA, 1, &rc, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETWORKAREA, -1, &rc, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETWORKAREA, 0xdeadbeef, &rc, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETWORKAREA, 0, (PVOID)0xdeadbeef, 0) == 0);
|
|
|
|
/* Test values */
|
|
rc = rcOrig; rc.left = -1;
|
|
TEST(NtUserSystemParametersInfo(SPI_SETWORKAREA, 0, &rc, 0) == 0);
|
|
rc = rcOrig; rc.top = -1;
|
|
TEST(NtUserSystemParametersInfo(SPI_SETWORKAREA, 0, &rc, 0) == 0);
|
|
rc = rcOrig; rc.top = 10; rc.bottom = 11;
|
|
TEST(NtUserSystemParametersInfo(SPI_SETWORKAREA, 0, &rc, 0) == 1);
|
|
rc = rcOrig; rc.top = 10; rc.bottom = 10;
|
|
TEST(NtUserSystemParametersInfo(SPI_SETWORKAREA, 0, &rc, 0) == 0);
|
|
rc = rcOrig; rc.top = 10; rc.bottom = 9;
|
|
TEST(NtUserSystemParametersInfo(SPI_SETWORKAREA, 0, &rc, 0) == 0);
|
|
rc = rcOrig; rc.left = 10; rc.right = 11;
|
|
TEST(NtUserSystemParametersInfo(SPI_SETWORKAREA, 0, &rc, 0) == 1);
|
|
rc = rcOrig; rc.left = 10; rc.right = 10;
|
|
TEST(NtUserSystemParametersInfo(SPI_SETWORKAREA, 0, &rc, 0) == 0);
|
|
rc = rcOrig; rc.left = 10; rc.right = 9;
|
|
TEST(NtUserSystemParametersInfo(SPI_SETWORKAREA, 0, &rc, 0) == 0);
|
|
rc = rcOrig; rc.bottom = GetSystemMetrics(SM_CYVIRTUALSCREEN);
|
|
TEST(NtUserSystemParametersInfo(SPI_SETWORKAREA, 0, &rc, 0) == 1);
|
|
rc = rcOrig; rc.bottom = GetSystemMetrics(SM_CYVIRTUALSCREEN)+1;
|
|
TEST(NtUserSystemParametersInfo(SPI_SETWORKAREA, 0, &rc, 0) == 0);
|
|
rc = rcOrig; rc.right = GetSystemMetrics(SM_CXVIRTUALSCREEN);
|
|
TEST(NtUserSystemParametersInfo(SPI_SETWORKAREA, 0, &rc, 0) == 1);
|
|
rc = rcOrig; rc.right = GetSystemMetrics(SM_CXVIRTUALSCREEN)+1;
|
|
TEST(NtUserSystemParametersInfo(SPI_SETWORKAREA, 0, &rc, 0) == 0);
|
|
|
|
/* Restore original value */
|
|
ASSERT(NtUserSystemParametersInfo(SPI_SETWORKAREA, 0, &rcOrig, 0) == 1);
|
|
|
|
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETPENWINDOWS(void)
|
|
{
|
|
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETFILTERKEYS(void)
|
|
{
|
|
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETTOGGLEKEYS(void)
|
|
{
|
|
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETMOUSEKEYS(void)
|
|
{
|
|
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETSHOWSOUNDS(void)
|
|
{
|
|
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETSTICKYKEYS(void)
|
|
{
|
|
STICKYKEYS skOrig, sk;
|
|
|
|
/* Get original values */
|
|
skOrig.cbSize = sizeof(STICKYKEYS);
|
|
ASSERT(NtUserSystemParametersInfo(SPI_GETSTICKYKEYS, 0, &skOrig, 0) == 1);
|
|
|
|
sk.cbSize = sizeof(STICKYKEYS)+1;
|
|
TEST(NtUserSystemParametersInfo(SPI_GETSTICKYKEYS, 0, &sk, 0) == 0);
|
|
|
|
sk.cbSize = sizeof(STICKYKEYS)-1;
|
|
TEST(NtUserSystemParametersInfo(SPI_GETSTICKYKEYS, 0, &sk, 0) == 0);
|
|
|
|
sk.cbSize = sizeof(STICKYKEYS);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETSTICKYKEYS, 1, &sk, 0) == 0);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETSTICKYKEYS, -1, &sk, 0) == 0);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETSTICKYKEYS, sk.cbSize, &sk, 0) == 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETSTICKYKEYS, sk.cbSize-1, &sk, 0) == 0);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETSTICKYKEYS, sk.cbSize+1, &sk, 0) == 0);
|
|
|
|
sk = skOrig;
|
|
sk.dwFlags = (skOrig.dwFlags ^ 1);
|
|
TEST(NtUserSystemParametersInfo(SPI_SETSTICKYKEYS, sk.cbSize+1, &sk, 0) == 0);
|
|
TEST(NtUserSystemParametersInfo(SPI_SETSTICKYKEYS, sk.cbSize-1, &sk, 0) == 0);
|
|
TEST(NtUserSystemParametersInfo(SPI_SETSTICKYKEYS, sk.cbSize, &sk, 0) == 1);
|
|
|
|
sk = skOrig;
|
|
TEST(NtUserSystemParametersInfo(SPI_GETSTICKYKEYS, 0, &sk, 0) == 1);
|
|
TEST(sk.dwFlags == (skOrig.dwFlags ^ 1));
|
|
|
|
/* Restore original values */
|
|
skOrig.cbSize = sizeof(STICKYKEYS);
|
|
ASSERT(NtUserSystemParametersInfo(SPI_SETSTICKYKEYS, 0, &skOrig, 0) == 1);
|
|
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETACCESSTIMEOUT(void)
|
|
{
|
|
ACCESSTIMEOUT atoOrig, atoTmp;
|
|
|
|
/* Get original values */
|
|
atoOrig.cbSize = sizeof(ACCESSTIMEOUT);
|
|
ASSERT(NtUserSystemParametersInfo(SPI_GETACCESSTIMEOUT, 0, &atoOrig, 0) == 1);
|
|
|
|
atoTmp.cbSize = sizeof(ACCESSTIMEOUT) - 1;
|
|
TEST(NtUserSystemParametersInfo(SPI_GETACCESSTIMEOUT, 0, &atoTmp, 0) == 0);
|
|
atoTmp.cbSize = sizeof(ACCESSTIMEOUT) + 1;
|
|
TEST(NtUserSystemParametersInfo(SPI_GETACCESSTIMEOUT, 0, &atoTmp, 0) == 0);
|
|
atoTmp.cbSize = sizeof(ACCESSTIMEOUT);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETACCESSTIMEOUT, 0, &atoTmp, 0) == 1);
|
|
atoTmp.cbSize = sizeof(ACCESSTIMEOUT);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETACCESSTIMEOUT, 1, &atoTmp, 0) == 0);
|
|
atoTmp.cbSize = sizeof(ACCESSTIMEOUT);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETACCESSTIMEOUT, -1, &atoTmp, 0) == 0);
|
|
atoTmp.cbSize = sizeof(ACCESSTIMEOUT);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETACCESSTIMEOUT, sizeof(ACCESSTIMEOUT), &atoTmp, 0) == 1);
|
|
atoTmp.cbSize = sizeof(ACCESSTIMEOUT);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETACCESSTIMEOUT, sizeof(ACCESSTIMEOUT)-1, &atoTmp, 0) == 0);
|
|
atoTmp.cbSize = sizeof(ACCESSTIMEOUT);
|
|
TEST(NtUserSystemParametersInfo(SPI_GETACCESSTIMEOUT, sizeof(ACCESSTIMEOUT)+1, &atoTmp, 0) == 0);
|
|
|
|
/* Restore original values */
|
|
ASSERT(NtUserSystemParametersInfo(SPI_SETACCESSTIMEOUT, sizeof(atoOrig), &atoOrig, 0) == 1);
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETSERIALKEYS(void)
|
|
{
|
|
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETSOUNDSENTRY(void)
|
|
{
|
|
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETHIGHCONTRAST(void)
|
|
{
|
|
|
|
}
|
|
|
|
void
|
|
Test_SPI_SETKEYBOARDPREF(void)
|
|
{
|
|
|
|
}
|
|
|
|
// Test_SPI_SETSCREENREADER();
|
|
/// Test_SPI_SETANIMATION();
|
|
// Test_SPI_SETFONTSMOOTHING();
|
|
// Test_SPI_SETDRAGWIDTH();
|
|
// Test_SPI_SETDRAGHEIGHT();
|
|
// Test_SPI_SETHANDHELD();
|
|
// Test_SPI_SETLOWPOWERTIMEOUT();
|
|
// Test_SPI_SETPOWEROFFTIMEOUT();
|
|
// Test_SPI_SETLOWPOWERACTIVE();
|
|
// Test_SPI_SETPOWEROFFACTIVE();
|
|
// Test_SPI_SETCURSORS();
|
|
// Test_SPI_SETICONS();
|
|
// Test_SPI_SETDEFAULTINPUTLANG();
|
|
// Test_SPI_SETLANGTOGGLE();
|
|
// Test_SPI_GETWINDOWSEXTENSION();
|
|
// Test_SPI_SETMOUSETRAILS();
|
|
// Test_SPI_SETSNAPTODEFBUTTON();
|
|
// Test_SPI_GETSCREENSAVERRUNNING();
|
|
// Test_SPI_SETMOUSEHOVERWIDTH();
|
|
// Test_SPI_SETMOUSEHOVERHEIGHT();
|
|
// Test_SPI_SETMOUSEHOVERTIME();
|
|
// Test_SPI_SETWHEELSCROLLLINES();
|
|
// Test_SPI_SETMENUSHOWDELAY();
|
|
// Test_SPI_SETWHEELSCROLLCHARS();
|
|
// Test_SPI_SETSHOWIMEUI();
|
|
// Test_SPI_SETMOUSESPEED();
|
|
// Test_SPI_GETSCREENSAVERRUNNING();
|
|
// Test_SPI_SETAUDIODESCRIPTION();
|
|
// Test_SPI_SETSCREENSAVESECURE();
|
|
// Test_SPI_SETACTIVEWINDOWTRACKING();
|
|
|
|
void
|
|
Test_SPI_SETMENUANIMATION(void)
|
|
{
|
|
BOOL bOrig, bTemp = 0;
|
|
DWORD dwUserPrefMask;
|
|
DWORD cbSize;
|
|
|
|
/* Get original values */
|
|
NtUserSystemParametersInfo(SPI_GETMENUANIMATION, 0, &bOrig, 0);
|
|
|
|
/* Value 0 */
|
|
NtUserSystemParametersInfo(SPI_SETMENUANIMATION, 0, NULL, SPIF_UPDATEINIFILE);
|
|
NtUserSystemParametersInfo(SPI_GETMENUANIMATION, 0, &bTemp, 0);
|
|
TEST(bTemp == 0);
|
|
cbSize = sizeof(dwUserPrefMask);
|
|
TEST(QueryUserRegValueW(KEY_DESKTOP, VAL_PREFMASK, &dwUserPrefMask, &cbSize, NULL) == ERROR_SUCCESS);
|
|
TEST((dwUserPrefMask & UPM_MENUANIMATION) == 0);
|
|
|
|
/* Value 1 */
|
|
NtUserSystemParametersInfo(SPI_SETMENUANIMATION, 0, (PVOID)1, SPIF_UPDATEINIFILE);
|
|
NtUserSystemParametersInfo(SPI_GETMENUANIMATION, 0, &bTemp, 0);
|
|
TEST(bTemp == 1);
|
|
cbSize = sizeof(dwUserPrefMask);
|
|
TEST(QueryUserRegValueW(KEY_DESKTOP, VAL_PREFMASK, &dwUserPrefMask, &cbSize, NULL) == ERROR_SUCCESS);
|
|
TEST((dwUserPrefMask & UPM_MENUANIMATION) != 0);
|
|
|
|
|
|
/* Restore original values */
|
|
NtUserSystemParametersInfo(SPI_SETMENUANIMATION, 0, (PVOID)bOrig, SPIF_UPDATEINIFILE);
|
|
}
|
|
|
|
// Test_SPI_SETCOMBOBOXANIMATION();
|
|
// Test_SPI_SETLISTBOXSMOOTHSCROLLING();
|
|
// Test_SPI_SETGRADIENTCAPTIONS();
|
|
|
|
void
|
|
Test_SPI_SETKEYBOARDCUES(void)
|
|
{
|
|
Test_UserPref(SPI_GETKEYBOARDCUES, SPI_SETKEYBOARDCUES, UPM_KEYBOARDCUES);
|
|
}
|
|
|
|
// Test_SPI_SETACTIVEWNDTRKZORDER();
|
|
// Test_SPI_SETHOTTRACKING();
|
|
// Test_SPI_SETMENUFADE();
|
|
// Test_SPI_SETSELECTIONFADE();
|
|
// Test_SPI_SETTOOLTIPANIMATION();
|
|
// Test_SPI_SETTOOLTIPFADE();
|
|
// Test_SPI_SETCURSORSHADOW();
|
|
// Test_SPI_SETMOUSESONAR();
|
|
|
|
void
|
|
Test_SPI_SETMOUSECLICKLOCK(void)
|
|
{
|
|
Test_UserPref(SPI_GETMOUSECLICKLOCK, SPI_SETMOUSECLICKLOCK, UPM_CLICKLOCK);
|
|
}
|
|
|
|
// Test_SPI_SETMOUSEVANISH();
|
|
// Test_SPI_SETFLATMENU();
|
|
// Test_SPI_SETDROPSHADOW();
|
|
// Test_SPI_SETBLOCKSENDINPUTRESETS();
|
|
// Test_SPI_GETSETUIEFFECTS();
|
|
// Test_SPI_SETDISABLEOVERLAPPEDCONTENT();
|
|
// Test_SPI_SETCLIENTAREAANIMATION();
|
|
// Test_SPI_SETCLEARTYPE();
|
|
// Test_SPI_SETSPEECHRECOGNITION();
|
|
// Test_SPI_SETFOREGROUNDLOCKTIMEOUT();
|
|
// Test_SPI_SETACTIVEWNDTRKTIMEOUT();
|
|
// Test_SPI_SETFOREGROUNDFLASHCOUNT();
|
|
// Test_SPI_SETCARETWIDTH();
|
|
// Test_SPI_SETMOUSECLICKLOCKTIME();
|
|
// Test_SPI_SETFONTSMOOTHINGTYPE();
|
|
// Test_SPI_SETFONTSMOOTHINGCONTRAST();
|
|
// Test_SPI_SETFOCUSBORDERWIDTH();
|
|
// Test_SPI_SETFOCUSBORDERHEIGHT();
|
|
// Test_SPI_SETFONTSMOOTHINGORIENTATION();
|
|
|
|
|
|
START_TEST(NtUserSystemParametersInfo)
|
|
{
|
|
HWND hWnd;
|
|
|
|
hWnd = CreateTestWindow();
|
|
ASSERT(hWnd);
|
|
|
|
Test_NtUserSystemParametersInfo_Params();
|
|
Test_NtUserSystemParametersInfo_fWinIni();
|
|
Test_NtUserSystemParametersInfo_Winsta();
|
|
|
|
Test_SPI_SETBEEP();
|
|
Test_SPI_SETMOUSE();
|
|
Test_SPI_SETBORDER();
|
|
// Test_SPI_SETKEYBOARDSPEED();
|
|
// Test_SPI_LANGDRIVER();
|
|
// Test_SPI_ICONHORIZONTALSPACING();
|
|
// Test_SPI_SETSCREENSAVETIMEOUT();
|
|
// Test_SPI_SETSCREENSAVEACTIVE();
|
|
// Test_SPI_SETGRIDGRANULARITY();
|
|
Test_SPI_SETDESKWALLPAPER();
|
|
// Test_SPI_SETDESKPATTERN();
|
|
// Test_SPI_SETKEYBOARDDELAY();
|
|
// Test_SPI_ICONVERTICALSPACING();
|
|
// Test_SPI_SETICONTITLEWRAP();
|
|
// Test_SPI_SETMENUDROPALIGNMENT();
|
|
// Test_SPI_SETDOUBLECLKWIDTH();
|
|
// Test_SPI_SETDOUBLECLKHEIGHT();
|
|
// Test_SPI_SETDOUBLECLICKTIME();
|
|
Test_SPI_SETMOUSEBUTTONSWAP();
|
|
Test_SPI_SETICONTITLELOGFONT();
|
|
Test_SPI_SETFASTTASKSWITCH();
|
|
Test_SPI_SETDRAGFULLWINDOWS();
|
|
Test_SPI_SETNONCLIENTMETRICS();
|
|
Test_SPI_SETMINIMIZEDMETRICS();
|
|
Test_SPI_SETICONMETRICS();
|
|
Test_SPI_SETWORKAREA();
|
|
Test_SPI_SETPENWINDOWS();
|
|
Test_SPI_SETFILTERKEYS();
|
|
Test_SPI_SETTOGGLEKEYS();
|
|
Test_SPI_SETMOUSEKEYS();
|
|
Test_SPI_SETSHOWSOUNDS();
|
|
Test_SPI_SETSTICKYKEYS();
|
|
Test_SPI_SETACCESSTIMEOUT();
|
|
Test_SPI_SETSERIALKEYS();
|
|
Test_SPI_SETSOUNDSENTRY();
|
|
Test_SPI_SETHIGHCONTRAST();
|
|
Test_SPI_SETKEYBOARDPREF();
|
|
// Test_SPI_SETSCREENREADER();
|
|
/// Test_SPI_SETANIMATION();
|
|
// Test_SPI_SETFONTSMOOTHING();
|
|
// Test_SPI_SETDRAGWIDTH();
|
|
// Test_SPI_SETDRAGHEIGHT();
|
|
// Test_SPI_SETHANDHELD();
|
|
// Test_SPI_SETLOWPOWERTIMEOUT();
|
|
// Test_SPI_SETPOWEROFFTIMEOUT();
|
|
// Test_SPI_SETLOWPOWERACTIVE();
|
|
// Test_SPI_SETPOWEROFFACTIVE();
|
|
// Test_SPI_SETCURSORS();
|
|
// Test_SPI_SETICONS();
|
|
// Test_SPI_SETDEFAULTINPUTLANG();
|
|
// Test_SPI_SETLANGTOGGLE();
|
|
// Test_SPI_GETWINDOWSEXTENSION();
|
|
// Test_SPI_SETMOUSETRAILS();
|
|
// Test_SPI_SETSNAPTODEFBUTTON();
|
|
// Test_SPI_GETSCREENSAVERRUNNING();
|
|
// Test_SPI_SETMOUSEHOVERWIDTH();
|
|
// Test_SPI_SETMOUSEHOVERHEIGHT();
|
|
// Test_SPI_SETMOUSEHOVERTIME();
|
|
// Test_SPI_SETWHEELSCROLLLINES();
|
|
// Test_SPI_SETMENUSHOWDELAY();
|
|
// Test_SPI_SETWHEELSCROLLCHARS();
|
|
// Test_SPI_SETSHOWIMEUI();
|
|
// Test_SPI_SETMOUSESPEED();
|
|
// Test_SPI_GETSCREENSAVERRUNNING();
|
|
// Test_SPI_SETAUDIODESCRIPTION();
|
|
// Test_SPI_SETSCREENSAVESECURE();
|
|
// Test_SPI_SETACTIVEWINDOWTRACKING();
|
|
Test_SPI_SETMENUANIMATION();
|
|
// Test_SPI_SETCOMBOBOXANIMATION();
|
|
// Test_SPI_SETLISTBOXSMOOTHSCROLLING();
|
|
// Test_SPI_SETGRADIENTCAPTIONS();
|
|
Test_SPI_SETKEYBOARDCUES();
|
|
// Test_SPI_SETACTIVEWNDTRKZORDER();
|
|
// Test_SPI_SETHOTTRACKING();
|
|
// Test_SPI_SETMENUFADE();
|
|
// Test_SPI_SETSELECTIONFADE();
|
|
// Test_SPI_SETTOOLTIPANIMATION();
|
|
// Test_SPI_SETTOOLTIPFADE();
|
|
// Test_SPI_SETCURSORSHADOW();
|
|
// Test_SPI_SETMOUSESONAR();
|
|
Test_SPI_SETMOUSECLICKLOCK();
|
|
// Test_SPI_SETMOUSEVANISH();
|
|
// Test_SPI_SETFLATMENU();
|
|
// Test_SPI_SETDROPSHADOW();
|
|
// Test_SPI_SETBLOCKSENDINPUTRESETS();
|
|
// Test_SPI_GETSETUIEFFECTS();
|
|
// Test_SPI_SETDISABLEOVERLAPPEDCONTENT();
|
|
// Test_SPI_SETCLIENTAREAANIMATION();
|
|
// Test_SPI_SETCLEARTYPE();
|
|
// Test_SPI_SETSPEECHRECOGNITION();
|
|
// Test_SPI_SETFOREGROUNDLOCKTIMEOUT();
|
|
// Test_SPI_SETACTIVEWNDTRKTIMEOUT();
|
|
// Test_SPI_SETFOREGROUNDFLASHCOUNT();
|
|
// Test_SPI_SETCARETWIDTH();
|
|
// Test_SPI_SETMOUSECLICKLOCKTIME();
|
|
// Test_SPI_SETFONTSMOOTHINGTYPE();
|
|
// Test_SPI_SETFONTSMOOTHINGCONTRAST();
|
|
// Test_SPI_SETFOCUSBORDERWIDTH();
|
|
// Test_SPI_SETFOCUSBORDERHEIGHT();
|
|
// Test_SPI_SETFONTSMOOTHINGORIENTATION();
|
|
|
|
DestroyWindow(hWnd);
|
|
}
|