package com.windowtester.runtime.gef.internal.hierarchy;
import static com.windowtester.runtime.gef.test.builder.FigureBuilder.addChild;
import static com.windowtester.runtime.gef.test.builder.FigureBuilder.figure;
import java.util.Comparator;
import junit.framework.TestCase;
import org.eclipse.draw2d.IFigure;
import com.instantiations.test.util.TestCollection;
import com.windowtester.runtime.gef.IFigureReference;
import com.windowtester.runtime.gef.test.builder.TestableFigureInfo;
/**
* <p>
* Copyright (c) 2007, Instantiations, Inc.<br>
* All Rights Reserved
*
* @author Phil Quitslund
*
*/
public class FigureInfoBuilderTest extends TestCase {
private final class FigureToInfoComparator implements Comparator<Object> {
public int compare(Object o1, Object o2) {
if (o1 instanceof IFigureReference)
return compare((IFigureReference)o1, o2);
if (o2 instanceof IFigureReference)
return compare ((IFigureReference)o2, o1);
return -1;
}
private int compare(IFigureReference o1, Object o2) {
if (o2 instanceof IFigureReference)
return o1.equals(o2) ? 0 : -1;
if (o2 instanceof IFigure)
return o1.getFigure() == o2 ? 0 : -1;
return -1;
}
}
public void testGetChildrenEmptyButNotNull() {
IFigureReference info = build(figure());
IFigureReference[] children = info.getChildren();
assertNotNull(children);
assertEquals(0, children.length);
}
public void testBuildSimple() {
IFigure f1 = figure();
IFigure[] children = new IFigure[]{figure(), figure(), figure()};
addChild(f1, children);
IFigureReference info = build(f1);
assertSame(f1, info);
assertContainsOnly(children, info.getChildren());
}
public void testBuildNested() {
IFigure f1 = figure();
IFigure f2 = figure();
IFigure f3 = figure();
addChild(f2, f3);
addChild(f1, f2);
IFigureReference info = build(f1);
assertSame(f1, info);
assertSame(f2, info.getChildren()[0]);
assertSame(f3, info.getChildren()[0].getChildren()[0]);
}
public void testGetConnections() {
fail("unimplemented");
}
private void assertContainsOnly(IFigure[] expected, IFigureReference[] actual) {
TestCollection.assertContainsOnly(expected, actual, new FigureToInfoComparator());
}
private void assertSame(IFigure figure, IFigureReference info) {
assertEquals(figure, info.getFigure());
}
private IFigureReference build(IFigure f1) {
return new TestableFigureInfo(f1);
}
}