package com.windowtester.test.codegen; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.widgets.TableItem; import com.windowtester.codegen.assembly.unit.MethodUnit; import com.windowtester.codegen.generator.setup.ISetupHandler; import com.windowtester.codegen.generator.setup.SetupHandlerSet; import com.windowtester.codegen.generator.setup.WelcomePageHandler; import com.windowtester.codegen.generator.setup.WorkbenchFocusHandler; import com.windowtester.codegen.generator.setup.WorkbenchMaximizedHandler; import com.windowtester.recorder.event.user.SemanticWidgetClosedEvent; import com.windowtester.recorder.event.user.SemanticWidgetSelectionEvent; import com.windowtester.runtime.swt.locator.CTabItemLocator; import com.windowtester.runtime.swt.locator.TableItemLocator; import com.windowtester.runtime.swt.locator.eclipse.EclipseLocators; import com.windowtester.runtime.swt.locator.eclipse.ViewLocator; import com.windowtester.runtime.swt.locator.eclipse.WorkbenchLocator; /******************************************************************************* * 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 RCPSetupCodegenTest extends BaseSWTAPICodeBlockCodegenTest { /* (non-Javadoc) * @see com.windowtester.test.codegen.BaseSWTAPICodeBlockCodegenTest#getHandlers() */ @Override protected SetupHandlerSet getHandlers() { return SetupHandlerSet.forHandler(new WelcomePageHandler()); } public void testWelcomePageHandler() throws Exception { ISetupHandler wp = new WelcomePageHandler(); assertEquals("ui.ensureThat(ViewLocator.forName(\"Welcome\").isClosed());", wp.getBody()); assertEquals(ViewLocator.class.getName(), wp.getImport()); } public void testWorkbenchFocusHandlerBodyContents() throws Exception { ISetupHandler wp = new WorkbenchFocusHandler(); assertEquals("ui.ensureThat(new WorkbenchLocator().hasFocus());", wp.getBody()); assertEquals(WorkbenchLocator.class.getName(), wp.getImport()); } public void testWorkbenchFocusHandlerStaticBodyContents() throws Exception { ISetupHandler wp = new WorkbenchFocusHandler(); assertEquals("ui.ensureThat(workbench().hasFocus());", wp.getStaticBody()); assertEquals(EclipseLocators.class.getName() + ".workbench", wp.getStaticImport()); } public void testWorkbenchMaximizedHandlerBodyContents() throws Exception { ISetupHandler wp = new WorkbenchMaximizedHandler(); assertEquals("ui.ensureThat(new WorkbenchLocator().isMaximized());", wp.getBody()); assertEquals(WorkbenchLocator.class.getName(), wp.getImport()); } public void testWorkbenchMaximizedHandlerStaticBodyContents() throws Exception { ISetupHandler wp = new WorkbenchMaximizedHandler(); assertEquals("ui.ensureThat(workbench().isMaximized());", wp.getStaticBody()); assertEquals(EclipseLocators.class.getName() + ".workbench", wp.getStaticImport()); } public void testWelcomePageHandlerAppliesTo() throws Exception { WelcomePageHandler wp = new WelcomePageHandler(); SemanticWidgetSelectionEvent select = CodeGenFixture.mockSelect(CTabItem.class, new CTabItemLocator("Some View")); assertTrue(wp.appliesTo(stream(select))); } public void testBasicSetupEndToEndBody() throws Exception { SemanticWidgetSelectionEvent select = CodeGenFixture.mockSelect(TableItem.class, new TableItemLocator("item")); String src = generate(select); System.out.println(src); assertSetupHandlesWelcome(); } private void assertSetupHandlesWelcome() { MethodUnit setup = getSetupMethod(); assertNotNull(setup); assertEquals("super.setUp();" + NEW_LINE + "IUIContext ui = getUI();" + NEW_LINE + "ui.ensureThat(view(\"Welcome\").isClosed());", setup.getMethodBodyContents()); } public void testBasicSetupEndToEndImport() throws Exception { SemanticWidgetSelectionEvent select = CodeGenFixture.mockSelect(TableItem.class, new TableItemLocator("item")); String src = generate(select); System.out.println(src); assertImportsContainAsString("import static com.windowtester.runtime.swt.locator.eclipse.EclipseLocators.view;"); } public void testExplicitWelcomeCloseIsConsumed() throws Exception { SemanticWidgetClosedEvent select = CodeGenFixture.mockClose(CTabItem.class, new CTabItemLocator("Welcome")); String src = generate(select); System.out.println(src); assertSetupHandlesWelcome(); assertTestDoesNotHandleWelcome(); } private void assertTestDoesNotHandleWelcome() { MethodUnit test = getTestMethod(); assertNull(test); } }