/******************************************************************************* * Copyright (c) 2015 Voyager Search and MITRE * All rights reserved. This program and the accompanying materials * are made available under the terms of the Apache License, Version 2.0 which * accompanies this distribution and is available at * http://www.apache.org/licenses/LICENSE-2.0.txt ******************************************************************************/ package org.locationtech.spatial4j.io; import com.carrotsearch.randomizedtesting.RandomizedTest; import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; import org.locationtech.spatial4j.context.SpatialContext; import org.locationtech.spatial4j.context.jts.JtsSpatialContext; import org.locationtech.spatial4j.shape.Shape; import org.junit.Test; import java.io.IOException; import java.util.Arrays; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class LegacyShapeReadWriterTest extends RandomizedTest { private final LegacyShapeReader reader; private final LegacyShapeWriter writer; @ParametersFactory public static Iterable<Object[]> parameters() { return Arrays.asList($$( $(SpatialContext.GEO), $(JtsSpatialContext.GEO) )); } private final SpatialContext ctx; public LegacyShapeReadWriterTest(SpatialContext ctx) { this.ctx = ctx; this.reader = new LegacyShapeReader(ctx, null); this.writer = new LegacyShapeWriter(ctx, null); } @SuppressWarnings("unchecked") private <T extends Shape> T writeThenRead(T s ) throws IOException { String buff = writer.toString( s ); return (T) read( buff ); } private Shape read(String value) { return reader.readIfSupported(value); } @Test public void testPoint() throws IOException { Shape s = read("10 20"); assertEquals(ctx.makePoint(10,20),s); assertEquals(s,writeThenRead(s)); assertEquals(s,read("20,10"));//check comma for y,x format assertEquals(s,read("20, 10"));//test space assertFalse(s.hasArea()); } @Test public void testRectangle() throws IOException { Shape s = read("-10 -20 10 20"); assertEquals(ctx.makeRectangle(-10, 10, -20, 20),s); assertEquals(s,writeThenRead(s)); assertTrue(s.hasArea()); } @Test public void testCircle() throws IOException { Shape s = read("Circle(1.23 4.56 distance=7.89)"); assertEquals(ctx.makeCircle(1.23, 4.56, 7.89),s); assertEquals(s,writeThenRead(s)); assertEquals(s,read("CIRCLE( 4.56,1.23 d=7.89 )")); // use lat,lon and use 'd' abbreviation assertTrue(s.hasArea()); } // Looking for more tests? Shapes are tested in TestShapes2D. }