Alexandre Julliard : user32/tests: Fix a few more menu test failures on Windows.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Nov 25 10:11:19 CST 2015


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Nov 25 17:35:20 2015 +0900

user32/tests: Fix a few more menu test failures on Windows.

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

---

 dlls/user32/tests/menu.c | 32 ++++++++++++++++++++------------
 1 file changed, 20 insertions(+), 12 deletions(-)

diff --git a/dlls/user32/tests/menu.c b/dlls/user32/tests/menu.c
index f469212..33d8eb8 100644
--- a/dlls/user32/tests/menu.c
+++ b/dlls/user32/tests/menu.c
@@ -1041,7 +1041,7 @@ static void test_menu_bmp_and_string(void)
     mii.dwItemData = 0x81818181;
     got = GetMenuItemInfoA(hsysmenu, SC_RESTORE, FALSE, &mii);
     ok(got, "GetMenuItemInfo failed\n");
-    ok(mii.fType == MF_STRING, "expected MF_STRING, got %#x\n", mii.fType);
+    ok((mii.fType & ~(MFT_RIGHTJUSTIFY|MFT_RIGHTORDER)) == MFT_STRING, "expected MFT_STRING, got %#x\n", mii.fType);
     ok(mii.fState == MF_ENABLED, "expected MF_ENABLED, got %#x\n", mii.fState);
     ok(mii.wID == SC_RESTORE, "expected SC_RESTORE, got %#x\n", mii.wID);
     ok(mii.hSubMenu == 0, "expected 0, got %p\n", mii.hSubMenu);
@@ -1055,7 +1055,7 @@ static void test_menu_bmp_and_string(void)
     mii.hbmpItem = (HBITMAP)0x81818181;
     got = GetMenuItemInfoA(hsysmenu, SC_CLOSE, FALSE, &mii);
     ok(got, "GetMenuItemInfo failed\n");
-    ok(mii.fType == MF_STRING, "expected MF_STRING, got %#x\n", mii.fType);
+    ok((mii.fType & ~(MFT_RIGHTJUSTIFY|MFT_RIGHTORDER)) == MFT_STRING, "expected MFT_STRING, got %#x\n", mii.fType);
     ok(mii.fState == MF_ENABLED, "expected MF_ENABLED, got %#x\n", mii.fState);
     ok(mii.wID == SC_RESTORE, "expected SC_RESTORE, got %#x\n", mii.wID);
     ok(mii.hSubMenu == 0, "expected 0, got %p\n", mii.hSubMenu);
@@ -2731,7 +2731,8 @@ static void check_menu_items(HMENU hmenu, UINT checked_cmd, UINT checked_type,
 
         if (mii.hSubMenu)
         {
-            ok(mii.wID == (UINT_PTR)mii.hSubMenu, "id %u: wID should be equal to hSubMenu\n", checked_cmd);
+            ok(mii.wID == (UINT_PTR)mii.hSubMenu, "id %u: wID %x should be equal to hSubMenu %p\n",
+               checked_cmd, mii.wID, mii.hSubMenu);
             if (!GetMenuItemCount(mii.hSubMenu))
             {
                 ok(mii.fType == checked_type, "id %u: expected fType %04x, got %04x\n", checked_cmd, checked_type, mii.fType);
@@ -3872,6 +3873,12 @@ static void test_emptypopup(void)
     ok(ret, "DestroyMenu failed with error %d\n", GetLastError());
 }
 
+static HMENU get_bad_hmenu( UINT_PTR id )
+{
+    while (IsMenu( (HMENU)id )) id++;
+    return (HMENU)id;
+}
+
 static void test_AppendMenu(void)
 {
     static char string[] = "string";
@@ -3890,16 +3897,18 @@ static void test_AppendMenu(void)
 
     hmenu = CreateMenu();
     ok(hmenu != 0, "CreateMenu failed\n");
-    ret = AppendMenuA(hmenu, MF_POPUP, 202, "item 1");
+    hsubmenu = get_bad_hmenu( 202 );
+    ret = AppendMenuA(hmenu, MF_POPUP, (UINT_PTR)hsubmenu, "item 1");
     ok(ret, "AppendMenu failed\n");
-    check_menu_items(hmenu, 202, MF_STRING, 0);
+    check_menu_items(hmenu, (UINT_PTR)hsubmenu, MF_STRING, 0);
     DestroyMenu(hmenu);
 
     hmenu = CreateMenu();
     ok(hmenu != 0, "CreateMenu failed\n");
-    ret = AppendMenuA(hmenu, MF_OWNERDRAW | MF_POPUP, 203, "item 1");
+    hsubmenu = get_bad_hmenu( 203 );
+    ret = AppendMenuA(hmenu, MF_OWNERDRAW | MF_POPUP, (UINT_PTR)hsubmenu, "item 1");
     ok(ret, "AppendMenu failed\n");
-    check_menu_items(hmenu, 203, MF_OWNERDRAW, 0);
+    check_menu_items(hmenu, (UINT_PTR)hsubmenu, MF_OWNERDRAW, 0);
     DestroyMenu(hmenu);
 
     hmenu = CreateMenu();
@@ -3967,15 +3976,14 @@ static void test_AppendMenu(void)
     ret = AppendMenuA(hmenu, MF_STRING, 204, "item 1");
     ok(ret, "AppendMenu failed\n");
     check_menu_items(hmenu, 204, MF_STRING, 0);
-    ret = ModifyMenuA(hmenu, 0, MF_POPUP | MF_BYPOSITION, 205, "item 2");
+    hsubmenu = get_bad_hmenu( 205 );
+    ret = ModifyMenuA(hmenu, 0, MF_POPUP | MF_BYPOSITION, (UINT_PTR)hsubmenu, "item 2");
     ok(ret, "ModifyMenu failed\n");
-    check_menu_items(hmenu, 205, MF_STRING, 0);
+    check_menu_items(hmenu, (UINT_PTR)hsubmenu, MF_STRING, 0);
     memset(&mii, 0, sizeof(mii));
     mii.cbSize = sizeof(mii);
     mii.fMask = MIIM_SUBMENU;
-    mii.hSubMenu = (HMENU)204;
-    /* make sure the menu handle is truly invalid */
-    while (IsMenu( mii.hSubMenu )) mii.hSubMenu = (HMENU)((ULONG_PTR)mii.hSubMenu + 1);
+    mii.hSubMenu = get_bad_hmenu( 204 );
     ret = InsertMenuItemA(hmenu, 0, TRUE, &mii);
     ok(!ret, "InsertMenuItem should fail\n");
     ret = SetMenuItemInfoA(hmenu, 0, TRUE, &mii);




More information about the wine-cvs mailing list