package com.windowtester.samples.gef.tests;
import static com.windowtester.samples.eclipse.common.WorkBenchHelper.createSimpleProject;
import static com.windowtester.samples.eclipse.common.WorkBenchHelper.openView;
import static com.windowtester.samples.eclipse.common.WorkBenchHelper.View.JAVA_PACKAGEEXPLORER;
import com.windowtester.runtime.IUIContext;
import com.windowtester.runtime.WidgetSearchException;
import com.windowtester.runtime.draw2d.matchers.ByClassNameFigureMatcher;
import com.windowtester.runtime.gef.locator.FigureCanvasLocator;
import com.windowtester.runtime.gef.locator.FigureCanvasXYLocator;
import com.windowtester.runtime.gef.locator.FigureLocator;
import com.windowtester.runtime.locator.XYLocator;
import com.windowtester.runtime.swt.condition.shell.ShellDisposedCondition;
import com.windowtester.runtime.swt.locator.ButtonLocator;
import com.windowtester.runtime.swt.locator.TreeItemLocator;
import com.windowtester.runtime.swt.locator.eclipse.ContributedToolItemLocator;
import com.windowtester.samples.gef.common.AbstractSampleGEFTest;
import com.windowtester.samples.gef.common.provisional.LRLocator;
/**
*
* Sample Logic driving test.
*
* <p>
* Copyright (c) 2007, Instantiations, Inc.<br>
* All Rights Reserved
*
*/
public class SampleGEFLogicTest extends AbstractSampleGEFTest {
private static final String NEW_LOGIC_EXAMPLE_PATH = GEF_EXAMPLES_ROOT + "Logic Diagram";
private final String PROJECT_NAME = getClass().getName() + "Project";
private static class OrGateLocator extends FigureLocator {
public OrGateLocator() {
super(new ByClassNameFigureMatcher("org.eclipse.gef.examples.logicdesigner.figures.OrGateFigure"));
}
}
private static class XORGateLocator extends FigureLocator {
public XORGateLocator() {
super(new ByClassNameFigureMatcher("org.eclipse.gef.examples.logicdesigner.figures.XOrGateFigure"));
}
}
private static class AndGateLocator extends FigureLocator {
public AndGateLocator() {
super(new ByClassNameFigureMatcher("org.eclipse.gef.examples.logicdesigner.figures.AndGateFigure"));
}
}
private static class LEDFigureLocator extends FigureLocator {
public LEDFigureLocator() {
super(new ByClassNameFigureMatcher("org.eclipse.gef.examples.logicdesigner.figures.LEDFigure"));
}
}
private static class CircuitLocator extends FigureLocator {
public CircuitLocator() {
super(new ByClassNameFigureMatcher("org.eclipse.gef.examples.logicdesigner.figures.CircuitFigure"));
}
}
@Override
protected void setUp() throws Exception {
super.setUp();
createLogicDiagramExample();
}
protected void createLogicDiagramExample(String projectName) throws WidgetSearchException {
IUIContext ui = getUI();
openNewWizard(projectName);
ui.click(new TreeItemLocator(NEW_LOGIC_EXAMPLE_PATH));
ui.click(new ButtonLocator("&Next >"));
ui.click(new ButtonLocator("&Finish"));
ui.wait(new ShellDisposedCondition("New"));
}
protected void createLogicDiagramExample() throws WidgetSearchException {
createSimpleProject(getUI(), PROJECT_NAME);
openView(getUI(), JAVA_PACKAGEEXPLORER);
createLogicDiagramExample(PROJECT_NAME);
}
public void testLogic() throws Exception {
final IUIContext ui = getUI();
clickPalette("Components/Circuit");
ui.mouseMove(new XYLocator(new FigureCanvasLocator(), 100, 100));
ui.dragTo(new XYLocator(new FigureCanvasLocator(), 300, 250));
pauseForModel();
clickPalette("Components/And Gate");
ui.click(new FigureCanvasXYLocator(150, 150));
pauseForModel();
clickPalette("Components/Or Gate");
ui.click(new FigureCanvasXYLocator(200, 150));
pauseForModel();
clickPalette("Components/XOR Gate");
ui.click(new FigureCanvasXYLocator(250, 150));
pauseForModel();
clickPalette("Components/LED");
ui.click(new FigureCanvasXYLocator(125, 20));
pauseForModel();
clickPalette("Components/LED");
ui.click(new FigureCanvasXYLocator(225, 20));
pauseForModel();
clickPalette("Components/LED");
ui.click(new FigureCanvasXYLocator(100, 300));
pauseForModel();
clickPalette("Components/LED");
ui.click(new FigureCanvasXYLocator(175, 300));
pauseForModel();
clickPalette("Components/LED");
ui.click(new FigureCanvasXYLocator(250, 300));
pauseForModel();
// make some connections:
// bottom far left pin of the top left LED to the first pin on the circuit
clickPalette("Connection");
ui.click(new XYLocator(new LRLocator(new LEDFigureLocator(), 1),20,20));
ui.click(new XYLocator(new LRLocator(new CircuitLocator(), 0), -68, -75));
pauseForModel();
// bottom far left pin of the top right LED to the last pin on the circuit
clickPalette("Connection");
ui.click(new XYLocator(new LRLocator(new LEDFigureLocator(), 3),20,20));
ui.click(new XYLocator(new LRLocator(new CircuitLocator(), 0), 68, -75));
pauseForModel();
// first circuit pin to each of the gates
clickPalette("Connection");
ui.click(new XYLocator(new LRLocator(new CircuitLocator(), 0), -68, -75));
ui.click(new XYLocator(new LRLocator(new AndGateLocator(), 0), 100, 100));
pauseForModel();
clickPalette("Connection");
ui.click(new XYLocator(new LRLocator(new CircuitLocator(), 0), -68, -75));
ui.click(new XYLocator(new LRLocator(new AndGateLocator(), 0), 100, 100));
pauseForModel();
clickPalette("Connection");
ui.click(new XYLocator(new LRLocator(new CircuitLocator(), 0), -68, -75));
ui.click(new XYLocator(new LRLocator(new XORGateLocator(), 0), 100, 100));
pauseForModel();
// last top circuit pin to each of the gates
clickPalette("Connection");
ui.click(new XYLocator(new LRLocator(new CircuitLocator(), 0), 71, -75));
ui.click(new XYLocator(new LRLocator(new AndGateLocator(), 0), 100+10, 100));
pauseForModel();
clickPalette("Connection");
ui.click(new XYLocator(new LRLocator(new CircuitLocator(), 0), 71, -75));
ui.click(new XYLocator(new LRLocator(new OrGateLocator(), 0), 100+10, 100));
pauseForModel();
clickPalette("Connection");
ui.click(new XYLocator(new LRLocator(new CircuitLocator(), 0), 71, -75));
ui.click(new XYLocator(new LRLocator(new XORGateLocator(), 0), 100+10, 100));
pauseForModel();
// connect the
clickPalette("Connection");
ui.click(new XYLocator(new LRLocator(new AndGateLocator(), 0), 100, 100));
ui.click(new XYLocator(new LRLocator(new CircuitLocator(), 0), -68, 75));
pauseForModel();
clickPalette("Connection");
ui.click(new XYLocator(new LRLocator(new OrGateLocator(), 0), 100, 100));
ui.click(new XYLocator(new LRLocator(new CircuitLocator(), 0), -68+50, 75));
pauseForModel();
clickPalette("Connection");
ui.click(new XYLocator(new LRLocator(new XORGateLocator(), 0), 100, 100));
ui.click(new XYLocator(new LRLocator(new CircuitLocator(), 0), -68+100, 75));
pauseForModel();
// connect the bottom of the circuit to output LEDs
clickPalette("Connection");
ui.click(new XYLocator(new LRLocator(new CircuitLocator(), 0), -68, 75));
ui.click(new XYLocator(new LRLocator(new LEDFigureLocator(), 0), 20, -20));
pauseForModel();
clickPalette("Connection");
ui.click(new XYLocator(new LRLocator(new CircuitLocator(), 0), -68+50, 75));
ui.click(new XYLocator(new LRLocator(new LEDFigureLocator(), 2), 20, -20));
pauseForModel();
clickPalette("Connection");
ui.click(new XYLocator(new LRLocator(new CircuitLocator(), 0), -68+100, 75));
ui.click(new XYLocator(new LRLocator(new LEDFigureLocator(), 4), 20, -20));
pauseForModel();
clickPalette("Select");
ui.click(new LRLocator(new LEDFigureLocator(), 1));
ui.click(new ContributedToolItemLocator("Increment"));
pauseForModel();
ui.click(new LRLocator(new LEDFigureLocator(), 3));
ui.click(new ContributedToolItemLocator("Increment"));
pauseForModel();
ui.click(new LRLocator(new LEDFigureLocator(), 1));
ui.click(new ContributedToolItemLocator("Decrement"));
pauseForModel();
clickPalette("Marquee");
ui.mouseMove(new FigureCanvasXYLocator(5, 5));
ui.dragTo(new FigureCanvasXYLocator(500, 500));
pauseForModel();
clickPalette("Select");
ui.mouseMove(new FigureCanvasXYLocator(120, 120));
ui.dragTo(new FigureCanvasXYLocator(200, 200));
pauseForModel();
// pause to look at editor:
getUI().pause(3000);
save();
}
}