package com.windowtester.test.gef.tests.codegen;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
import com.windowtester.codegen.util.IBuildPathUpdater;
import com.windowtester.internal.runtime.locator.IdentifierAdapter;
import com.windowtester.recorder.event.ISemanticEvent;
import com.windowtester.recorder.event.user.SemanticWidgetSelectionEvent;
import com.windowtester.recorder.event.user.UISemanticEvent.EventInfo;
import com.windowtester.runtime.gef.Position;
import com.windowtester.runtime.gef.internal.locator.provisional.api.AnchorLocator;
import com.windowtester.runtime.gef.locator.FigureCanvasLocator;
import com.windowtester.runtime.gef.locator.FigureCanvasXYLocator;
import com.windowtester.runtime.gef.locator.FigureClassLocator;
import com.windowtester.runtime.gef.locator.PaletteItemLocator;
import com.windowtester.runtime.locator.ILocator;
import com.windowtester.runtime.locator.XYLocator;
import com.windowtester.swt.gef.codegen.GEFCodegenerator;
import junit.framework.TestCase;
/**
* <p>
* Copyright (c) 2008, Instantiations, Inc.<br>
* All Rights Reserved
*
* @author Phil Quitslund
*
*/
public class GEFCodegenClassPathAdvisorTest extends TestCase {
private boolean updated;
private final IBuildPathUpdater updater = new IBuildPathUpdater() {
public void addPluginDependency(String pluginId) throws CoreException {
updated = true;
}
};
private final GEFCodegenerator cg = new GEFCodegenerator();
public void testFigureCanvas() throws Exception {
assertUpdates(new FigureCanvasLocator("foo"));
}
public void testFigureCanvasXY() throws Exception {
assertUpdates(new FigureCanvasXYLocator(1,1));
}
public void testPaletteItem() throws Exception {
assertUpdates(new PaletteItemLocator("foo"));
}
public void testAnchor() throws Exception {
assertUpdates(new AnchorLocator(Position.BOTTOM, new FigureClassLocator("foo")));
}
public void testFigureClass() throws Exception {
assertUpdates(new FigureClassLocator("foo"));
}
public void testXYed() throws Exception {
assertUpdates(new XYLocator(new FigureClassLocator("foo"), 3, 4));
}
private void assertUpdates(ILocator locator) throws Exception {
addDepFor(locator);
assertTrue(updated);
}
private void addDepFor(ILocator locator) throws Exception {
List<ISemanticEvent> events = new ArrayList<ISemanticEvent>();
events.add(fakeSelection(locator));
cg.addPluginDependencies(events, updater);
}
private SemanticWidgetSelectionEvent fakeSelection(ILocator locator) {
EventInfo info = new EventInfo();
info.hierarchyInfo = new IdentifierAdapter(locator);
return new SemanticWidgetSelectionEvent(info);
}
}