Menus [6/6]: New tests
Michael Kaufmann
hallo at michael-kaufmann.ch
Wed Apr 19 14:56:39 CDT 2006
Changelog:
- Tests for SetMenuItemInfo and ModifyMenu: Test whether all allowed
flags are accepted, test that only the low word of a bitmap set with
SetMenuItemInfo and the MIIM_TYPE mask is taken
- Test that shows that ModifyMenu accepts MF_HILITE but not MF_DEFAULT
- Test for HiliteMenuItem
-------------- next part --------------
Index: dlls/user/tests/menu.c
===================================================================
RCS file: /home/wine/wine/dlls/user/tests/menu.c,v
retrieving revision 1.20
diff -u -r1.20 menu.c
--- dlls/user/tests/menu.c 19 Apr 2006 11:04:53 -0000 1.20
+++ dlls/user/tests/menu.c 19 Apr 2006 19:14:39 -0000
@@ -955,7 +955,7 @@
{, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, },
init, OK, ER )
TMII_DONE
-
+ /* Separator */
TMII_INSMI( {, S, MIIM_TYPE, MFT_SEPARATOR, 0, 0, 0, 0, 0, 0, txt, 0, 0, }, OK)
TMII_GMII ( {, S, MIIM_TYPE, -9, -9, -9, -9, -9, -9, -9, string, 80, -9, },
{, S, MIIM_TYPE, MFT_SEPARATOR, -9, -9, 0, -9, -9, -9, 0, 0, 0, },
@@ -1146,6 +1146,51 @@
{, S, MIIM_BITMAP|MIIM_FTYPE, MFT_SEPARATOR, -9, -9, 0, -9, -9, -9, string, 80, hbm, },
init, OK, ER )
TMII_DONE
+ /* Bitmaps inserted with MIIM_TYPE and MFT_BITMAP:
+ Only the low word of the dwTypeData is used.
+ Use a magic bitmap here (Word 95 uses this to create its MDI menu buttons) */
+ TMII_INSMI( {, S, MIIM_TYPE, MFT_BITMAP | MFT_RIGHTJUSTIFY, -1, -1, -1, -1, -1, -1, MAKELONG(HBMMENU_MBAR_CLOSE, 0x1234), -1, -1, }, OK)
+ TMII_GMII ( {, S, MIIM_TYPE, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, },
+ {, S, MIIM_TYPE, MFT_BITMAP | MFT_RIGHTJUSTIFY, -9, -9, 0, -9, -9, -9, HBMMENU_MBAR_CLOSE, 0, HBMMENU_MBAR_CLOSE, },
+ empty, OK, OK )
+ TMII_DONE
+ /* Type flags */
+ TMII_INSMI( {, S, MIIM_TYPE, MFT_BITMAP | MFT_MENUBARBREAK | MFT_RADIOCHECK | MFT_RIGHTJUSTIFY | MFT_RIGHTORDER, -1, -1, -1, -1, -1, -1, hbm, -1, -1, }, OK)
+ TMII_GMII ( {, S, MIIM_TYPE, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, },
+ {, S, MIIM_TYPE, MFT_BITMAP | MFT_MENUBARBREAK | MFT_RADIOCHECK | MFT_RIGHTJUSTIFY | MFT_RIGHTORDER, -9, -9, 0, -9, -9, -9, hbm, 0, hbm, },
+ empty, OK, OK )
+ TMII_DONE
+ /* State flags */
+ TMII_INSMI( {, S, MIIM_TYPE, MFT_BITMAP, -1, -1, -1, -1, -1, -1, hbm, -1, -1, }, OK)
+ TMII_SMII( {, S, MIIM_STATE, -1, MFS_CHECKED | MFS_DEFAULT | MFS_GRAYED | MFS_HILITE, -1, -1, -1, -1, -1, -1, -1, -1, }, OK)
+ TMII_GMII ( {, S, MIIM_STATE, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, },
+ {, S, MIIM_STATE, -9, MFS_CHECKED | MFS_DEFAULT | MFS_GRAYED | MFS_HILITE, -9, 0, -9, -9, -9, -9, -9, -9, },
+ empty, OK, OK )
+ TMII_DONE
+ /* The style MFT_RADIOCHECK cannot be set with MIIM_CHECKMARKS only */
+ TMII_INSMI( {, S, MIIM_TYPE, MFT_BITMAP, -1, -1, -1, -1, -1, -1, hbm, -1, -1, }, OK)
+ TMII_SMII( {, S, MIIM_CHECKMARKS, MFT_RADIOCHECK, -1, -1, -1, hbm, hbm, -1, -1, -1, -1, }, OK)
+ TMII_GMII ( {, S, MIIM_CHECKMARKS | MIIM_TYPE, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, },
+ {, S, MIIM_CHECKMARKS | MIIM_TYPE, MFT_BITMAP, -9, -9, 0, hbm, hbm, -9, hbm, 0, hbm, },
+ empty, OK, OK )
+ TMII_DONE
+ /* MFT_BITMAP is added automatically by GetMenuItemInfo() for MIIM_TYPE */
+ TMII_INSMI( {, S, MIIM_TYPE, MFT_BITMAP, -1, -1, -1, -1, -1, -1, hbm, -1, -1, }, OK)
+ TMII_SMII( {, S, MIIM_FTYPE, MFT_OWNERDRAW, -1, -1, -1, -1, -1, -1, 0x1234, -1, -1, }, OK)
+ TMII_GMII ( {, S, MIIM_FTYPE, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, },
+ {, S, MIIM_FTYPE, MFT_OWNERDRAW, -9, -9, 0, -9, -9, -9, -9, -9, -9, },
+ empty, OK, OK )
+ TMII_GMII ( {, S, MIIM_TYPE, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, },
+ {, S, MIIM_TYPE, MFT_BITMAP | MFT_OWNERDRAW, -9, -9, 0, -9, -9, -9, hbm, 0, hbm, },
+ empty, OK, OK )
+ TMII_GMII ( {, S, MIIM_FTYPE, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, },
+ {, S, MIIM_FTYPE, MFT_OWNERDRAW, -9, -9, 0, -9, -9, -9, -9, -9, -9, },
+ empty, OK, OK )
+ TMII_SMII( {, S, MIIM_BITMAP, -1, -1, -1, -1, -1, -1, -1, -1, -1, NULL, }, OK)
+ TMII_GMII ( {, S, MIIM_TYPE, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, },
+ {, S, MIIM_TYPE, MFT_OWNERDRAW, -9, -9, 0, -9, -9, -9, NULL, 0, NULL, },
+ empty, OK, OK )
+ TMII_DONE
} while( !(ansi = !ansi) );
DeleteObject( hbm);
@@ -1475,6 +1520,65 @@
DestroyMenu(hmenuSub);
}
+void test_menu_flags( void )
+{
+ HMENU hMenu, hPopupMenu;
+
+ hMenu = CreateMenu();
+ hPopupMenu = CreatePopupMenu();
+
+ AppendMenu(hMenu, MF_POPUP | MF_STRING, (UINT)hPopupMenu, "Popup");
+
+ AppendMenu(hPopupMenu, MF_STRING | MF_HILITE | MF_DEFAULT, 101, "Item 1");
+ InsertMenu(hPopupMenu, 1, MF_BYPOSITION | MF_STRING | MF_HILITE | MF_DEFAULT, 102, "Item 2");
+ AppendMenu(hPopupMenu, MF_STRING, 103, "Item 3");
+ ModifyMenu(hPopupMenu, 2, MF_BYPOSITION | MF_STRING | MF_HILITE | MF_DEFAULT, 103, "Item 3");
+
+ ok(GetMenuState(hPopupMenu, 0, MF_BYPOSITION) & MF_HILITE,
+ "AppendMenu should accept MF_HILITE\n");
+ ok(GetMenuState(hPopupMenu, 1, MF_BYPOSITION) & MF_HILITE,
+ "InsertMenu should accept MF_HILITE\n");
+ ok(GetMenuState(hPopupMenu, 2, MF_BYPOSITION) & MF_HILITE,
+ "ModifyMenu should accept MF_HILITE\n");
+
+ ok(!(GetMenuState(hPopupMenu, 0, MF_BYPOSITION) & MF_DEFAULT),
+ "AppendMenu must not accept MF_DEFAULT\n");
+ ok(!(GetMenuState(hPopupMenu, 1, MF_BYPOSITION) & MF_DEFAULT),
+ "InsertMenu must not accept MF_DEFAULT\n");
+ ok(!(GetMenuState(hPopupMenu, 2, MF_BYPOSITION) & MF_DEFAULT),
+ "ModifyMenu must not accept MF_DEFAULT\n");
+
+ DestroyMenu(hMenu);
+}
+
+void test_menu_hilitemenuitem( void )
+{
+ HMENU hMenu, hPopupMenu;
+
+ hMenu = CreateMenu();
+ hPopupMenu = CreatePopupMenu();
+
+ AppendMenu(hMenu, MF_POPUP | MF_STRING, (UINT)hPopupMenu, "Popup");
+
+ AppendMenu(hPopupMenu, MF_STRING, 101, "Item 1");
+ AppendMenu(hPopupMenu, MF_STRING, 102, "Item 2");
+ AppendMenu(hPopupMenu, MF_STRING, 103, "Item 3");
+
+ HiliteMenuItem(NULL, hPopupMenu, 0, MF_HILITE);
+ HiliteMenuItem(NULL, hPopupMenu, 1, MF_HILITE);
+ HiliteMenuItem(NULL, hPopupMenu, 2, MF_HILITE);
+ HiliteMenuItem(NULL, hPopupMenu, 1, MF_UNHILITE);
+
+ ok(GetMenuState(hPopupMenu, 0, MF_BYPOSITION) & MF_HILITE,
+ "HiliteMenuItem: Item 1 is not hilited\n");
+ ok(!(GetMenuState(hPopupMenu, 1, MF_BYPOSITION) & MF_HILITE),
+ "HiliteMenuItem: Item 2 is hilited\n");
+ ok(GetMenuState(hPopupMenu, 2, MF_BYPOSITION) & MF_HILITE,
+ "HiliteMenuItem: Item 3 is not hilited\n");
+
+ DestroyMenu(hMenu);
+}
+
START_TEST(menu)
{
pSetMenuInfo =
@@ -1490,4 +1594,6 @@
test_menu_iteminfo();
test_menu_search_bycommand();
test_menu_bmp_and_string();
+ test_menu_flags();
+ test_menu_hilitemenuitem();
}
More information about the wine-patches
mailing list