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

Gijs Vermeulen gijsvrm at codeweavers.com
Mon Oct 14 06:50:16 CDT 2019


Signed-off-by: Gijs Vermeulen <gijsvrm at codeweavers.com>
---
 dlls/scrrun/tests/filesystem.c | 32 ++++++++++++++++++++------------
 1 file changed, 20 insertions(+), 12 deletions(-)

diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c
index 5f207ed37a..3b4af3c498 100644
--- a/dlls/scrrun/tests/filesystem.c
+++ b/dlls/scrrun/tests/filesystem.c
@@ -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);
-- 
2.23.0




More information about the wine-devel mailing list