[PATCH v2 3/3] virtdisk/tests: Add GetStorageDependencyInformation

Gijs Vermeulen gijsvrm at gmail.com
Sun Sep 9 20:32:26 CDT 2018


Signed-off-by: Gijs Vermeulen <gijsvrm at gmail.com>
---
 configure                       |  1 +
 configure.ac                    |  1 +
 dlls/virtdisk/tests/Makefile.in |  4 ++
 dlls/virtdisk/tests/virtdisk.c  | 73 +++++++++++++++++++++++++++++++++
 4 files changed, 79 insertions(+)
 create mode 100644 dlls/virtdisk/tests/Makefile.in
 create mode 100644 dlls/virtdisk/tests/virtdisk.c

diff --git a/configure b/configure
index a3916ee233..3a607280e2 100755
--- a/configure
+++ b/configure
@@ -19877,6 +19877,7 @@ wine_fn_config_makefile dlls/ver.dll16 enable_win16
 wine_fn_config_makefile dlls/version enable_version
 wine_fn_config_makefile dlls/version/tests enable_tests
 wine_fn_config_makefile dlls/virtdisk enable_virtdisk
+wine_fn_config_makefile dlls/virtdisk/tests enable_tests
 wine_fn_config_makefile dlls/vmm.vxd enable_win16
 wine_fn_config_makefile dlls/vnbt.vxd enable_win16
 wine_fn_config_makefile dlls/vnetbios.vxd enable_win16
diff --git a/configure.ac b/configure.ac
index 006f7d9fc2..6936a71b6f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3733,6 +3733,7 @@ WINE_CONFIG_MAKEFILE(dlls/ver.dll16,enable_win16)
 WINE_CONFIG_MAKEFILE(dlls/version)
 WINE_CONFIG_MAKEFILE(dlls/version/tests)
 WINE_CONFIG_MAKEFILE(dlls/virtdisk)
+WINE_CONFIG_MAKEFILE(dlls/virtdisk/tests)
 WINE_CONFIG_MAKEFILE(dlls/vmm.vxd,enable_win16)
 WINE_CONFIG_MAKEFILE(dlls/vnbt.vxd,enable_win16)
 WINE_CONFIG_MAKEFILE(dlls/vnetbios.vxd,enable_win16)
diff --git a/dlls/virtdisk/tests/Makefile.in b/dlls/virtdisk/tests/Makefile.in
new file mode 100644
index 0000000000..d0557cb08d
--- /dev/null
+++ b/dlls/virtdisk/tests/Makefile.in
@@ -0,0 +1,4 @@
+TESTDLL = virtdisk.dll
+
+C_SRCS = \
+        virtdisk.c
diff --git a/dlls/virtdisk/tests/virtdisk.c b/dlls/virtdisk/tests/virtdisk.c
new file mode 100644
index 0000000000..20aee76b21
--- /dev/null
+++ b/dlls/virtdisk/tests/virtdisk.c
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2018 Gijs Vermeulen
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "virtdisk.h"
+#include "wine/heap.h"
+#include "wine/test.h"
+
+typedef struct _STORAGE_DEPENDENCY_INFO_LOCAL
+{
+    STORAGE_DEPENDENCY_INFO_VERSION Version;
+    ULONG                           NumberEntries;
+    __C89_NAMELESS union
+    {
+        STORAGE_DEPENDENCY_INFO_TYPE_1 Version1Entries[1];
+        STORAGE_DEPENDENCY_INFO_TYPE_2 Version2Entries[1];
+    } __C89_NAMELESSUNIONNAME;
+} STORAGE_DEPENDENCY_INFO_LOCAL;
+
+static DWORD (WINAPI *pGetStorageDependencyInformation)(HANDLE,GET_STORAGE_DEPENDENCY_FLAG,ULONG,STORAGE_DEPENDENCY_INFO*,ULONG*);
+
+static void test_GetStorageDependencyInformation(void)
+{
+    DWORD ret;
+    HANDLE handle;
+    STORAGE_DEPENDENCY_INFO *info;
+    ULONG size;
+
+    handle = CreateFileA("C:", 0, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
+    ok(handle != INVALID_HANDLE_VALUE, "Expected a handle\n");
+
+    size = offsetof(STORAGE_DEPENDENCY_INFO_LOCAL, Version1Entries[0]);
+    info = heap_alloc(size);
+
+    ret = pGetStorageDependencyInformation(handle, GET_STORAGE_DEPENDENCY_FLAG_DISK_HANDLE, 0, info, 0);
+    ok(ret == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", ret);
+
+    ret = pGetStorageDependencyInformation(handle, GET_STORAGE_DEPENDENCY_FLAG_DISK_HANDLE, size, NULL, 0);
+    ok(ret == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", ret);
+
+    heap_free(info);
+    CloseHandle(handle);
+}
+
+START_TEST(virtdisk)
+{
+    HMODULE module = LoadLibraryA("virtdisk.dll");
+    if(!module)
+    {
+        win_skip("virtdisk.dll not installed\n");
+        return;
+    }
+
+    pGetStorageDependencyInformation = (void *)GetProcAddress( module, "GetStorageDependencyInformation" );
+    if (pGetStorageDependencyInformation)
+        test_GetStorageDependencyInformation();
+    else
+        win_skip("GetStorageDependencyInformation is not available\n");
+}
-- 
2.18.0




More information about the wine-devel mailing list