comctl32/dpa: Split tests to several functions to avoid undesired dependencies.
This commit is contained in:
parent
7517135fe7
commit
e7304066d1
|
@ -201,7 +201,6 @@ static void test_dpa(void)
|
||||||
INT ret, i;
|
INT ret, i;
|
||||||
PVOID p;
|
PVOID p;
|
||||||
DWORD dw, dw2, dw3;
|
DWORD dw, dw2, dw3;
|
||||||
HRESULT hRes;
|
|
||||||
BOOL rc;
|
BOOL rc;
|
||||||
|
|
||||||
GetSystemInfo(&si);
|
GetSystemInfo(&si);
|
||||||
|
@ -336,49 +335,6 @@ static void test_dpa(void)
|
||||||
ok(j != i, "i=%d\n", i);
|
ok(j != i, "i=%d\n", i);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(pDPA_Merge)
|
|
||||||
{
|
|
||||||
/* Delete all even entries from dpa */
|
|
||||||
p = pDPA_DeletePtr(dpa, 1);
|
|
||||||
p = pDPA_DeletePtr(dpa, 2);
|
|
||||||
p = pDPA_DeletePtr(dpa, 3);
|
|
||||||
rc=CheckDPA(dpa, 0x135, &dw);
|
|
||||||
ok(rc, "dw=0x%x\n", dw);
|
|
||||||
|
|
||||||
/* Delete all odd entries from dpa2 */
|
|
||||||
pDPA_Merge(dpa2, dpa, DPAM_DELETE,
|
|
||||||
CB_CmpLT, CB_MergeDeleteOddSrc, 0xdeadbeef);
|
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
rc=CheckDPA(dpa2, 0x246, &dw2);
|
|
||||||
ok(rc, "dw=0x%x\n", dw2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Merge dpa3 into dpa2 and dpa */
|
|
||||||
pDPA_Merge(dpa, dpa3, DPAM_INSERT|DPAM_NOSORT,
|
|
||||||
CB_CmpLT, CB_MergeInsertSrc, 0xdeadbeef);
|
|
||||||
pDPA_Merge(dpa2, dpa3, DPAM_INSERT|DPAM_NOSORT,
|
|
||||||
CB_CmpLT, CB_MergeInsertSrc, 0xdeadbeef);
|
|
||||||
|
|
||||||
rc=CheckDPA(dpa, 0x123456, &dw);
|
|
||||||
ok(rc, "dw=0x%x\n", dw);
|
|
||||||
rc=CheckDPA(dpa2, 0x123456, &dw2);
|
|
||||||
ok(rc ||
|
|
||||||
broken(!rc), /* win98 */
|
|
||||||
"dw2=0x%x\n", dw2);
|
|
||||||
rc=CheckDPA(dpa3, 0x123456, &dw3);
|
|
||||||
ok(rc, "dw3=0x%x\n", dw3);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(pDPA_EnumCallback)
|
|
||||||
{
|
|
||||||
nEnum = 0;
|
|
||||||
pDPA_EnumCallback(dpa2, CB_EnumFirstThree, dpa2);
|
|
||||||
rc=CheckDPA(dpa2, 0x777456, &dw2);
|
|
||||||
ok(rc, "dw=0x%x\n", dw2);
|
|
||||||
ok(nEnum == 3, "nEnum=%d\n", nEnum);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Setting item with huge index should work */
|
/* Setting item with huge index should work */
|
||||||
ok(pDPA_SetPtr(dpa2, 0x12345, (PVOID)0xdeadbeef), "\n");
|
ok(pDPA_SetPtr(dpa2, 0x12345, (PVOID)0xdeadbeef), "\n");
|
||||||
ret = pDPA_GetPtrIndex(dpa2, (PVOID)0xdeadbeef);
|
ret = pDPA_GetPtrIndex(dpa2, (PVOID)0xdeadbeef);
|
||||||
|
@ -388,61 +344,200 @@ static void test_dpa(void)
|
||||||
rc=CheckDPA(dpa2, 0, &dw2);
|
rc=CheckDPA(dpa2, 0, &dw2);
|
||||||
ok(rc, "dw2=0x%x\n", dw2);
|
ok(rc, "dw2=0x%x\n", dw2);
|
||||||
pDPA_Destroy(dpa2);
|
pDPA_Destroy(dpa2);
|
||||||
|
pDPA_Destroy(dpa3);
|
||||||
|
}
|
||||||
|
|
||||||
if(pDPA_DestroyCallback)
|
static void test_DPA_Merge(void)
|
||||||
|
{
|
||||||
|
HDPA dpa, dpa2, dpa3;
|
||||||
|
INT ret, i;
|
||||||
|
DWORD dw;
|
||||||
|
BOOL rc;
|
||||||
|
|
||||||
|
if(!pDPA_Merge)
|
||||||
{
|
{
|
||||||
nEnum = 0;
|
win_skip("DPA_Merge() not available\n");
|
||||||
pDPA_DestroyCallback(dpa3, CB_EnumFirstThree, dpa3);
|
return;
|
||||||
ok(nEnum == 3, "nEnum=%d\n", nEnum);
|
|
||||||
}
|
}
|
||||||
else pDPA_Destroy(dpa3);
|
|
||||||
|
dpa = pDPA_Create(0);
|
||||||
|
dpa2 = pDPA_Create(0);
|
||||||
|
dpa3 = pDPA_Create(0);
|
||||||
|
|
||||||
|
ret = pDPA_InsertPtr(dpa, 0, (PVOID)1);
|
||||||
|
ok(ret == 0, "ret=%d\n", ret);
|
||||||
|
ret = pDPA_InsertPtr(dpa, 1, (PVOID)3);
|
||||||
|
ok(ret == 1, "ret=%d\n", ret);
|
||||||
|
ret = pDPA_InsertPtr(dpa, 2, (PVOID)5);
|
||||||
|
ok(ret == 2, "ret=%d\n", ret);
|
||||||
|
|
||||||
|
rc = CheckDPA(dpa, 0x135, &dw);
|
||||||
|
ok(rc, "dw=0x%x\n", dw);
|
||||||
|
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
ret = pDPA_InsertPtr(dpa2, i, (PVOID)(6-i));
|
||||||
|
ok(ret == i, "ret=%d\n", ret);
|
||||||
|
ret = pDPA_InsertPtr(dpa3, i, (PVOID)(i+1));
|
||||||
|
ok(ret == i, "ret=%d\n", ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = CheckDPA(dpa2, 0x654321, &dw);
|
||||||
|
ok(rc, "dw=0x%x\n", dw);
|
||||||
|
rc = CheckDPA(dpa3, 0x123456, &dw);
|
||||||
|
ok(rc, "dw=0x%x\n", dw);
|
||||||
|
|
||||||
|
/* Delete all odd entries from dpa2 */
|
||||||
|
pDPA_Merge(dpa2, dpa, DPAM_DELETE,
|
||||||
|
CB_CmpLT, CB_MergeDeleteOddSrc, 0xdeadbeef);
|
||||||
|
todo_wine
|
||||||
|
{
|
||||||
|
rc = CheckDPA(dpa2, 0x246, &dw);
|
||||||
|
ok(rc, "dw=0x%x\n", dw);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Merge dpa3 into dpa2 and dpa */
|
||||||
|
pDPA_Merge(dpa, dpa3, DPAM_INSERT|DPAM_NOSORT,
|
||||||
|
CB_CmpLT, CB_MergeInsertSrc, 0xdeadbeef);
|
||||||
|
pDPA_Merge(dpa2, dpa3, DPAM_INSERT|DPAM_NOSORT,
|
||||||
|
CB_CmpLT, CB_MergeInsertSrc, 0xdeadbeef);
|
||||||
|
|
||||||
|
rc = CheckDPA(dpa, 0x123456, &dw);
|
||||||
|
ok(rc, "dw=0x%x\n", dw);
|
||||||
|
rc = CheckDPA(dpa2, 0x123456, &dw);
|
||||||
|
ok(rc ||
|
||||||
|
broken(!rc), /* win98 */
|
||||||
|
"dw=0x%x\n", dw);
|
||||||
|
rc = CheckDPA(dpa3, 0x123456, &dw);
|
||||||
|
ok(rc, "dw=0x%x\n", dw);
|
||||||
|
|
||||||
|
pDPA_Destroy(dpa);
|
||||||
|
pDPA_Destroy(dpa2);
|
||||||
|
pDPA_Destroy(dpa3);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_DPA_EnumCallback(void)
|
||||||
|
{
|
||||||
|
HDPA dpa;
|
||||||
|
BOOL rc;
|
||||||
|
DWORD dw;
|
||||||
|
INT i, ret;
|
||||||
|
|
||||||
|
if(!pDPA_EnumCallback)
|
||||||
|
{
|
||||||
|
win_skip("DPA_EnumCallback() not available\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
dpa = pDPA_Create(0);
|
||||||
|
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
ret = pDPA_InsertPtr(dpa, i, (PVOID)(i+1));
|
||||||
|
ok(ret == i, "ret=%d\n", ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = CheckDPA(dpa, 0x123456, &dw);
|
||||||
|
ok(rc, "dw=0x%x\n", dw);
|
||||||
|
|
||||||
|
nEnum = 0;
|
||||||
|
/* test callback sets first 3 items to 7 */
|
||||||
|
pDPA_EnumCallback(dpa, CB_EnumFirstThree, dpa);
|
||||||
|
rc = CheckDPA(dpa, 0x777456, &dw);
|
||||||
|
ok(rc, "dw=0x%x\n", dw);
|
||||||
|
ok(nEnum == 3, "nEnum=%d\n", nEnum);
|
||||||
|
|
||||||
|
pDPA_Destroy(dpa);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_DPA_DestroyCallback(void)
|
||||||
|
{
|
||||||
|
HDPA dpa;
|
||||||
|
INT i, ret;
|
||||||
|
|
||||||
|
if(!pDPA_DestroyCallback)
|
||||||
|
{
|
||||||
|
win_skip("DPA_DestroyCallback() not available\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
dpa = pDPA_Create(0);
|
||||||
|
|
||||||
|
for (i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
ret = pDPA_InsertPtr(dpa, i, (PVOID)(i+1));
|
||||||
|
ok(ret == i, "ret=%d\n", ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
nEnum = 0;
|
||||||
|
pDPA_DestroyCallback(dpa, CB_EnumFirstThree, dpa);
|
||||||
|
ok(nEnum == 3, "nEnum=%d\n", nEnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_dpa_stream(void)
|
||||||
|
{
|
||||||
|
HDPA dpa;
|
||||||
|
HRESULT hRes;
|
||||||
|
INT ret, i;
|
||||||
|
BOOL rc;
|
||||||
|
|
||||||
|
static const WCHAR szStg[] = { 'S','t','g',0 };
|
||||||
|
IStorage* pStg = NULL;
|
||||||
|
IStream* pStm = NULL;
|
||||||
|
LARGE_INTEGER liZero;
|
||||||
|
DWORD dwMode, dw;
|
||||||
|
|
||||||
if(!pDPA_SaveStream)
|
if(!pDPA_SaveStream)
|
||||||
goto skip_stream_tests;
|
{
|
||||||
|
win_skip("DPA_SaveStream() not available. Skipping stream tests.\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
hRes = CoInitialize(NULL);
|
hRes = CoInitialize(NULL);
|
||||||
if(hRes == S_OK)
|
if (hRes != S_OK)
|
||||||
{
|
{
|
||||||
static const WCHAR szStg[] = { 'S','t','g',0 };
|
ok(0, "hResult: %d\n", hRes);
|
||||||
IStorage* pStg = NULL;
|
return;
|
||||||
IStream* pStm = NULL;
|
|
||||||
LARGE_INTEGER liZero;
|
|
||||||
DWORD dwMode;
|
|
||||||
liZero.QuadPart = 0;
|
|
||||||
|
|
||||||
dwMode = STGM_DIRECT|STGM_CREATE|STGM_READWRITE|STGM_SHARE_EXCLUSIVE;
|
|
||||||
hRes = StgCreateDocfile(NULL, dwMode|STGM_DELETEONRELEASE, 0, &pStg);
|
|
||||||
ok(hRes == S_OK, "hRes=0x%x\n", hRes);
|
|
||||||
|
|
||||||
hRes = IStorage_CreateStream(pStg, szStg, dwMode, 0, 0, &pStm);
|
|
||||||
ok(hRes == S_OK, "hRes=0x%x\n", hRes);
|
|
||||||
|
|
||||||
hRes = pDPA_SaveStream(dpa, CB_Save, pStm, 0xdeadbeef);
|
|
||||||
todo_wine ok(hRes == S_OK, "hRes=0x%x\n", hRes);
|
|
||||||
pDPA_Destroy(dpa);
|
|
||||||
|
|
||||||
hRes = IStream_Seek(pStm, liZero, STREAM_SEEK_SET, NULL);
|
|
||||||
ok(hRes == S_OK, "hRes=0x%x\n", hRes);
|
|
||||||
hRes = pDPA_LoadStream(&dpa, CB_Load, pStm, 0xdeadbeef);
|
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(hRes == S_OK, "hRes=0x%x\n", hRes);
|
|
||||||
rc=CheckDPA(dpa, 0x123456, &dw);
|
|
||||||
ok(rc, "dw=0x%x\n", dw);
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = IStream_Release(pStm);
|
|
||||||
ok(!ret, "ret=%d\n", ret);
|
|
||||||
|
|
||||||
ret = IStorage_Release(pStg);
|
|
||||||
ok(!ret, "ret=%d\n", ret);
|
|
||||||
|
|
||||||
CoUninitialize();
|
|
||||||
}
|
}
|
||||||
else ok(0, "hResult: %d\n", hRes);
|
|
||||||
|
|
||||||
skip_stream_tests:
|
dpa = pDPA_Create(0);
|
||||||
|
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
ret = pDPA_InsertPtr(dpa, i, (PVOID)(i+1));
|
||||||
|
ok(ret == i, "ret=%d\n", ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
dwMode = STGM_DIRECT|STGM_CREATE|STGM_READWRITE|STGM_SHARE_EXCLUSIVE;
|
||||||
|
hRes = StgCreateDocfile(NULL, dwMode|STGM_DELETEONRELEASE, 0, &pStg);
|
||||||
|
ok(hRes == S_OK, "hRes=0x%x\n", hRes);
|
||||||
|
|
||||||
|
hRes = IStorage_CreateStream(pStg, szStg, dwMode, 0, 0, &pStm);
|
||||||
|
ok(hRes == S_OK, "hRes=0x%x\n", hRes);
|
||||||
|
|
||||||
|
hRes = pDPA_SaveStream(dpa, CB_Save, pStm, 0xdeadbeef);
|
||||||
|
todo_wine ok(hRes == S_OK, "hRes=0x%x\n", hRes);
|
||||||
pDPA_Destroy(dpa);
|
pDPA_Destroy(dpa);
|
||||||
|
|
||||||
|
liZero.QuadPart = 0;
|
||||||
|
hRes = IStream_Seek(pStm, liZero, STREAM_SEEK_SET, NULL);
|
||||||
|
ok(hRes == S_OK, "hRes=0x%x\n", hRes);
|
||||||
|
hRes = pDPA_LoadStream(&dpa, CB_Load, pStm, 0xdeadbeef);
|
||||||
|
todo_wine
|
||||||
|
{
|
||||||
|
ok(hRes == S_OK, "hRes=0x%x\n", hRes);
|
||||||
|
rc = CheckDPA(dpa, 0x123456, &dw);
|
||||||
|
ok(rc, "dw=0x%x\n", dw);
|
||||||
|
}
|
||||||
|
pDPA_Destroy(dpa);
|
||||||
|
|
||||||
|
ret = IStream_Release(pStm);
|
||||||
|
ok(!ret, "ret=%d\n", ret);
|
||||||
|
|
||||||
|
ret = IStorage_Release(pStg);
|
||||||
|
ok(!ret, "ret=%d\n", ret);
|
||||||
|
|
||||||
|
CoUninitialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
START_TEST(dpa)
|
START_TEST(dpa)
|
||||||
|
@ -451,8 +546,15 @@ START_TEST(dpa)
|
||||||
|
|
||||||
hcomctl32 = GetModuleHandleA("comctl32.dll");
|
hcomctl32 = GetModuleHandleA("comctl32.dll");
|
||||||
|
|
||||||
if(InitFunctionPtrs(hcomctl32))
|
if(!InitFunctionPtrs(hcomctl32))
|
||||||
test_dpa();
|
{
|
||||||
else
|
|
||||||
win_skip("Needed functions are not available\n");
|
win_skip("Needed functions are not available\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
test_dpa();
|
||||||
|
test_DPA_Merge();
|
||||||
|
test_DPA_EnumCallback();
|
||||||
|
test_DPA_DestroyCallback();
|
||||||
|
test_dpa_stream();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue