mirror of
https://github.com/reactos/reactos.git
synced 2024-11-02 12:53:33 +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
|
@ -17,14 +17,10 @@
|
||||||
* License along with this library; if not, write to the Free Software
|
* License along with this library; if not, write to the Free Software
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
/* TODO:
|
/*
|
||||||
|
* TODO:
|
||||||
* Add case sensitivity test for StringTableAddString/StringTableLookupString
|
* Add case sensitivity test for StringTableAddString/StringTableLookupString
|
||||||
* Add test for StringTableStringFromIdEx
|
* 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>
|
#include <stdarg.h>
|
||||||
|
@ -38,12 +34,56 @@
|
||||||
|
|
||||||
#include "wine/test.h"
|
#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};
|
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()
|
static void test_StringTableInitialize()
|
||||||
{
|
{
|
||||||
table=StringTableInitialize();
|
table=pStringTableInitialize();
|
||||||
ok(table!=NULL,"Failed to Initialize String Table\n");
|
ok(table!=NULL,"Failed to Initialize String Table\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,13 +91,13 @@ static void test_StringTableAddString()
|
||||||
{
|
{
|
||||||
DWORD retval;
|
DWORD retval;
|
||||||
|
|
||||||
retval=StringTableAddString(table,string,0);
|
retval=pStringTableAddString(table,string,0);
|
||||||
ok(retval!=-1,"Failed to add string to String Table\n");
|
ok(retval!=-1,"Failed to add string to String Table\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_StringTableDuplicate()
|
static void test_StringTableDuplicate()
|
||||||
{
|
{
|
||||||
table2=StringTableDuplicate(table);
|
table2=pStringTableDuplicate(table);
|
||||||
ok(table2!=NULL,"Failed to duplicate String Table\n");
|
ok(table2!=NULL,"Failed to duplicate String Table\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,33 +105,48 @@ static void test_StringTableLookUpString()
|
||||||
{
|
{
|
||||||
DWORD retval, retval2;
|
DWORD retval, retval2;
|
||||||
|
|
||||||
retval=StringTableLookUpString(table,string,0);
|
retval=pStringTableLookUpString(table,string,0);
|
||||||
ok(retval!=-1,"Failed find string in String Table 1\n");
|
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");
|
ok(retval2!=-1,"Failed find string in String Table 2\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_StringTableStringFromId()
|
static void test_StringTableStringFromId()
|
||||||
{
|
{
|
||||||
WCHAR *string2;
|
WCHAR *string2, *string3;
|
||||||
int result;
|
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");
|
ok(string2!=NULL,"Failed to look up string by ID from String Table\n");
|
||||||
|
|
||||||
result=lstrcmpiW(string, string2);
|
result=lstrcmpiW(string, string2);
|
||||||
ok(result==0,"String %p does not match requested StringID %p\n",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)
|
START_TEST(stringtable)
|
||||||
{
|
{
|
||||||
|
load_it_up();
|
||||||
|
|
||||||
test_StringTableInitialize();
|
test_StringTableInitialize();
|
||||||
test_StringTableAddString();
|
test_StringTableAddString();
|
||||||
test_StringTableDuplicate();
|
test_StringTableDuplicate();
|
||||||
test_StringTableLookUpString();
|
test_StringTableLookUpString();
|
||||||
test_StringTableStringFromId();
|
test_StringTableStringFromId();
|
||||||
|
|
||||||
/* Cleanup */
|
/* assume we can always distroy */
|
||||||
StringTableDestroy(table);
|
pStringTableDestroy(table);
|
||||||
|
pStringTableDestroy(table2);
|
||||||
|
|
||||||
|
FreeLibrary(hdll);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue