[PATCH 11/11] appelp: Add tests.

Mislav Blazevic krofnica996 at gmail.com
Wed Jul 31 17:59:18 CDT 2013


---
 dlls/apphelp/apphelp.c       |  3 +-
 dlls/apphelp/tests/apphelp.c | 85 +++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 86 insertions(+), 2 deletions(-)

diff --git a/dlls/apphelp/apphelp.c b/dlls/apphelp/apphelp.c
index 9d0da83..8417f27 100644
--- a/dlls/apphelp/apphelp.c
+++ b/dlls/apphelp/apphelp.c
@@ -1,5 +1,6 @@
 /*
  * Copyright 2011 André Hentschel
+ * Copyright 2013 Mislav Blazevic
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -387,7 +388,7 @@ static BOOL WINAPI SdbReadData(PDB db, PVOID dest,
DWORD offset, DWORD num)
     return TRUE;
 }

-static PDB WINAPI SdbAlloc()
+static PDB WINAPI SdbAlloc(void)
 {
     PDB db;

diff --git a/dlls/apphelp/tests/apphelp.c b/dlls/apphelp/tests/apphelp.c
index 5b5670c..d6ea5e9 100644
--- a/dlls/apphelp/tests/apphelp.c
+++ b/dlls/apphelp/tests/apphelp.c
@@ -1,5 +1,6 @@
 /*
  * Copyright 2012 Detlef Riekenberg
+ * Copyright 2013 Mislav Blazevic
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -24,11 +25,18 @@
 #include <exdisp.h>
 #include <shlobj.h>
 #include <urlmon.h>
+#include <appcompatapi.h>

 #include "wine/test.h"

 static HMODULE hdll;
 static BOOL (WINAPI *pApphelpCheckShellObject)(REFCLSID, BOOL, ULONGLONG *);
+static LPCWSTR (WINAPI *pSdbTagToString)(TAG);
+static PDB (WINAPI *pSdbOpenDatabase)(LPCWSTR, PATH_TYPE);
+static void (WINAPI *pSdbCloseDatabase)(PDB);
+static TAG (WINAPI *pSdbGetTagFromTagID)(PDB, TAGID);
+static DWORD (WINAPI *pSdbReadDWORDTag)(PDB, TAGID, DWORD);
+static TAGID (WINAPI *pSdbGetFirstChild)(PDB, TAGID);

 DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);

@@ -102,6 +110,73 @@ static void test_ApphelpCheckShellObject(void)
     }
 }

+static void test_SdbTagToString(void)
+{
+    WORD i;
+    static const TAG invalid_values[] = {
+        1, TAG_TYPE_WORD, TAG_TYPE_MASK,
+        TAG_TYPE_DWORD | 0xFF,
+        TAG_TYPE_DWORD | (0x800 + 0xEE),
+        0x900, 0xFFFF, 0xDEAD, 0xBEEF
+    };
+    static const WCHAR invalid[] = {'I','n','v','a','l','i','d','T','a','g',0};
+    LPCWSTR ret;
+
+    for (i = 0; i < 9; ++i)
+    {
+        ret = pSdbTagToString(invalid_values[i]);
+        ok(lstrcmpW(ret, invalid) == 0, "unexpected string %s, should be %s\n",
+           wine_dbgstr_w(ret), wine_dbgstr_w(invalid));
+    }
+}
+
+static void test_Sdb(void)
+{
+    static const WCHAR path[] = {'t','e','m','p',0};
+    static const WCHAR tag_size_string[] = {'S','I','Z','E',0};
+    PDB db;
+    HANDLE file;
+    DWORD two = 2, one = 1; /* version magic */
+    DWORD value = 5;
+    TAG tag = TAG_SIZE;
+    TAGID tagid;
+    LPCWSTR string;
+
+    file = CreateFileW(path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL, 0);
+
+    if (file == INVALID_HANDLE_VALUE)
+    {
+        trace("could not perform test because temp file could not be
created\n");
+        return;
+    }
+
+    WriteFile(file, &two, 4, NULL, NULL);
+    WriteFile(file, &one, 4, NULL, NULL);
+    WriteFile(file, "sdbf", 4, NULL, NULL);
+    WriteFile(file, &tag, 2, NULL, NULL);
+    WriteFile(file, &value, 4, NULL, NULL);
+    CloseHandle(file);
+
+    db = pSdbOpenDatabase(path, DOS_PATH);
+    ok(db != NULL, "unexpected NULL handle\n");
+
+    tagid = pSdbGetFirstChild(db, TAGID_ROOT);
+    ok(tagid == _TAGID_ROOT, "unexpected tagid %u, expected %u\n",
tagid, _TAGID_ROOT);
+
+    tag = pSdbGetTagFromTagID(db, tagid);
+    ok(tag == TAG_SIZE, "unexpected tag %u, expected %u\n", tag, TAG_SIZE);
+
+    string = pSdbTagToString(tag);
+    ok(lstrcmpW(string, tag_size_string) == 0, "unexpected string %s,
expected %s\n",
+       wine_dbgstr_w(string), wine_dbgstr_w(tag_size_string));
+
+    value = pSdbReadDWORDTag(db, tagid, 0);
+    ok(value == 5, "unexpected value %u, expected 5\n", value);
+
+    pSdbCloseDatabase(db);
+    DeleteFileW(path);
+}
+
 START_TEST(apphelp)
 {

@@ -111,6 +186,14 @@ START_TEST(apphelp)
         return;
     }
     pApphelpCheckShellObject = (void *) GetProcAddress(hdll,
"ApphelpCheckShellObject");
-
+    pSdbTagToString = (void *) GetProcAddress(hdll, "SdbTagToString");
+    pSdbOpenDatabase = (void *) GetProcAddress(hdll, "SdbOpenDatabase");
+    pSdbCloseDatabase = (void *) GetProcAddress(hdll, "SdbCloseDatabase");
+    pSdbGetTagFromTagID = (void *) GetProcAddress(hdll, "SdbGetTagFromTagID");
+    pSdbGetFirstChild = (void *) GetProcAddress(hdll, "SdbGetFirstChild");
+    pSdbReadDWORDTag = (void *) GetProcAddress(hdll, "SdbReadDWORDTag");
+
+    test_Sdb();
+    test_SdbTagToString();
     test_ApphelpCheckShellObject();
 }
-- 
1.8.3.4



More information about the wine-patches mailing list