[PATCH 1/4] shlwapi/tests: Add a simple QI test for file streams.

Nikolay Sivov nsivov at codeweavers.com
Thu Aug 30 17:35:55 CDT 2018


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/shlwapi/tests/istream.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/dlls/shlwapi/tests/istream.c b/dlls/shlwapi/tests/istream.c
index 300e9b9c00..f1854a283f 100644
--- a/dlls/shlwapi/tests/istream.c
+++ b/dlls/shlwapi/tests/istream.c
@@ -247,6 +247,27 @@ static void test_stream_read_write(IStream *stream, DWORD mode)
         ok(buf[0] == 0x5e && buf[1] == 0xa7, "expected 5ea7, got %02x%02x\n", buf[0], buf[1]);
 }
 
+static void test_stream_qi(IStream *stream)
+{
+    IUnknown *unk;
+    HRESULT hr;
+
+    hr = IStream_QueryInterface(stream, &IID_IStream, (void **)&unk);
+    ok(SUCCEEDED(hr), "Failed to get IStream interface, hr %#x.\n", hr);
+    IUnknown_Release(unk);
+
+    unk = NULL;
+    hr = IStream_QueryInterface(stream, &IID_ISequentialStream, (void **)&unk);
+todo_wine
+    ok(SUCCEEDED(hr) || broken(hr == E_NOINTERFACE) /* XP */, "Failed to get ISequentialStream interface, hr %#x.\n", hr);
+    if (unk)
+        IUnknown_Release(unk);
+
+    hr = IStream_QueryInterface(stream, &IID_IUnknown, (void **)&unk);
+    ok(SUCCEEDED(hr), "Failed to get IUnknown interface, hr %#x.\n", hr);
+    IUnknown_Release(unk);
+}
+
 static void test_SHCreateStreamOnFileA(DWORD mode, DWORD stgm)
 {
     IStream * stream;
@@ -310,6 +331,7 @@ if (0) /* This test crashes on WinXP SP2 */
     ok(stream != NULL, "SHCreateStreamOnFileA: expected a valid IStream object, got NULL\n");
 
     if (stream) {
+        test_stream_qi(stream);
         test_IStream_invalid_operations(stream, mode);
 
         refcount = IStream_Release(stream);
@@ -422,6 +444,7 @@ static void test_SHCreateStreamOnFileW(DWORD mode, DWORD stgm)
     ok(stream != NULL, "SHCreateStreamOnFileW: expected a valid IStream object, got NULL\n");
 
     if (stream) {
+        test_stream_qi(stream);
         test_IStream_invalid_operations(stream, mode);
 
         refcount = IStream_Release(stream);
@@ -551,6 +574,7 @@ static void test_SHCreateStreamOnFileEx(DWORD mode, DWORD stgm)
     ok(stream != NULL, "SHCreateStreamOnFileEx: expected a valid IStream object, got NULL\n");
 
     if (stream) {
+        test_stream_qi(stream);
         test_IStream_invalid_operations(stream, mode);
 
         refcount = IStream_Release(stream);
-- 
2.18.0




More information about the wine-devel mailing list