scrrun/tests: Fix DriveCollection clone tests when there's only one drive.

Signed-off-by: Gijs Vermeulen <gijsvrm@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Gijs Vermeulen 2019-10-14 13:50:16 +02:00 committed by Alexandre Julliard
parent 03c761cf17
commit 015c20a7b7
1 changed files with 20 additions and 12 deletions

View File

@ -973,7 +973,7 @@ static void test_GetFolder(void)
IFolder_Release(folder);
}
static void _test_clone(IEnumVARIANT *enumvar, BOOL position_inherited, int line)
static void _test_clone(IEnumVARIANT *enumvar, BOOL position_inherited, LONG count, int line)
{
HRESULT hr;
IEnumVARIANT *clone;
@ -998,17 +998,25 @@ static void _test_clone(IEnumVARIANT *enumvar, BOOL position_inherited, int line
VariantInit(&var2);
fetched = -1;
hr = IEnumVARIANT_Next(clone, 1, &var2, &fetched);
ok(hr == S_OK, "%d: got 0x%08x\n", line, hr);
ok(fetched == 1, "%d: got %d\n", line, fetched);
if (!position_inherited)
todo_wine ok(V_DISPATCH(&var) == V_DISPATCH(&var2), "%d: values don't match\n", line);
if (position_inherited && count == 1)
{
ok(hr == S_FALSE, "%d: got 0x%08x\n", line, hr);
ok(fetched == 0, "%d: got %d\n", line, fetched);
}
else
{
fetched = -1;
hr = IEnumVARIANT_Next(enumvar, 1, &var, &fetched);
ok(hr == S_OK, "%d: got 0x%08x\n", line, hr);
ok(fetched == 1, "%d: got %d\n", line, fetched);
todo_wine ok(V_DISPATCH(&var) == V_DISPATCH(&var2), "%d: values don't match\n", line);
if (!position_inherited)
todo_wine ok(V_DISPATCH(&var) == V_DISPATCH(&var2), "%d: values don't match\n", line);
else
{
fetched = -1;
hr = IEnumVARIANT_Next(enumvar, 1, &var, &fetched);
ok(hr == S_OK, "%d: got 0x%08x\n", line, hr);
ok(fetched == 1, "%d: got %d\n", line, fetched);
todo_wine ok(V_DISPATCH(&var) == V_DISPATCH(&var2), "%d: values don't match\n", line);
}
}
VariantClear(&var2);
@ -1018,7 +1026,7 @@ static void _test_clone(IEnumVARIANT *enumvar, BOOL position_inherited, int line
hr = IEnumVARIANT_Reset(enumvar);
ok(hr == S_OK, "%d: got 0x%08x\n", line, hr);
}
#define test_clone(a, b) _test_clone(a, b, __LINE__)
#define test_clone(a, b, c) _test_clone(a, b, c, __LINE__)
/* Please keep the tests for IFolderCollection and IFileCollection in sync */
static void test_FolderCollection(void)
@ -1115,7 +1123,7 @@ static void test_FolderCollection(void)
ref2 = GET_REFCOUNT(folders);
ok(ref2 == ref, "got %d, %d\n", ref2, ref);
test_clone(enumvar, FALSE);
test_clone(enumvar, FALSE, count);
for (i = 0; i < 3; i++)
{
@ -1285,7 +1293,7 @@ static void test_FileCollection(void)
ref2 = GET_REFCOUNT(files);
ok(ref2 == ref, "got %d, %d\n", ref2, ref);
test_clone(enumvar, FALSE);
test_clone(enumvar, FALSE, count);
for (i = 0; i < 3; i++)
{
@ -1399,7 +1407,7 @@ static void test_DriveCollection(void)
hr = IEnumVARIANT_Skip(enumvar, 1);
ok(hr == S_FALSE, "got 0x%08x\n", hr);
test_clone(enumvar, TRUE);
test_clone(enumvar, TRUE, count);
while (IEnumVARIANT_Next(enumvar, 1, &var, &fetched) == S_OK) {
IDrive *drive = (IDrive*)V_DISPATCH(&var);