/*
* Copyright (c) 2016 Martin Davis.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Eclipse Distribution License v. 1.0 which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
*
* http://www.eclipse.org/org/documents/edl-v10.php.
*/
package test.jts.perf.operation.buffer;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.List;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.io.WKTFileReader;
import org.locationtech.jts.io.WKTReader;
import org.locationtech.jts.io.WKTWriter;
import org.locationtech.jts.operation.buffer.validate.BufferResultValidator;
import org.locationtech.jts.util.Stopwatch;
import junit.framework.TestCase;
/**
* @version 1.7
*/
public class FileBufferResultValidatorTest extends TestCase {
WKTReader rdr = new WKTReader();
public FileBufferResultValidatorTest(String name) {
super(name);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(FileBufferResultValidatorTest.class);
}
public void testAfrica() throws Exception
{
// runTest(TestFiles.getResourceFilePath("world.wkt"));
runTest("/testdata/africa.wkt");
}
void runTest(String resource)
throws Exception
{
InputStream is = this.getClass().getResourceAsStream(resource);
runTest(new WKTFileReader(new InputStreamReader(is), rdr));
}
void runTest(WKTFileReader fileRdr)
throws Exception
{
List polys = fileRdr.read();
runAll(polys, 0.01);
runAll(polys, 0.1);
runAll(polys, 1.0);
runAll(polys, 10.0);
runAll(polys, 100.0);
runAll(polys, 1000.0);
}
void runAll(List geoms, double dist)
{
Stopwatch sw = new Stopwatch();
//System.out.println("Geom count = " + geoms.size() + " distance = " + dist);
for (Iterator i = geoms.iterator(); i.hasNext(); ) {
Geometry g = (Geometry) i.next();
runBuffer(g, dist);
runBuffer(g.reverse(), dist);
//System.out.print(".");
}
//System.out.println(" " + sw.getTimeString());
}
void runBuffer(Geometry g, double dist)
{
Geometry buf = g.buffer(dist);
BufferResultValidator validator = new BufferResultValidator(g, dist, buf);
if (! validator.isValid()) {
String msg = validator.getErrorMessage();
System.out.println(msg);
System.out.println(WKTWriter.toPoint(validator.getErrorLocation()));
System.out.println(g);
}
assertTrue(validator.isValid());
}
}