[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