package oripa.paint.creasepattern;
import java.util.Collection;
import javax.vecmath.Vector2d;
import junit.framework.TestCase;
import org.junit.Test;
import oripa.paint.creasepattern.VerticesManager;
import oripa.value.OriPoint;
public class VerticesManagerTest extends TestCase{
// not to be here
// Doc doc = new Doc(paperSize);
// double interval = doc.getCreasePattern().getVerticesManager().interval;
//
// @Test
// protected void setUp() throws Exception {
// /**
// * 0__________
// * _|_|______
// * _|_|______
// * | |
// * | |
// *
// */
// // horizontal line
// doc.addLine(new OriLine(0, 0, paperSize, 0, OriLine.TYPE_RIDGE));
// doc.addLine(new OriLine(0, interval, paperSize, interval, OriLine.TYPE_RIDGE));
// doc.addLine(new OriLine(0, interval * 2, paperSize, interval * 2, OriLine.TYPE_RIDGE));
//
// // vertical
// doc.addLine(new OriLine(interval, 0, interval, paperSize, OriLine.TYPE_RIDGE));
// doc.addLine(new OriLine(interval * 2, 0, interval * 2, paperSize, OriLine.TYPE_RIDGE));
//
//
// ORIPA.doc = doc;
//
// }
//
// @Test
// public void testNearest(){
// PaintContext context = PaintContext.getInstance();
//
// Point.Double mousePoint = new Point.Double(0, 0);
// context.setLogicalMousePoint(mousePoint);
//
// VerticesManager manager = doc.getCreasePattern().getVerticesManager();
//
// final double distance = 10;
// Collection<Collection<Vector2d>> area = manager.getArea(
// mousePoint.x, mousePoint.y, distance);
//
//
// Vector2d mouseVector = new Vector2d(mousePoint.x, mousePoint.y);
// assertEquals(mouseVector,
// NearestVertexFinder.findAround(context, distance).point);
// }
//
@Test
public void testAddVertex() {
final double paperSize = 400;
VerticesManager manager = new VerticesManager(paperSize);
double interval = manager.interval;
addAndCheckContains(manager, new Vector2d(0, 0));
addAndCheckContains(manager, new Vector2d(interval, 0));
addAndCheckContains(manager, new Vector2d(interval, interval));
}
private boolean managerContains(VerticesManager manager, Vector2d vertex) {
Collection<Vector2d> vertices;
vertices = manager.getAround(vertex);
return vertices.contains(vertex);
}
private void addAndCheckContains(VerticesManager manager, Vector2d target){
manager.add(target);
Collection<Vector2d> vertices;
vertices = manager.getAround(target);
System.out.println("target: " + target);
for(Vector2d v: vertices){
System.out.println(v);
}
assertTrue(managerContains(manager, target));
}
@Test
public void testDuplicationManagement() {
final double paperSize = 400;
VerticesManager manager = new VerticesManager(paperSize);
OriPoint p = new OriPoint(10,10);
manager.add(p);
manager.add(p);
manager.remove(p);
assertTrue(managerContains(manager, p));
manager.remove(p);
assertFalse(managerContains(manager, p));
}
}