/*
* Copyright (c) 2016 Vivid Solutions.
*
* 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 org.locationtech.jts.geom;
import org.locationtech.jts.io.WKTReader;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
/**
* Test for com.vividsolutions.jts.geom.impl.LineStringImpl.
*
* @version 1.7
*/
public class LineStringImplTest extends TestCase {
PrecisionModel precisionModel = new PrecisionModel(1000);
GeometryFactory geometryFactory = new GeometryFactory(precisionModel, 0);
WKTReader reader = new WKTReader(geometryFactory);
public static void main(String args[]) {
TestRunner.run(suite());
}
public LineStringImplTest(String name) { super(name); }
public static Test suite() { return new TestSuite(LineStringImplTest.class); }
public void testIsSimple() throws Exception {
LineString l1 = (LineString) reader.read("LINESTRING (0 0, 10 10, 10 0, 0 10, 0 0)");
assertTrue(! l1.isSimple());
LineString l2 = (LineString) reader.read("LINESTRING (0 0, 10 10, 10 0, 0 10)");
assertTrue(! l2.isSimple());
}
public void testIsCoordinate() throws Exception {
LineString l = (LineString) reader.read("LINESTRING (0 0, 10 10, 10 0)");
assertTrue(l.isCoordinate(new Coordinate(0, 0)));
assertTrue(! l.isCoordinate(new Coordinate(5, 0)));
}
public void testUnclosedLinearRing() {
try {
geometryFactory.createLinearRing(new Coordinate[]{
new Coordinate(0, 0), new Coordinate(1, 0), new Coordinate(1, 1), new Coordinate(2, 1)});
assertTrue(false);
}
catch (Exception e) {
assertTrue(e instanceof IllegalArgumentException);
}
}
public void testEquals1() throws Exception {
LineString l1 = (LineString) reader.read("LINESTRING(1.111 2.222, 3.333 4.444)");
LineString l2 = (LineString) reader.read("LINESTRING(1.111 2.222, 3.333 4.444)");
assertTrue(l1.equals(l2));
}
public void testEquals2() throws Exception {
LineString l1 = (LineString) reader.read("LINESTRING(1.111 2.222, 3.333 4.444)");
LineString l2 = (LineString) reader.read("LINESTRING(3.333 4.444, 1.111 2.222)");
assertTrue(l1.equals(l2));
}
public void testEquals3() throws Exception {
LineString l1 = (LineString) reader.read("LINESTRING(1.111 2.222, 3.333 4.444)");
LineString l2 = (LineString) reader.read("LINESTRING(3.333 4.443, 1.111 2.222)");
assertTrue(! l1.equals(l2));
}
public void testEquals4() throws Exception {
LineString l1 = (LineString) reader.read("LINESTRING(1.111 2.222, 3.333 4.444)");
LineString l2 = (LineString) reader.read("LINESTRING(3.333 4.4445, 1.111 2.222)");
assertTrue(! l1.equals(l2));
}
public void testEquals5() throws Exception {
LineString l1 = (LineString) reader.read("LINESTRING(1.111 2.222, 3.333 4.444)");
LineString l2 = (LineString) reader.read("LINESTRING(3.333 4.4446, 1.111 2.222)");
assertTrue(! l1.equals(l2));
}
public void testEquals6() throws Exception {
LineString l1 = (LineString) reader.read("LINESTRING(1.111 2.222, 3.333 4.444, 5.555 6.666)");
LineString l2 = (LineString) reader.read("LINESTRING(1.111 2.222, 3.333 4.444, 5.555 6.666)");
assertTrue(l1.equals(l2));
}
public void testEquals7() throws Exception {
LineString l1 = (LineString) reader.read("LINESTRING(1.111 2.222, 5.555 6.666, 3.333 4.444)");
LineString l2 = (LineString) reader.read("LINESTRING(1.111 2.222, 3.333 4.444, 5.555 6.666)");
assertTrue(!l1.equals(l2));
}
public void testGetCoordinates() throws Exception {
LineString l = (LineString) reader.read("LINESTRING(1.111 2.222, 5.555 6.666, 3.333 4.444)");
Coordinate[] coordinates = l.getCoordinates();
assertEquals(new Coordinate(5.555, 6.666), coordinates[1]);
}
public void testIsClosed() throws Exception {
LineString l = (LineString) reader.read("LINESTRING EMPTY");
assertTrue(l.isEmpty());
assertTrue(! l.isClosed());
LinearRing r = geometryFactory.createLinearRing((CoordinateSequence)null);
assertTrue(r.isEmpty());
assertTrue(r.isClosed());
MultiLineString m = geometryFactory.createMultiLineString(
new LineString[] {l, r});
assertTrue(! m.isClosed());
MultiLineString m2 = geometryFactory.createMultiLineString(
new LineString[] {r});
assertTrue(! m2.isClosed());
}
public void testGetGeometryType() throws Exception {
LineString l = (LineString) reader.read("LINESTRING EMPTY");
assertEquals("LineString", l.getGeometryType());
}
public void testEquals8() throws Exception {
WKTReader reader = new WKTReader(new GeometryFactory(new PrecisionModel(1000), 0));
MultiLineString l1 = (MultiLineString) reader.read("MULTILINESTRING((1732328800 519578384, 1732026179 519976285, 1731627364 519674014, 1731929984 519276112, 1732328800 519578384))");
MultiLineString l2 = (MultiLineString) reader.read("MULTILINESTRING((1731627364 519674014, 1731929984 519276112, 1732328800 519578384, 1732026179 519976285, 1731627364 519674014))");
assertTrue(l1.equals(l2));
}
public void testEquals9() throws Exception {
WKTReader reader = new WKTReader(new GeometryFactory(new PrecisionModel(1), 0));
MultiLineString l1 = (MultiLineString) reader.read("MULTILINESTRING((1732328800 519578384, 1732026179 519976285, 1731627364 519674014, 1731929984 519276112, 1732328800 519578384))");
MultiLineString l2 = (MultiLineString) reader.read("MULTILINESTRING((1731627364 519674014, 1731929984 519276112, 1732328800 519578384, 1732026179 519976285, 1731627364 519674014))");
assertTrue(l1.equals(l2));
}
public void testEquals10() throws Exception {
WKTReader reader = new WKTReader(new GeometryFactory(new PrecisionModel(1), 0));
Geometry l1 = reader.read("POLYGON((1732328800 519578384, 1732026179 519976285, 1731627364 519674014, 1731929984 519276112, 1732328800 519578384))");
Geometry l2 = reader.read("POLYGON((1731627364 519674014, 1731929984 519276112, 1732328800 519578384, 1732026179 519976285, 1731627364 519674014))");
l1.normalize();
l2.normalize();
assertTrue(l1.equalsExact(l2));
}
public void testFiveZeros() {
LineString ls = new GeometryFactory().createLineString(new Coordinate[]{
new Coordinate(0, 0),
new Coordinate(0, 0),
new Coordinate(0, 0),
new Coordinate(0, 0),
new Coordinate(0, 0)});
assertTrue(ls.isClosed());
}
public void testLinearRingConstructor() throws Exception {
try {
LinearRing ring =
new GeometryFactory().createLinearRing(
new Coordinate[] {
new Coordinate(0, 0),
new Coordinate(10, 10),
new Coordinate(0, 0)});
assertTrue(false);
} catch (IllegalArgumentException e) {
assertTrue(true);
}
}
}