added support for test on 2k,XP and 2k3. Check for a bug in our implementation and wrap it in a todo_wine block Modified: trunk/reactos/regtests/winetests/setupapi/stringtable.c _____
Modified: trunk/reactos/regtests/winetests/setupapi/stringtable.c --- trunk/reactos/regtests/winetests/setupapi/stringtable.c 2005-09-16 05:51:20 UTC (rev 17876) +++ trunk/reactos/regtests/winetests/setupapi/stringtable.c 2005-09-16 08:48:00 UTC (rev 17877) @@ -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"
+ +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 WCHAR string[] = {'s','t','r','i','n','g',0};
+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 @@ { 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 @@ { 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,st ring,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); }