setupapi: Add some tests for StringTableLookUpStringEx. Make them pass.

oldstable
Hans Leidekker 2009-01-07 13:22:49 +01:00 committed by Alexandre Julliard
parent 0184dea2d4
commit 601870a435
2 changed files with 35 additions and 3 deletions

View File

@ -273,6 +273,7 @@ StringTableAddStringEx(HSTRING_TABLE hStringTable, LPWSTR lpString,
return ~0u;
}
memcpy(pStringTable->pSlots[i].pData, lpExtraData, dwExtraDataSize);
pStringTable->pSlots[i].dwSize = dwExtraDataSize;
pStringTable->dwUsedSlots++;
return i + 1;
}
@ -492,7 +493,7 @@ StringTableLookUpStringEx(HSTRING_TABLE hStringTable,
if (!lstrcmpW(pStringTable->pSlots[i].pString, lpString))
{
if (lpExtraData)
memcpy(lpExtraData, pStringTable->pSlots[i].pData, pStringTable->pSlots[i].dwSize);
memcpy(lpExtraData, pStringTable->pSlots[i].pData, (DWORD)lpReserved);
return i + 1;
}
}
@ -501,7 +502,7 @@ StringTableLookUpStringEx(HSTRING_TABLE hStringTable,
if (!lstrcmpiW(pStringTable->pSlots[i].pString, lpString))
{
if (lpExtraData)
memcpy(lpExtraData, pStringTable->pSlots[i].pData, pStringTable->pSlots[i].dwSize);
memcpy(lpExtraData, pStringTable->pSlots[i].pData, (DWORD)lpReserved);
return i + 1;
}
}

View File

@ -44,6 +44,7 @@ static DWORD (WINAPI *pStringTableAddStringEx)(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 HSTRING_TABLE (WINAPI *pStringTableInitializeEx)(DWORD, DWORD);
static DWORD (WINAPI *pStringTableLookUpString)(HSTRING_TABLE, LPWSTR, DWORD);
static DWORD (WINAPI *pStringTableLookUpStringEx)(HSTRING_TABLE, LPWSTR, DWORD, LPVOID, LPDWORD);
static LPWSTR (WINAPI *pStringTableStringFromId)(HSTRING_TABLE, DWORD);
@ -65,6 +66,10 @@ static void load_it_up(void)
if (!pStringTableInitialize)
pStringTableInitialize = (void*)GetProcAddress(hdll, "pSetupStringTableInitialize");
pStringTableInitializeEx = (void*)GetProcAddress(hdll, "StringTableInitializeEx");
if (!pStringTableInitializeEx)
pStringTableInitializeEx = (void*)GetProcAddress(hdll, "pSetupStringTableInitializeEx");
pStringTableAddString = (void*)GetProcAddress(hdll, "StringTableAddString");
if (!pStringTableAddString)
pStringTableAddString = (void*)GetProcAddress(hdll, "pSetupStringTableAddString");
@ -221,8 +226,10 @@ static void test_StringTableLookUpString(void)
static void test_StringTableLookUpStringEx(void)
{
DWORD retval, retval2, hstring, hString, hfoo;
static WCHAR uilevel[] = {'U','I','L','E','V','E','L',0};
DWORD retval, retval2, hstring, hString, hfoo, data;
HANDLE table, table2;
char buffer[4];
table = pStringTableInitialize();
ok(table != NULL,"Failed to Initialize String Table\n");
@ -273,6 +280,30 @@ static void test_StringTableLookUpStringEx(void)
retval, hString);
pStringTableDestroy(table);
table = pStringTableInitializeEx(0x1000, 0);
ok(table != NULL, "failed to initialize string table\n");
data = 0xaaaaaaaa;
retval = pStringTableAddStringEx(table, uilevel, 0x5, &data, sizeof(data));
ok(retval != ~0u, "failed to add 'UILEVEL' to string table\n");
memset(buffer, 0x55, sizeof(buffer));
retval = pStringTableLookUpStringEx(table, uilevel, ST_CASE_SENSITIVE_COMPARE, buffer, (LPDWORD)0);
ok(retval != ~0u, "failed find 'UILEVEL' in string table\n");
ok(memcmp(buffer, &data, 4), "unexpected data\n");
memset(buffer, 0x55, sizeof(buffer));
retval = pStringTableLookUpStringEx(table, uilevel, ST_CASE_SENSITIVE_COMPARE, buffer, (LPDWORD)2);
ok(retval != ~0u, "failed find 'UILEVEL' in string table\n");
ok(!memcmp(buffer, &data, 2), "unexpected data\n");
memset(buffer, 0x55, sizeof(buffer));
retval = pStringTableLookUpStringEx(table, uilevel, ST_CASE_SENSITIVE_COMPARE, buffer, (LPDWORD)sizeof(buffer));
ok(retval != ~0u, "failed find 'UILEVEL' in string table\n");
ok(!memcmp(buffer, &data, 4), "unexpected data\n");
pStringTableDestroy(table);
}
static void test_StringTableStringFromId(void)