/******************************************************************************* * Copyright (c) 2008 Ketan Padegaonkar and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Ketan Padegaonkar - initial API and implementation * Lorenzo Bettini - https://bugs.eclipse.org/bugs/show_bug.cgi?id=464687 *******************************************************************************/ package org.eclipse.swtbot.swt.finder.widgets; import static org.eclipse.swtbot.swt.finder.SWTBotTestCase.assertText; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertSame; import java.util.List; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.TableItem; import org.eclipse.swtbot.swt.finder.test.AbstractMenuExampleTest; import org.junit.Test; /** * @author Ketan Padegaonkar <KetanPadegaonkar [at] gmail [dot] com> * @version $Id$ */ public class SWTBotMenuTest extends AbstractMenuExampleTest { private static final String ABOUT_MENU_TEXT = "About Address Book..."; @Test public void findsMenus() throws Exception { assertText("&File", bot.menu("File").widget); } @Test public void findsSubMenus() throws Exception { SWTBotMenu menu = bot.menu("File").menu("Exit"); assertText("E&xit", menu.widget); } @Test public void findsMenuRecursive() throws Exception { // "About" is both a submenu of Help and the last menu in the bar // with recursion we find the one in Help assertSame(bot.menu(ABOUT_MENU_TEXT, true).widget, bot.menu("Help").menu(ABOUT_MENU_TEXT).widget); } @Test public void findsMenuNotRecursive() throws Exception { // "About" is both a submenu of Help and the last menu in the bar // without recursion we find the one in the bar assertSame(bot.menu(ABOUT_MENU_TEXT, false).widget, bot.menu(ABOUT_MENU_TEXT, 1).widget); } @Test public void clicksSubMenus() throws Exception { display.syncExec(new Runnable() { public void run() { addressBook .addAddressBook(new String[] { "last2", "first", "business phone", "home phone", "email@addres.ss", "fax number" }); addressBook .addAddressBook(new String[] { "last6", "first", "business phone", "home phone", "email@addres.ss", "fax number" }); addressBook .addAddressBook(new String[] { "last4", "first", "business phone", "home phone", "email@addres.ss", "fax number" }); } }); List<MenuItem> findControls = menuFinder.findMenus(anyMenuItem); MenuItem menuItem = findControls.get(14); assertText("Last Name", menuItem); bot.menu("Last Name").click(); final TableItem[][] treeItems = new TableItem[][] { null }; display.syncExec(new Runnable() { public void run() { treeItems[0] = addressBook.getTreeItems(); } }); TableItem[] tableItems = treeItems[0]; assertEquals(3, tableItems.length); assertText("last2", tableItems[0]); assertText("last4", tableItems[1]); assertText("last6", tableItems[2]); new SWTBotMenu(menuItem).click(); display.syncExec(new Runnable() { public void run() { treeItems[0] = addressBook.getTreeItems(); } }); assertEquals(3, tableItems.length); assertText("last6", tableItems[0]); assertText("last4", tableItems[1]); assertText("last2", tableItems[2]); } }