From acc5e9bba103180f786b7969ec1c954dddf78639 Mon Sep 17 00:00:00 2001 From: Francois Gouget Date: Mon, 20 Jan 2003 23:30:22 +0000 Subject: [PATCH] Check for sysparams keys in either the Win9x or NT locations. This makes the test succeed on Win9x and NT4 platforms. Add a 'strict' mode which specifically makes sure that the NT location is set. In strict mode the test succeeds on Windows XP and Wine. --- dlls/user/tests/sysparams.c | 95 ++++++++++++++++++++++++++++--------- 1 file changed, 72 insertions(+), 23 deletions(-) diff --git a/dlls/user/tests/sysparams.c b/dlls/user/tests/sysparams.c index c02c1bf72ef..88dd82384d5 100644 --- a/dlls/user/tests/sysparams.c +++ b/dlls/user/tests/sysparams.c @@ -37,6 +37,8 @@ # define SPI_GETDESKWALLPAPER 0x0073 #endif +static int strict; + #define eq(received, expected, label, type) \ ok((received) == (expected), "%s: got " type " instead of " type, (label),(received),(expected)) @@ -59,13 +61,17 @@ #define SPI_SETGRIDGRANULARITY_VALNAME "GridGranularity" #define SPI_SETKEYBOARDDELAY_REGKEY "Control Panel\\Keyboard" #define SPI_SETKEYBOARDDELAY_VALNAME "KeyboardDelay" -#define SPI_SETICONTITLEWRAP_REGKEY "Control Panel\\Desktop\\WindowMetrics" +#define SPI_SETICONTITLEWRAP_REGKEY1 "Control Panel\\Desktop\\WindowMetrics" +#define SPI_SETICONTITLEWRAP_REGKEY2 "Control Panel\\Desktop" #define SPI_SETICONTITLEWRAP_VALNAME "IconTitleWrap" -#define SPI_SETMENUDROPALIGNMENT_REGKEY "Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows" +#define SPI_SETMENUDROPALIGNMENT_REGKEY1 "Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows" +#define SPI_SETMENUDROPALIGNMENT_REGKEY2 "Control Panel\\Desktop" #define SPI_SETMENUDROPALIGNMENT_VALNAME "MenuDropAlignment" -#define SPI_SETDOUBLECLKWIDTH_REGKEY "Control Panel\\Mouse" +#define SPI_SETDOUBLECLKWIDTH_REGKEY1 "Control Panel\\Mouse" +#define SPI_SETDOUBLECLKWIDTH_REGKEY2 "Control Panel\\Desktop" #define SPI_SETDOUBLECLKWIDTH_VALNAME "DoubleClickWidth" -#define SPI_SETDOUBLECLKHEIGHT_REGKEY "Control Panel\\Mouse" +#define SPI_SETDOUBLECLKHEIGHT_REGKEY1 "Control Panel\\Mouse" +#define SPI_SETDOUBLECLKHEIGHT_REGKEY2 "Control Panel\\Desktop" #define SPI_SETDOUBLECLKHEIGHT_VALNAME "DoubleClickHeight" #define SPI_SETDOUBLECLICKTIME_REGKEY "Control Panel\\Mouse" #define SPI_SETDOUBLECLICKTIME_VALNAME "DoubleClickSpeed" @@ -148,23 +154,55 @@ static void test_change_message( int action, int optional ) * lpsRegName - registry entry name * lpsTestValue - value to test */ -static void _test_reg_key( LPSTR subKey, LPSTR valName, LPSTR testValue, char *file, int line ) +static void _test_reg_key( LPSTR subKey1, LPSTR subKey2, LPSTR valName, LPSTR testValue ) { - CHAR value[MAX_PATH] = ""; - DWORD valueLen = MAX_PATH; + CHAR value[MAX_PATH]; + DWORD valueLen; DWORD type; HKEY hKey; + LONG rc; + int found=0; - RegOpenKeyA( HKEY_CURRENT_USER, subKey, &hKey ); - RegQueryValueExA( hKey, valName, NULL, &type, value, &valueLen ); + *value='\0'; + valueLen=sizeof(value); + RegOpenKeyA( HKEY_CURRENT_USER, subKey1, &hKey ); + rc=RegQueryValueExA( hKey, valName, NULL, &type, value, &valueLen ); RegCloseKey( hKey ); - ok( !strcmp( testValue, value ), - "Wrong value in registry: subKey=%s, valName=%s, testValue=%s, value=%s", - subKey, valName, testValue, value ); + if (rc==ERROR_SUCCESS) + { + ok( !strcmp( testValue, value ), + "Wrong value in registry: subKey=%s, valName=%s, testValue=%s, value=%s", + subKey1, valName, testValue, value ); + found++; + } + else if (strict) + { + ok(0,"Missing registry entry: subKey=%s, valName=%s", + subKey1, valName); + } + if (subKey2 && !strict) + { + *value='\0'; + valueLen=sizeof(value); + RegOpenKeyA( HKEY_CURRENT_USER, subKey2, &hKey ); + rc=RegQueryValueExA( hKey, valName, NULL, &type, value, &valueLen ); + RegCloseKey( hKey ); + if (rc==ERROR_SUCCESS) + { + ok( !strcmp( testValue, value ), + "Wrong value in registry: subKey=%s, valName=%s, testValue=%s, value=%s", + subKey2, valName, testValue, value ); + found++; + } + } + ok(found,"Missing registry entry: %s in %s or %s", + valName, subKey1, (subKey2?subKey2:"") ); } #define test_reg_key( subKey, valName, testValue ) \ - _test_reg_key( subKey, valName, testValue, __FILE__, __LINE__ ) + _test_reg_key( subKey, NULL, valName, testValue ) +#define test_reg_key_ex( subKey1, subKey2, valName, testValue ) \ + _test_reg_key( subKey1, subKey2, valName, testValue ) static void test_SPI_SETBEEP( void ) /* 2 */ { @@ -243,6 +281,7 @@ static void run_spi_setmouse_test( int curr_val[], POINT *req_change, POINT *pro int i; aw_turn++; + rc=0; if (aw_turn % 2!=0) /* call unicode version each second call */ rc=SystemParametersInfoW( SPI_SETMOUSE, 0, curr_val, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE ); if (aw_turn % 2==0 || (rc==0 && GetLastError()==ERROR_CALL_NOT_IMPLEMENTED)) @@ -653,9 +692,10 @@ static void test_SPI_SETICONTITLEWRAP( void ) /* 26 */ SPIF_UPDATEINIFILE | SPIF_SENDCHANGE ); ok(rc!=0,"%d: rc=%d err=%ld\n",i,rc,GetLastError()); test_change_message( SPI_SETICONTITLEWRAP, 1 ); - test_reg_key( SPI_SETICONTITLEWRAP_REGKEY, - SPI_SETICONTITLEWRAP_VALNAME, - vals[i] ? "1" : "0" ); + test_reg_key_ex( SPI_SETICONTITLEWRAP_REGKEY1, + SPI_SETICONTITLEWRAP_REGKEY2, + SPI_SETICONTITLEWRAP_VALNAME, + vals[i] ? "1" : "0" ); rc=SystemParametersInfoA( SPI_GETICONTITLEWRAP, 0, &v, 0 ); ok(rc!=0,"%d: rc=%d err=%ld\n",i,rc,GetLastError()); @@ -685,9 +725,10 @@ static void test_SPI_SETMENUDROPALIGNMENT( void ) /* 28 */ SPIF_UPDATEINIFILE | SPIF_SENDCHANGE ); ok(rc!=0,"%d: rc=%d err=%ld\n",i,rc,GetLastError()); test_change_message( SPI_SETMENUDROPALIGNMENT, 0 ); - test_reg_key( SPI_SETMENUDROPALIGNMENT_REGKEY, - SPI_SETMENUDROPALIGNMENT_VALNAME, - vals[i] ? "1" : "0" ); + test_reg_key_ex( SPI_SETMENUDROPALIGNMENT_REGKEY1, + SPI_SETMENUDROPALIGNMENT_REGKEY2, + SPI_SETMENUDROPALIGNMENT_VALNAME, + vals[i] ? "1" : "0" ); rc=SystemParametersInfoA( SPI_GETMENUDROPALIGNMENT, 0, &v, 0 ); ok(rc!=0,"%d: rc=%d err=%ld\n",i,rc,GetLastError()); @@ -720,8 +761,9 @@ static void test_SPI_SETDOUBLECLKWIDTH( void ) /* 29 */ ok(rc!=0,"%d: rc=%d err=%ld\n",i,rc,GetLastError()); test_change_message( SPI_SETDOUBLECLKWIDTH, 0 ); sprintf( buf, "%d", vals[i] ); - test_reg_key( SPI_SETDOUBLECLKWIDTH_REGKEY, - SPI_SETDOUBLECLKWIDTH_VALNAME, buf ); + test_reg_key_ex( SPI_SETDOUBLECLKWIDTH_REGKEY1, + SPI_SETDOUBLECLKWIDTH_REGKEY2, + SPI_SETDOUBLECLKWIDTH_VALNAME, buf ); eq( GetSystemMetrics( SM_CXDOUBLECLK ), (int)vals[i], "SM_CXDOUBLECLK", "%d" ); } @@ -750,8 +792,9 @@ static void test_SPI_SETDOUBLECLKHEIGHT( void ) /* 30 */ ok(rc!=0,"%d: rc=%d err=%ld\n",i,rc,GetLastError()); test_change_message( SPI_SETDOUBLECLKHEIGHT, 0 ); sprintf( buf, "%d", vals[i] ); - test_reg_key( SPI_SETDOUBLECLKHEIGHT_REGKEY, - SPI_SETDOUBLECLKHEIGHT_VALNAME, buf ); + test_reg_key_ex( SPI_SETDOUBLECLKHEIGHT_REGKEY1, + SPI_SETDOUBLECLKHEIGHT_REGKEY2, + SPI_SETDOUBLECLKHEIGHT_VALNAME, buf ); eq( GetSystemMetrics( SM_CYDOUBLECLK ), (int)vals[i], "SM_CYDOUBLECLK", "%d" ); } @@ -1054,12 +1097,18 @@ static DWORD WINAPI SysParamsThreadFunc( LPVOID lpParam ) START_TEST(sysparams) { + int argc; + char** argv; WNDCLASSA wc; MSG msg; HANDLE hThread; DWORD dwThreadId; HANDLE hInstance = GetModuleHandleA( NULL ); + argc = winetest_get_mainargs(&argv); + strict=(argc >= 3 && strcmp(argv[2],"strict")==0); + trace("strict=%d\n",strict); + change_counter = 0; change_last_param = 0;