From 2fe4d89ea8f149040f70ba7bb784d1ee2a5f25a0 Mon Sep 17 00:00:00 2001 From: Steven Edwards Date: Fri, 16 Sep 2005 08:48:00 +0000 Subject: [PATCH] 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 --- .../regtests/winetests/setupapi/stringtable.c | 89 +++++++++++++++---- 1 file changed, 72 insertions(+), 17 deletions(-) diff --git a/reactos/regtests/winetests/setupapi/stringtable.c b/reactos/regtests/winetests/setupapi/stringtable.c index 4ff1df47cde..0bc30c8a982 100644 --- a/reactos/regtests/winetests/setupapi/stringtable.c +++ b/reactos/regtests/winetests/setupapi/stringtable.c @@ -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 @@ -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); } -- 2.17.1