[2/6] qedit/tests: Add test framework and test for IMediaDet_put_Filename. [take 2]

Dan Hipschman dsh at linux.ucla.edu
Fri Apr 4 17:59:08 CDT 2008


If I had noticed SizeofResource on the MSDN page I certainly would have
used it.  I don't know how it slipped by.  This is the same as the orig-
inal except the AVI file itself is the resource.

---
 dlls/qedit/tests/Makefile.in |    6 +++-
 dlls/qedit/tests/mediadet.c  |   66 ++++++++++++++++++++++++++++++++++++++++++
 dlls/qedit/tests/qedit.rc    |   21 +++++++++++++
 dlls/qedit/tests/test.avi    |  Bin 0 -> 5676 bytes
 4 files changed, 92 insertions(+), 1 deletions(-)
 create mode 100644 dlls/qedit/tests/qedit.rc
 create mode 100644 dlls/qedit/tests/test.avi

diff --git a/dlls/qedit/tests/Makefile.in b/dlls/qedit/tests/Makefile.in
index 5236975..bef4833 100644
--- a/dlls/qedit/tests/Makefile.in
+++ b/dlls/qedit/tests/Makefile.in
@@ -3,12 +3,16 @@ TOPOBJDIR = ../../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 TESTDLL   = qedit.dll
-IMPORTS   = ole32 kernel32
+IMPORTS   = oleaut32 ole32 kernel32
 EXTRALIBS = -lstrmiids -luuid
 
 CTESTS = \
 	mediadet.c
 
+RC_SRCS = qedit.rc
+
+qedit.res: test.avi
+
 @MAKE_TEST_RULES@
 
 @DEPENDENCIES@  # everything below this line is overwritten by make depend
diff --git a/dlls/qedit/tests/mediadet.c b/dlls/qedit/tests/mediadet.c
index b550c8e..b9ea9c0 100644
--- a/dlls/qedit/tests/mediadet.c
+++ b/dlls/qedit/tests/mediadet.c
@@ -25,22 +25,88 @@
 #include "wine/test.h"
 #include "qedit.h"
 
+static WCHAR test_avi_filename[MAX_PATH];
+
+static BOOL init_tests(void)
+{
+    static WCHAR temp_path[MAX_PATH];
+    static WCHAR prefix[] = {'D','E','S',0};
+    static WCHAR avi[] = {'a','v','i',0};
+    HRSRC res;
+    HGLOBAL data;
+    char *mem;
+    DWORD size, written;
+    HANDLE fh;
+
+    res = FindResourceW(NULL, (LPWSTR) 1, (LPWSTR) 256);
+    if (!res)
+        return FALSE;
+
+    data = LoadResource(NULL, res);
+    if (!data)
+        return FALSE;
+
+    mem = LockResource(data);
+    if (!mem)
+        return FALSE;
+
+    size = SizeofResource(NULL, res);
+    if (size == 0)
+        return FALSE;
+
+    if (!GetTempPathW(sizeof temp_path, temp_path))
+        return FALSE;
+
+    /* We might end up relying on the extension here, so .TMP is no good.  */
+    if (!GetTempFileNameW(temp_path, prefix, 0, test_avi_filename))
+        return FALSE;
+
+    DeleteFileW(test_avi_filename);
+    lstrcpyW(test_avi_filename + lstrlenW(test_avi_filename) - 3, avi);
+
+    fh = CreateFileW(test_avi_filename, GENERIC_WRITE, 0, NULL,
+                     CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
+    if (fh == INVALID_HANDLE_VALUE)
+        return FALSE;
+
+    if (!WriteFile(fh, mem, size, &written, NULL) || written != size)
+        return FALSE;
+
+    CloseHandle(fh);
+
+    return TRUE;
+}
+
 static void test_mediadet(void)
 {
     HRESULT hr;
     IMediaDet *pM = NULL;
+    BSTR filename = NULL;
 
     hr = CoCreateInstance(&CLSID_MediaDet, NULL, CLSCTX_INPROC_SERVER,
             &IID_IMediaDet, (LPVOID*)&pM);
     ok(hr == S_OK, "CoCreateInstance failed with %x\n", hr);
     ok(pM != NULL, "pM is NULL\n");
 
+    filename = SysAllocString(test_avi_filename);
+    hr = IMediaDet_put_Filename(pM, filename);
+    todo_wine ok(hr == S_OK, "IMediaDet_put_Filename -> %x\n", hr);
+    SysFreeString(filename);
+
     hr = IMediaDet_Release(pM);
     ok(hr == 0, "IMediaDet_Release returned: %x\n", hr);
+
+    DeleteFileW(test_avi_filename);
 }
 
 START_TEST(mediadet)
 {
+    if (!init_tests())
+    {
+        skip("Couldn't initialize tests!\n");
+        return;
+    }
+
     CoInitialize(NULL);
     test_mediadet();
     CoUninitialize();
diff --git a/dlls/qedit/tests/qedit.rc b/dlls/qedit/tests/qedit.rc
new file mode 100644
index 0000000..1f4fe89
--- /dev/null
+++ b/dlls/qedit/tests/qedit.rc
@@ -0,0 +1,21 @@
+/*
+ * Resource file for qedit tests.
+ *
+ * Copyright 2008 Google (Dan Hipschman)
+ *
+ * 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
+ */
+
+1 256 test.avi
diff --git a/dlls/qedit/tests/test.avi b/dlls/qedit/tests/test.avi
new file mode 100644
index 0000000000000000000000000000000000000000..8756c64348e3bfda3eba384280f71aae7b9edf7c
GIT binary patch
literal 5676
zcmWIYbaPV?V_<L$^HlKh3=ZL8WMIfhDauJK%gnG~U|?9#1{8n-0Zs-67!O7(0OcfL
z3Xo`!SqFgp;*z2qAO at RNmYGr<8D?mNqzr5x7gPXjCL6LW1A_w4bfEq;4WKXxD*!Rb
zK4u0U29Q||EI<w#C at Ux`a6u9SnXdrE5Pd9gHX~FFCI_O?0mvT?KtWGGH-FDyw-93>
z+t)QOIX at +}NWsX;K+n=r+fdJ-peWV6q^QzJJGrdb$iTqNz|hcK*Pt}1G_R!8LJ#O;
zuTVel349C;(Y6Y{0Xd14K;2oTdD#jni6x1O3bwJM;-ld(njS{;#b`M&S`Lhs1Eb}@
zXgM%i4vdxqqvgP8IWSrd(6Sr=_xXW+?%e#cOap_IWCkGn|0oy at fzc2cu_4ef3PyAY
WWTsRY3INABLG=NM1`n|U>jeM>>Gwha

literal 0
HcmV?d00001

-- 
1.5.3.7




More information about the wine-patches mailing list