[1/2] comctl32/dpa: Split tests to several functions to avoid undesired dependencies

Nikolay Sivov bunglehead at gmail.com
Wed Sep 9 16:41:25 CDT 2009


Changelog:
    - Split tests to several functions to avoid undesired dependencies.

>From 20de5c13270316939fa24744ce10081ba0cb3072 Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <bunglehead at gmail.com>
Date: Wed, 9 Sep 2009 23:15:32 +0400
Subject: Split tests to several functions to avoid undesired dependencies.

---
 dlls/comctl32/tests/dpa.c |  278 +++++++++++++++++++++++++++++++--------------
 1 files changed, 190 insertions(+), 88 deletions(-)

diff --git a/dlls/comctl32/tests/dpa.c b/dlls/comctl32/tests/dpa.c
index 741aeb6..e6372a9 100644
--- a/dlls/comctl32/tests/dpa.c
+++ b/dlls/comctl32/tests/dpa.c
@@ -201,7 +201,6 @@ static void test_dpa(void)
     INT ret, i;
     PVOID p;
     DWORD dw, dw2, dw3;
-    HRESULT hRes;
     BOOL rc;
     
     GetSystemInfo(&si);
@@ -336,49 +335,6 @@ static void test_dpa(void)
         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 */
     ok(pDPA_SetPtr(dpa2, 0x12345, (PVOID)0xdeadbeef), "\n");
     ret = pDPA_GetPtrIndex(dpa2, (PVOID)0xdeadbeef);
@@ -388,61 +344,200 @@ static void test_dpa(void)
     rc=CheckDPA(dpa2, 0, &dw2);
     ok(rc, "dw2=0x%x\n", dw2);
     pDPA_Destroy(dpa2);
+    pDPA_Destroy(dpa3);
+}
+
+static void test_DPA_Merge(void)
+{
+    HDPA dpa, dpa2, dpa3;
+    INT ret, i;
+    DWORD dw;
+    BOOL rc;
+
+    if(!pDPA_Merge)
+    {
+        win_skip("DPA_Merge() not available\n");
+        return;
+    }
+
+    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);
 
-    if(pDPA_DestroyCallback)
+    for (i = 0; i < 6; i++)
     {
-        nEnum = 0;
-        pDPA_DestroyCallback(dpa3, CB_EnumFirstThree, dpa3);
-        ok(nEnum == 3, "nEnum=%d\n", nEnum);
+        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);
     }
-    else pDPA_Destroy(dpa3);
+
+    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)
-        goto skip_stream_tests;
+    {
+        win_skip("DPA_SaveStream() not available. Skipping stream tests.\n");
+        return;
+    }
 
     hRes = CoInitialize(NULL);
-    if(hRes == S_OK)
+    if (hRes != S_OK)
     {
-        static const WCHAR szStg[] = { 'S','t','g',0 };
-        IStorage* pStg = NULL;
-        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);
+        ok(0, "hResult: %d\n", hRes);
+        return;
+    }
 
-        hRes = IStorage_CreateStream(pStg, szStg, dwMode, 0, 0, &pStm);
-        ok(hRes == S_OK, "hRes=0x%x\n", hRes);
+    dpa = pDPA_Create(0);
 
-        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);
-        }
+    for (i = 0; i < 6; i++)
+    {
+        ret = pDPA_InsertPtr(dpa, i, (PVOID)(i+1));
+        ok(ret == i, "ret=%d\n", ret);
+    }
 
-        ret = IStream_Release(pStm);
-        ok(!ret, "ret=%d\n", ret);
-	
-        ret = IStorage_Release(pStg);
-        ok(!ret, "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);
 
-        CoUninitialize();
-    }
-    else ok(0, "hResult: %d\n", hRes);
+    hRes = IStorage_CreateStream(pStg, szStg, dwMode, 0, 0, &pStm);
+    ok(hRes == S_OK, "hRes=0x%x\n", hRes);
 
-skip_stream_tests:
+    hRes = pDPA_SaveStream(dpa, CB_Save, pStm, 0xdeadbeef);
+    todo_wine ok(hRes == S_OK, "hRes=0x%x\n", hRes);
     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)
@@ -451,8 +546,15 @@ START_TEST(dpa)
 
     hcomctl32 = GetModuleHandleA("comctl32.dll");
 
-    if(InitFunctionPtrs(hcomctl32))
-        test_dpa();
-    else
+    if(!InitFunctionPtrs(hcomctl32))
+    {
         win_skip("Needed functions are not available\n");
+        return;
+    }
+
+    test_dpa();
+    test_DPA_Merge();
+    test_DPA_EnumCallback();
+    test_DPA_DestroyCallback();
+    test_dpa_stream();
 }
-- 
1.5.6.5







More information about the wine-patches mailing list