| /******************************************************************************* |
| * Copyright (c) 2015 Red Hat, Inc. |
| * 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: |
| * Red Hat Incorporated - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.cdt.debug.application.tests; |
| |
| import static org.eclipse.swtbot.swt.finder.matchers.WidgetMatcherFactory.withMnemonic; |
| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertNotNull; |
| |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.swt.widgets.MenuItem; |
| import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner; |
| import org.eclipse.swtbot.swt.finder.waits.Conditions; |
| import org.eclipse.swtbot.swt.finder.waits.WaitForObjectCondition; |
| import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu; |
| import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell; |
| import org.eclipse.swtbot.swt.finder.widgets.SWTBotText; |
| import org.eclipse.swtbot.swt.finder.widgets.TimeoutException; |
| import org.hamcrest.Matcher; |
| import org.junit.AfterClass; |
| import org.junit.BeforeClass; |
| import org.junit.Ignore; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| |
| @RunWith(SWTBotJunit4ClassRunner.class) |
| public class StandaloneTest1 extends StandaloneTest { |
| |
| private static final String PROJECT_NAME = "hello"; |
| |
| @BeforeClass |
| public static void beforeClass() throws Exception { |
| init(PROJECT_NAME); |
| } |
| |
| @Test |
| @Ignore |
| public void Test1() throws Exception { |
| // Verify the top-level menus are there |
| SWTBotMenu fileMenu = mainShell.menu().menu("File"); |
| assertNotNull(fileMenu); |
| SWTBotMenu editMenu = mainShell.menu().menu("Edit"); |
| assertNotNull(editMenu); |
| SWTBotMenu searchMenu = mainShell.menu().menu("Search"); |
| assertNotNull(searchMenu); |
| SWTBotMenu runMenu = mainShell.menu().menu("Run"); |
| assertNotNull(runMenu); |
| SWTBotMenu windowMenu = mainShell.menu().menu("Window"); |
| assertNotNull(windowMenu); |
| SWTBotMenu helpMenu = mainShell.menu().menu("Help"); |
| assertNotNull(helpMenu); |
| |
| // Verify other common top-level menus are not there |
| assertMenuAbsent(mainShell, "Navigate"); |
| assertMenuAbsent(mainShell, "Refactor"); |
| assertMenuAbsent(mainShell, "Source"); |
| assertMenuAbsent(mainShell, "Target"); |
| assertMenuAbsent(mainShell, "Project"); |
| |
| SWTBotMenu attachExecutableDialog = fileMenu.menu("Debug Attached Executable..."); |
| assertNotNull(attachExecutableDialog); |
| SWTBotMenu coreFileDialog = fileMenu.menu("Debug Core File..."); |
| assertNotNull(coreFileDialog); |
| SWTBotMenu newExecutableDialog = fileMenu.menu("Debug New Executable..."); |
| assertNotNull(newExecutableDialog); |
| newExecutableDialog.click(); |
| SWTBotShell shell = bot.shell("Debug New Executable"); |
| shell.setFocus(); |
| // Try and have two open debug sessions on same binary |
| IPath projectPath = Utilities.getDefault().getProjectPath(PROJECT_NAME).append("a.out"); |
| shell.bot().textWithLabel("Binary: ").setText(projectPath.toOSString()); |
| shell.bot().textWithLabel("Arguments: ").setText("1 2 3"); |
| bot.sleep(2000); |
| |
| shell.bot().button("OK").click(); |
| |
| bot.sleep(1000); |
| |
| coreFileDialog.click(); |
| |
| shell = bot.shell("Debug Core File"); |
| shell.setFocus(); |
| |
| SWTBotText text = shell.bot().textWithLabel("Binary: "); |
| assertNotNull(text); |
| |
| SWTBotText corefile = shell.bot().textWithLabel("Core File Path:"); |
| assertNotNull(corefile); |
| |
| bot.sleep(2000); |
| |
| shell.bot().button("Cancel").click(); |
| |
| bot.sleep(2000); |
| |
| SWTBotMenu exitMenu = fileMenu.menu("Exit"); |
| assertNotNull(exitMenu); |
| exitMenu.click(); |
| } |
| |
| @AfterClass |
| public static void afterClass() { |
| bot.sleep(1000); |
| } |
| |
| private void assertMenuAbsent(SWTBotShell shell, String menuText) { |
| boolean found = false; |
| try { |
| final Matcher<MenuItem> matcher = withMnemonic(menuText); |
| WaitForObjectCondition<MenuItem> waitForMenuItem = Conditions.waitForMenuItem(shell.menu(), matcher, false, 0); |
| bot.waitUntil(waitForMenuItem, 50); |
| found = true; |
| } catch (TimeoutException e) { |
| // correct |
| } |
| assertFalse(found); |
| } |
| } |