advapi32 registry.c test failures on windows
Aaron Arvey
aarvey at cs.hmc.edu
Mon Mar 7 02:28:13 CST 2005
There were 28 failures when I ran the advapi32 tests on windows. All these
were in registry.c. Please see
http://www.winehq.org/hypermail/wine-devel/2005/02/0045.html and the
following responses to find out where/when/why/how these bugs were
introduced.
After patch is applied, the registry.c runs without errors on Windows XP
and 98. When ran in wine, there are now 28 todos.
Aaron
Changelog:
* dlls/advapi32/tests/registry.c
altered tests so that they run under windows
Signed-off-by: Aaron Arvey <aarvey_at_cs.hmc.edu>
Index: dlls/advapi32/tests/registry.c
===================================================================
RCS file: /home/wine/wine/dlls/advapi32/tests/registry.c,v
retrieving revision 1.11
diff -u -3 -p -u -r1.11 registry.c
--- dlls/advapi32/tests/registry.c 27 Jan 2005 11:15:00 -0000 1.11
+++ dlls/advapi32/tests/registry.c 17 Feb 2005 04:00:13 -0000
@@ -80,6 +80,7 @@ static void test_enum_value(void)
DWORD val_count, data_count, type;
static const WCHAR foobarW[] = {'f','o','o','b','a','r',0};
static const WCHAR testW[] = {'T','e','s','t',0};
+ static const WCHAR test1W[] = {'T','e','s','t','1',0};
static const WCHAR xxxW[] = {'x','x','x','x','x','x','x','x',0};
/* check NULL data with zero length */
@@ -105,8 +106,12 @@ static void test_enum_value(void)
res = RegEnumValueA( hkey_main, 0, value, &val_count, NULL, &type, data, &data_count );
ok( res == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %ld\n", res );
ok( val_count == 2, "val_count set to %ld\n", val_count );
- ok( data_count == 7, "data_count set to %ld instead of 7\n", data_count );
- ok( type == REG_SZ, "type %ld is not REG_SZ\n", type );
+ todo_wine{
+ ok( data_count == 24, "data_count set to %ld instead of 24\n", data_count );
+ }
+ todo_wine{
+ ok( type == REG_EXPAND_SZ, "type %ld is not REG_EXPAND_SZ\n", type );
+ }
ok( !strcmp( value, "xxxxxxxxxx" ), "value set to '%s'\n", value );
ok( !strcmp( data, "xxxxxxxxxx" ), "data set to '%s'\n", data );
@@ -120,8 +125,12 @@ static void test_enum_value(void)
ok( res == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %ld\n", res );
/* Win9x returns 2 as specified by MSDN but NT returns 3... */
ok( val_count == 2 || val_count == 3, "val_count set to %ld\n", val_count );
- ok( data_count == 7, "data_count set to %ld instead of 7\n", data_count );
- ok( type == REG_SZ, "type %ld is not REG_SZ\n", type );
+ todo_wine{
+ ok( data_count == 24, "data_count set to %ld instead of 24\n", data_count );
+ }
+ todo_wine{
+ ok( type == REG_EXPAND_SZ, "type %ld is not REG_EXPAND_SZ\n", type );
+ }
#if 0
/* v5.1.2600.0 (XP Home) does not touch value or data in this case */
ok( !strcmp( value, "Te" ), "value set to '%s' instead of 'Te'\n", value );
@@ -137,8 +146,12 @@ static void test_enum_value(void)
res = RegEnumValueA( hkey_main, 0, value, &val_count, NULL, &type, data, &data_count );
ok( res == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %ld\n", res );
ok( val_count == 0, "val_count set to %ld\n", val_count );
- ok( data_count == 7, "data_count set to %ld instead of 7\n", data_count );
- ok( type == REG_SZ, "type %ld is not REG_SZ\n", type );
+ todo_wine{
+ ok( data_count == 24, "data_count set to %ld instead of 24\n", data_count );
+ }
+ todo_wine{
+ ok( type == REG_EXPAND_SZ, "type %ld is not REG_EXPAND_SZ\n", type );
+ }
ok( !strcmp( value, "xxxxxxxxxx" ), "value set to '%s'\n", value );
#if 0
/* v5.1.2600.0 (XP Home) does not touch data in this case */
@@ -154,8 +167,12 @@ static void test_enum_value(void)
res = RegEnumValueA( hkey_main, 0, value, &val_count, NULL, &type, data, &data_count );
ok( res == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %ld\n", res );
ok( val_count == 20, "val_count set to %ld\n", val_count );
- ok( data_count == 7, "data_count set to %ld instead of 7\n", data_count );
- ok( type == REG_SZ, "type %ld is not REG_SZ\n", type );
+ todo_wine{
+ ok( data_count == 24, "data_count set to %ld instead of 24\n", data_count );
+ }
+ todo_wine{
+ ok( type == REG_EXPAND_SZ, "type %ld is not REG_EXPAND_SZ\n", type );
+ }
ok( !strcmp( value, "xxxxxxxxxx" ), "value set to '%s'\n", value );
ok( !strcmp( data, "xxxxxxxxxx" ), "data set to '%s'\n", data );
@@ -166,12 +183,25 @@ static void test_enum_value(void)
strcpy( value, "xxxxxxxxxx" );
strcpy( data, "xxxxxxxxxx" );
res = RegEnumValueA( hkey_main, 0, value, &val_count, NULL, &type, data, &data_count );
- ok( res == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", res );
- ok( val_count == 4, "val_count set to %ld instead of 4\n", val_count );
- ok( data_count == 7, "data_count set to %ld instead of 7\n", data_count );
- ok( type == REG_SZ, "type %ld is not REG_SZ\n", type );
- ok( !strcmp( value, "Test" ), "value is '%s' instead of Test\n", value );
- ok( !strcmp( data, "foobar" ), "data is '%s' instead of foobar\n", data );
+ todo_wine{
+ ok( res == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %ld\n", res );
+ }
+ todo_wine{
+ ok( val_count == 20, "val_count set to %ld instead of 20\n", val_count );
+ }
+ todo_wine{
+ ok( data_count == 24, "data_count set to %ld instead of 24\n", data_count );
+ }
+ todo_wine{
+ ok( type == REG_EXPAND_SZ, "type %ld is not REG_EXPAND_SZ\n", type );
+ }
+ todo_wine{
+ ok( !strcmp( value, "xxxxxxxxxx" ), "value is '%s' instead of xxxxxxxxxx\n", value );
+ }
+ todo_wine{
+ ok( !strcmp( data, "xxxxxxxxxx" ), "data is '%s' instead of xxxxxxxxxx\n", data );
+ }
+
/* Unicode tests */
@@ -190,8 +220,12 @@ static void test_enum_value(void)
res = RegEnumValueW( hkey_main, 0, valueW, &val_count, NULL, &type, (BYTE*)dataW, &data_count );
ok( res == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %ld\n", res );
ok( val_count == 2, "val_count set to %ld\n", val_count );
- ok( data_count == 7*sizeof(WCHAR), "data_count set to %ld instead of 7*sizeof(WCHAR)\n", data_count );
- ok( type == REG_SZ, "type %ld is not REG_SZ\n", type );
+ todo_wine{
+ ok( data_count == 24*sizeof(WCHAR), "data_count set to %ld instead of 24*sizeof(WCHAR)\n", data_count );
+ }
+ todo_wine{
+ ok( type == REG_EXPAND_SZ, "type %ld is not REG_EXPAND_SZ\n", type );
+ }
ok( !memcmp( valueW, xxxW, sizeof(xxxW) ), "value modified\n" );
ok( !memcmp( dataW, xxxW, sizeof(xxxW) ), "data modified\n" );
@@ -204,8 +238,12 @@ static void test_enum_value(void)
res = RegEnumValueW( hkey_main, 0, valueW, &val_count, NULL, &type, (BYTE*)dataW, &data_count );
ok( res == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %ld\n", res );
ok( val_count == 3, "val_count set to %ld\n", val_count );
- ok( data_count == 7*sizeof(WCHAR), "data_count set to %ld instead of 7*sizeof(WCHAR)\n", data_count );
- ok( type == REG_SZ, "type %ld is not REG_SZ\n", type );
+ todo_wine{
+ ok( data_count == 24*sizeof(WCHAR), "data_count set to %ld instead of 24*sizeof(WCHAR)\n", data_count );
+ }
+ todo_wine{
+ ok( type == REG_EXPAND_SZ, "type %ld is not REG_EXPAND_SZ\n", type );
+ }
ok( !memcmp( valueW, xxxW, sizeof(xxxW) ), "value modified\n" );
ok( !memcmp( dataW, xxxW, sizeof(xxxW) ), "data modified\n" );
@@ -217,10 +255,18 @@ static void test_enum_value(void)
memcpy( dataW, xxxW, sizeof(xxxW) );
res = RegEnumValueW( hkey_main, 0, valueW, &val_count, NULL, &type, (BYTE*)dataW, &data_count );
ok( res == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %ld\n", res );
- ok( val_count == 4, "val_count set to %ld instead of 4\n", val_count );
- ok( data_count == 7*sizeof(WCHAR), "data_count set to %ld instead of 7*sizeof(WCHAR)\n", data_count );
- ok( type == REG_SZ, "type %ld is not REG_SZ\n", type );
- ok( !memcmp( valueW, testW, sizeof(testW) ), "value is not 'Test'\n" );
+ todo_wine{
+ ok( val_count == 5, "val_count set to %ld instead of 5\n", val_count );
+ }
+ todo_wine{
+ ok( data_count == 24*sizeof(WCHAR), "data_count set to %ld instead of 24*sizeof(WCHAR)\n", data_count );
+ }
+ todo_wine{
+ ok( type == REG_EXPAND_SZ, "type %ld is not REG_EXPAND_SZ\n", type );
+ }
+ todo_wine{
+ ok( !memcmp( valueW, test1W, sizeof(test1W) ), "value is not 'Test1'\n" );
+ }
ok( !memcmp( dataW, xxxW, sizeof(xxxW) ), "data modified\n" );
/* no overflow */
@@ -230,12 +276,25 @@ static void test_enum_value(void)
memcpy( valueW, xxxW, sizeof(xxxW) );
memcpy( dataW, xxxW, sizeof(xxxW) );
res = RegEnumValueW( hkey_main, 0, valueW, &val_count, NULL, &type, (BYTE*)dataW, &data_count );
- ok( res == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", res );
- ok( val_count == 4, "val_count set to %ld instead of 4\n", val_count );
- ok( data_count == 7*sizeof(WCHAR), "data_count set to %ld instead of 7*sizeof(WCHAR)\n", data_count );
- ok( type == REG_SZ, "type %ld is not REG_SZ\n", type );
- ok( !memcmp( valueW, testW, sizeof(testW) ), "value is not 'Test'\n" );
- ok( !memcmp( dataW, foobarW, sizeof(foobarW) ), "data is not 'foobar'\n" );
+ todo_wine{
+ ok( res == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %ld\n", res );
+ }
+ todo_wine{
+ ok( val_count == 5, "val_count set to %ld instead of 5\n", val_count );
+ }
+ todo_wine{
+ ok( data_count == 24*sizeof(WCHAR), "data_count set to %ld instead of 24*sizeof(WCHAR)\n", data_count );
+ }
+ todo_wine{
+ ok( type == REG_EXPAND_SZ, "type %ld is not REG_EXPAND_SZ\n", type );
+ }
+ todo_wine{
+ ok( !memcmp( valueW, test1W, sizeof(test1W) ), "value is not 'Test1'\n" );
+ }
+ todo_wine{
+ ok( !memcmp( dataW, xxxW, sizeof(xxxW) ), "data modified\n" );
+ }
+
CLEANUP:
/* cleanup */
@@ -252,6 +311,12 @@ static void test_query_value_ex()
ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", ret);
ok(size == strlen(sTestpath1) + 1, "(%ld,%ld)\n", (DWORD)strlen(sTestpath1) + 1, size);
ok(type == REG_SZ, "type %ld is not REG_SZ\n", type);
+
+
+
+ ret = RegQueryValueExA(hkey_main, "TestStringNotIn", NULL, &type, NULL, &size);
+ ok(ret == ERROR_FILE_NOT_FOUND, "expected ERROR_FILE_NOT_FOUND, got %ld\n", ret);
+
}
START_TEST(registry)
More information about the wine-patches
mailing list