mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 01:24:38 +00:00
added support for test on 2k,XP and 2k3. Check for a bug in our implementation and wrap it in a todo_wine block
svn path=/trunk/; revision=17877
This commit is contained in:
parent
ea5a3afa86
commit
2fe4d89ea8
1 changed files with 72 additions and 17 deletions
|
@ -17,14 +17,10 @@
|
|||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
/* TODO:
|
||||
/*
|
||||
* TODO:
|
||||
* Add case sensitivity test for StringTableAddString/StringTableLookupString
|
||||
* Add test for StringTableStringFromIdEx
|
||||
*
|
||||
* BUGS:
|
||||
* These functions are undocumented and exported under another name on
|
||||
* Windows XP and Windows Server 2003. This test assumes the Windows 2000
|
||||
* implementation.
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
|
@ -38,12 +34,56 @@
|
|||
|
||||
#include "wine/test.h"
|
||||
|
||||
HANDLE table, table2; /* Handles pointing to our tables */
|
||||
|
||||
static DWORD (WINAPI *pStringTableAddString)(HSTRING_TABLE, LPWSTR, DWORD);
|
||||
static VOID (WINAPI *pStringTableDestroy)(HSTRING_TABLE);
|
||||
static HSTRING_TABLE (WINAPI *pStringTableDuplicate)(HSTRING_TABLE hStringTable);
|
||||
static HSTRING_TABLE (WINAPI *pStringTableInitialize)(VOID);
|
||||
static DWORD (WINAPI *pStringTableLookUpString)(HSTRING_TABLE, LPWSTR, DWORD);
|
||||
static LPWSTR (WINAPI *pStringTableStringFromId)(HSTRING_TABLE, DWORD);
|
||||
#if 0
|
||||
static BOOL (WINAPI *pStringTableStringFromIdEx)(HSTRING_TABLE, DWORD, LPWSTR, LPDWORD);
|
||||
static VOID (WINAPI *pStringTableTrim)(HSTRING_TABLE);
|
||||
#endif
|
||||
|
||||
HMODULE hdll;
|
||||
static WCHAR string[] = {'s','t','r','i','n','g',0};
|
||||
HANDLE table, table2; /* Handles pointing to our tables */
|
||||
|
||||
static void load_it_up()
|
||||
{
|
||||
hdll = LoadLibraryA("setupapi.dll");
|
||||
if (!hdll)
|
||||
return;
|
||||
|
||||
pStringTableInitialize = (void*)GetProcAddress(hdll, "StringTableInitialize");
|
||||
if (!pStringTableInitialize)
|
||||
pStringTableInitialize = (void*)GetProcAddress(hdll, "pSetupStringTableInitialize");
|
||||
|
||||
pStringTableAddString = (void*)GetProcAddress(hdll, "StringTableAddString");
|
||||
if (!pStringTableAddString)
|
||||
pStringTableAddString = (void*)GetProcAddress(hdll, "pSetupStringTableAddString");
|
||||
|
||||
pStringTableDuplicate = (void*)GetProcAddress(hdll, "StringTableDuplicate");
|
||||
if (!pStringTableDuplicate)
|
||||
pStringTableDuplicate = (void*)GetProcAddress(hdll, "pSetupStringTableDuplicate");
|
||||
|
||||
pStringTableDestroy = (void*)GetProcAddress(hdll, "StringTableDestroy");
|
||||
if (!pStringTableDestroy)
|
||||
pStringTableDestroy = (void*)GetProcAddress(hdll, "pSetupStringTableDestroy");
|
||||
|
||||
pStringTableLookUpString = (void*)GetProcAddress(hdll, "StringTableLookUpString");
|
||||
if (!pStringTableLookUpString)
|
||||
pStringTableLookUpString = (void*)GetProcAddress(hdll, "pSetupStringTableLookUpString");
|
||||
|
||||
pStringTableStringFromId = (void*)GetProcAddress(hdll, "StringTableStringFromId");
|
||||
if (!pStringTableStringFromId)
|
||||
pStringTableStringFromId = (void*)GetProcAddress(hdll, "pSetupStringTableStringFromId");
|
||||
}
|
||||
|
||||
static void test_StringTableInitialize()
|
||||
{
|
||||
table=StringTableInitialize();
|
||||
table=pStringTableInitialize();
|
||||
ok(table!=NULL,"Failed to Initialize String Table\n");
|
||||
}
|
||||
|
||||
|
@ -51,13 +91,13 @@ static void test_StringTableAddString()
|
|||
{
|
||||
DWORD retval;
|
||||
|
||||
retval=StringTableAddString(table,string,0);
|
||||
retval=pStringTableAddString(table,string,0);
|
||||
ok(retval!=-1,"Failed to add string to String Table\n");
|
||||
}
|
||||
|
||||
static void test_StringTableDuplicate()
|
||||
{
|
||||
table2=StringTableDuplicate(table);
|
||||
table2=pStringTableDuplicate(table);
|
||||
ok(table2!=NULL,"Failed to duplicate String Table\n");
|
||||
}
|
||||
|
||||
|
@ -65,33 +105,48 @@ static void test_StringTableLookUpString()
|
|||
{
|
||||
DWORD retval, retval2;
|
||||
|
||||
retval=StringTableLookUpString(table,string,0);
|
||||
retval=pStringTableLookUpString(table,string,0);
|
||||
ok(retval!=-1,"Failed find string in String Table 1\n");
|
||||
|
||||
retval2=StringTableLookUpString(table2,string,0);
|
||||
retval2=pStringTableLookUpString(table2,string,0);
|
||||
ok(retval2!=-1,"Failed find string in String Table 2\n");
|
||||
}
|
||||
|
||||
static void test_StringTableStringFromId()
|
||||
{
|
||||
WCHAR *string2;
|
||||
WCHAR *string2, *string3;
|
||||
int result;
|
||||
|
||||
string2=StringTableStringFromId(table,0);
|
||||
|
||||
/* correct */
|
||||
string2=pStringTableStringFromId(table,pStringTableLookUpString(table,string,0));
|
||||
ok(string2!=NULL,"Failed to look up string by ID from String Table\n");
|
||||
|
||||
result=lstrcmpiW(string, string2);
|
||||
ok(result==0,"String %p does not match requested StringID %p\n",string,string2);
|
||||
|
||||
todo_wine{
|
||||
/* This should not pass on Wine but it does */
|
||||
string3=pStringTableStringFromId(table,0);
|
||||
ok(string3!=NULL,"Failed to look up string by ID from String Table\n");
|
||||
|
||||
result=lstrcmpiW(string, string3);
|
||||
ok(result!=0,"String %p does not match requested StringID %p\n",string,string2);
|
||||
}
|
||||
}
|
||||
|
||||
START_TEST(stringtable)
|
||||
{
|
||||
load_it_up();
|
||||
|
||||
test_StringTableInitialize();
|
||||
test_StringTableAddString();
|
||||
test_StringTableDuplicate();
|
||||
test_StringTableLookUpString();
|
||||
test_StringTableStringFromId();
|
||||
|
||||
/* Cleanup */
|
||||
StringTableDestroy(table);
|
||||
/* assume we can always distroy */
|
||||
pStringTableDestroy(table);
|
||||
pStringTableDestroy(table2);
|
||||
|
||||
FreeLibrary(hdll);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue