Alexandre Julliard : user32/tests: Add a few more tests for synthesized formats rendering.

Alexandre Julliard julliard at winehq.org
Tue Sep 6 10:47:31 CDT 2016


Module: wine
Branch: master
Commit: b1e8ed3e3b6efe9f69b41551a62b57d09543dfea
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b1e8ed3e3b6efe9f69b41551a62b57d09543dfea

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Sep  6 15:36:01 2016 +0900

user32/tests: Add a few more tests for synthesized formats rendering.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/user32/tests/clipboard.c | 79 +++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 77 insertions(+), 2 deletions(-)

diff --git a/dlls/user32/tests/clipboard.c b/dlls/user32/tests/clipboard.c
index cf6d744..ca81d72 100644
--- a/dlls/user32/tests/clipboard.c
+++ b/dlls/user32/tests/clipboard.c
@@ -561,6 +561,24 @@ static HBITMAP create_dib( BOOL v5 )
     return ret;
 }
 
+static LRESULT CALLBACK renderer_winproc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp )
+{
+    static UINT rendered;
+    UINT ret;
+
+    switch (msg)
+    {
+    case WM_RENDERFORMAT:
+        if (wp < 32) rendered |= (1 << wp);
+        break;
+    case WM_USER:
+        ret = rendered;
+        rendered = 0;
+        return ret;
+    }
+    return DefWindowProcA( hwnd, msg, wp, lp );
+}
+
 static void test_synthesized(void)
 {
     static const struct test
@@ -583,8 +601,12 @@ static void test_synthesized(void)
     HGLOBAL h, htext;
     HENHMETAFILE emf;
     BOOL r;
-    UINT cf, i, j, count;
+    UINT cf, i, j, count, rendered;
     HANDLE data;
+    HWND hwnd;
+
+    hwnd = CreateWindowA( "static", NULL, WS_POPUP, 0, 0, 10, 10, 0, 0, 0, NULL );
+    SetWindowLongPtrA( hwnd, GWLP_WNDPROC, (LONG_PTR)renderer_winproc );
 
     htext = create_textA();
     emf = create_emf();
@@ -653,6 +675,28 @@ static void test_synthesized(void)
     r = EmptyClipboard();
     ok(r, "gle %d\n", GetLastError());
 
+    SetClipboardData( CF_UNICODETEXT, create_textW() );
+    SetClipboardData( CF_TEXT, create_textA() );
+    SetClipboardData( CF_OEMTEXT, create_textA() );
+    r = CloseClipboard();
+    ok(r, "gle %d\n", GetLastError());
+
+    r = OpenClipboard( NULL );
+    ok(r, "gle %d\n", GetLastError());
+    cf = EnumClipboardFormats(0);
+    ok( cf == CF_UNICODETEXT, "cf %08x\n", cf );
+    cf = EnumClipboardFormats(cf);
+    ok( cf == CF_TEXT, "cf %08x\n", cf );
+    cf = EnumClipboardFormats(cf);
+    ok( cf == CF_OEMTEXT, "cf %08x\n", cf );
+    cf = EnumClipboardFormats(cf);
+    todo_wine ok( cf == CF_LOCALE, "cf %08x\n", cf );
+    if (cf == CF_LOCALE) cf = EnumClipboardFormats( cf );
+    ok( cf == 0, "cf %08x\n", cf );
+
+    r = EmptyClipboard();
+    ok(r, "gle %d\n", GetLastError());
+
     r = CloseClipboard();
     ok(r, "gle %d\n", GetLastError());
 
@@ -703,7 +747,7 @@ static void test_synthesized(void)
         todo_wine_if (tests[i].todo)
         ok( count == j, "%u: count %u instead of %u\n", i, count, j );
 
-        r = OpenClipboard(NULL);
+        r = OpenClipboard( hwnd );
         ok(r, "%u: gle %d\n", i, GetLastError());
         cf = 0;
         for (j = 0; tests[i].expected[j]; j++)
@@ -739,13 +783,20 @@ static void test_synthesized(void)
         r = EmptyClipboard();
         ok(r, "%u: gle %d\n", i, GetLastError());
 
+        rendered = SendMessageA( hwnd, WM_USER, 0, 0 );
+        ok( !rendered, "%u: formats %08x have been rendered\n", i, rendered );
+
         SetClipboardData( tests[i].format, 0 );
+        rendered = SendMessageA( hwnd, WM_USER, 0, 0 );
+        ok( !rendered, "%u: formats %08x have been rendered\n", i, rendered );
 
         count = CountClipboardFormats();
         ok( count == 1, "%u: count %u\n", i, count );
 
         r = CloseClipboard();
         ok(r, "%u: gle %d\n", i, GetLastError());
+        rendered = SendMessageA( hwnd, WM_USER, 0, 0 );
+        ok( !rendered, "%u: formats %08x have been rendered\n", i, rendered );
 
         count = CountClipboardFormats();
         for (j = 0; tests[i].expected[j]; j++)
@@ -756,6 +807,8 @@ static void test_synthesized(void)
         }
         todo_wine_if (tests[i].todo)
         ok( count == j, "%u: count %u instead of %u\n", i, count, j );
+        rendered = SendMessageA( hwnd, WM_USER, 0, 0 );
+        ok( !rendered, "%u: formats %08x have been rendered\n", i, rendered );
 
         r = OpenClipboard(NULL);
         ok(r, "%u: gle %d\n", i, GetLastError());
@@ -767,11 +820,28 @@ static void test_synthesized(void)
             ok(cf == tests[i].expected[j], "%u.%u: got %04x instead of %04x\n",
                i, j, cf, tests[i].expected[j] );
             if (cf != tests[i].expected[j]) break;
+            rendered = SendMessageA( hwnd, WM_USER, 0, 0 );
+            ok( !rendered, "%u.%u: formats %08x have been rendered\n", i, j, rendered );
             data = GetClipboardData( cf );
+            rendered = SendMessageA( hwnd, WM_USER, 0, 0 );
             if (cf == CF_LOCALE)
+            {
                 ok(data != NULL, "%u: CF_LOCALE no data\n", i);
+                ok( !rendered, "%u.%u: formats %08x have been rendered\n", i, j, rendered );
+            }
             else
+            {
                 ok(!data, "%u: format %04x got data %p\n", i, cf, data);
+                todo_wine_if( tests[i].format == CF_ENHMETAFILE && tests[i].expected[j] == CF_METAFILEPICT )
+                ok( rendered == (1 << tests[i].format),
+                    "%u.%u: formats %08x have been rendered\n", i, j, rendered );
+                /* try to render a second time */
+                data = GetClipboardData( cf );
+                rendered = SendMessageA( hwnd, WM_USER, 0, 0 );
+                todo_wine_if( i > 2 && j == 1 )
+                ok( rendered == (1 << tests[i].format),
+                    "%u.%u: formats %08x have been rendered\n", i, j, rendered );
+            }
         }
         if (!tests[i].expected[j])
         {
@@ -780,6 +850,8 @@ static void test_synthesized(void)
         }
         r = CloseClipboard();
         ok(r, "%u: gle %d\n", i, GetLastError());
+        rendered = SendMessageA( hwnd, WM_USER, 0, 0 );
+        ok( !rendered, "%u: formats %08x have been rendered\n", i, rendered );
     }
 
     r = OpenClipboard(NULL);
@@ -788,6 +860,7 @@ static void test_synthesized(void)
     ok(r, "gle %d\n", GetLastError());
     r = CloseClipboard();
     ok(r, "gle %d\n", GetLastError());
+    DestroyWindow( hwnd );
 }
 
 static CRITICAL_SECTION clipboard_cs;
@@ -1622,6 +1695,8 @@ static void test_handles( HWND hwnd )
     ok( is_fixed( data ), "expected fixed mem %p\n", data );
     data = GetClipboardData( CF_UNICODETEXT );
     ok( is_fixed( data ), "expected fixed mem %p\n", data );
+    data = GetClipboardData( CF_LOCALE );
+    todo_wine ok( is_fixed( data ), "expected fixed mem %p\n", data );
     data = GetClipboardData( CF_BITMAP );
     ok( data == bitmap, "expected bitmap %p\n", data );
     data = GetClipboardData( CF_PALETTE );




More information about the wine-cvs mailing list