package com.windowtester.test.eclipse; import static com.windowtester.runtime.swt.locator.eclipse.EclipseLocators.perspective; import static com.windowtester.runtime.swt.locator.eclipse.EclipseLocators.view; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.console.ConsolePlugin; import org.eclipse.ui.console.IConsole; import org.eclipse.ui.console.IConsoleManager; import org.eclipse.ui.console.MessageConsole; import org.eclipse.ui.console.MessageConsoleStream; import com.windowtester.runtime.IUIContext; import com.windowtester.runtime.condition.WidgetShowingCondition; import com.windowtester.runtime.locator.IWidgetLocator; import com.windowtester.runtime.locator.IWidgetReference; import com.windowtester.runtime.swt.UITestCaseSWT; import com.windowtester.runtime.swt.locator.SWTWidgetLocator; import com.windowtester.runtime.swt.locator.eclipse.ViewLocator; /******************************************************************************* * Copyright (c) 2012 Google, 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: * Google, Inc. - initial API and implementation *******************************************************************************/ public class ConsoleReadingSmokeTest extends UITestCaseSWT { private static final String CONSOLE_TEXT = "Hello console!"; /* (non-Javadoc) * @see junit.framework.TestCase#setUp() */ @Override protected void setUp() throws Exception { IUIContext ui = getUI(); ui.ensureThat(view("Welcome").isClosed()); ui.ensureThat(perspective("Java").isActive()); ui.ensureThat(view("Console").isShowing()); } public void testConsole() throws Exception { doWriteToConsole(); IUIContext ui = getUI(); IWidgetLocator consoleLocator = new SWTWidgetLocator(StyledText.class, new ViewLocator("org.eclipse.ui.console.ConsoleView")); ui.wait(new WidgetShowingCondition(ui, consoleLocator)); IWidgetReference consoleRef = (IWidgetReference) ui.find(consoleLocator); String text = getText((StyledText)consoleRef.getWidget()); assertEquals(CONSOLE_TEXT, text.trim()); } private String getText(final StyledText widget) { final String[] text = new String[1]; Display.getDefault().syncExec(new Runnable(){ public void run() { text[0] = widget.getText(); } }); return text[0]; } private void doWriteToConsole() { Display.getDefault().syncExec(new Runnable() { public void run() { try { writeToConsole(); } catch (PartInitException e) { e.printStackTrace(); fail(e.getMessage()); } } }); } private void writeToConsole() throws PartInitException { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); String id = "org.eclipse.ui.console.ConsoleView"; // IConsoleConstants.ID_CONSOLE_VIEW; page.showView(id); MessageConsole myConsole = findConsole(id); MessageConsoleStream out = myConsole.newMessageStream(); out.println(CONSOLE_TEXT); } private MessageConsole findConsole(String name) { ConsolePlugin plugin = ConsolePlugin.getDefault(); IConsoleManager conMan = plugin.getConsoleManager(); IConsole[] existing = conMan.getConsoles(); for (int i = 0; i < existing.length; i++) if (name.equals(existing[i].getName())) return (MessageConsole) existing[i]; //no console found, so create a new one MessageConsole myConsole = new MessageConsole(name, null); conMan.addConsoles(new IConsole[] { myConsole }); return myConsole; } }