/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2017, Open Source Geospatial Foundation (OSGeo) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.geotools.mbstyle.source; import org.geotools.mbstyle.MBStyle; import org.geotools.mbstyle.MapboxTestUtils; import org.json.simple.JSONObject; import org.json.simple.parser.ParseException; import org.junit.Before; import org.junit.Test; import java.awt.geom.Point2D; import java.io.IOException; import java.util.Arrays; import java.util.Map; import java.util.Map.Entry; import static org.junit.Assert.*; public class StyleSourcesTest { MBStyle testStyle; @Before public void setUp() throws IOException, ParseException { JSONObject json = MapboxTestUtils.parseTestStyle("sourcesTest.json"); testStyle = MBStyle.create(json); } @Test public void testIt() { Map<String, MBSource> sourceMap = testStyle.getSources(); for (Entry<String, MBSource> e : sourceMap.entrySet()) { System.out.println(e.getKey() + "(" + e.getValue().getClass().getSimpleName() + ")"); } assertEquals(10, sourceMap.size()); } @Test public void testGeoJsonDefaults() { Map<String, MBSource> sourceMap = testStyle.getSources(); assertTrue(sourceMap.get("geojson-defaults") instanceof GeoJsonMBSource); GeoJsonMBSource geo = (GeoJsonMBSource) sourceMap.get("geojson-defaults"); assertEquals("./lines.geojson", geo.getData()); assertEquals("geojson", geo.getType()); assertEquals(18, geo.getMaxZoom()); assertEquals(128, geo.getBuffer()); assertEquals(0.375, geo.getTolerance()); assertEquals(false, geo.getCluster()); assertEquals(50, geo.getClusterRadius()); assertEquals(17, geo.getClusterMaxZoom()); } @Test public void testImageMBSource() { Map<String, MBSource> sourceMap = testStyle.getSources(); assertTrue(sourceMap.get("image") instanceof ImageMBSource); ImageMBSource image = (ImageMBSource) sourceMap.get("image"); assertEquals("image", image.getType()); assertEquals("/mapbox-gl-js/assets/radar.gif", image.getUrl()); assertEquals(Arrays.asList(new Point2D.Double(-80.425, 46.437), new Point2D.Double(-71.516, 46.437), new Point2D.Double(-71.516, 37.936), new Point2D.Double(-80.425, 37.936)), image.getCoordinates()); } @Test public void testCanvasMBSource() { Map<String, MBSource> sourceMap = testStyle.getSources(); assertTrue(sourceMap.get("canvas") instanceof CanvasMBSource); CanvasMBSource canvas = (CanvasMBSource) sourceMap.get("canvas"); assertEquals("canvas", canvas.getType()); assertEquals(true, canvas.getAnimate()); assertEquals( Arrays.asList(new Point2D.Double(-122.51596391201019, 37.56238816766053), new Point2D.Double(-122.51467645168304, 37.56410183312965), new Point2D.Double(-122.51309394836426, 37.563391708549425), new Point2D.Double(-122.51423120498657, 37.56161849366671)), canvas.getCoordinates()); assertEquals("mycanvas", canvas.getCanvas()); } @Test public void testGeoJsonInlineMBSource() { Map<String, MBSource> sourceMap = testStyle.getSources(); assertTrue(sourceMap.get("geojson-inline") instanceof GeoJsonMBSource); GeoJsonMBSource geo = (GeoJsonMBSource) sourceMap.get("geojson-inline"); assertTrue(geo.getData() instanceof JSONObject); assertEquals("geojson", geo.getType()); assertEquals(17, geo.getMaxZoom().intValue()); assertEquals(0, geo.getBuffer().intValue()); assertEquals(0.5, geo.getTolerance()); assertEquals(true, geo.getCluster()); assertEquals(512, geo.getClusterRadius().intValue()); assertEquals(10, geo.getClusterMaxZoom().intValue()); } @Test public void testVectorUrlMBSource() { Map<String, MBSource> sourceMap = testStyle.getSources(); assertTrue(sourceMap.get("vector-url") instanceof VectorMBSource); VectorMBSource vector = (VectorMBSource) sourceMap.get("vector-url"); assertEquals("vector", vector.getType()); assertEquals("mapbox://mapbox.mapbox-streets-v6", vector.getUrl()); assertEquals(0, vector.getMinZoom().intValue()); // Default assertEquals(22, vector.getMaxZoom().intValue()); // Default } @Test public void testVectorMBSource() { Map<String, MBSource> sourceMap = testStyle.getSources(); assertTrue(sourceMap.get("vector-tiles") instanceof VectorMBSource); VectorMBSource vector = (VectorMBSource) sourceMap.get("vector-tiles"); assertEquals("vector", vector.getType()); assertEquals(null, vector.getUrl()); assertEquals(10, vector.getMinZoom().intValue()); assertEquals(14, vector.getMaxZoom().intValue()); assertEquals(Arrays.asList("http://a.example.com/tiles/{z}/{x}/{y}.pbf", "http://b.example.com/tiles/{z}/{x}/{y}.pbf"), vector.getTiles()); } @Test public void testVideoMBSource() { Map<String, MBSource> sourceMap = testStyle.getSources(); assertTrue(sourceMap.get("video") instanceof VideoMBSource); VideoMBSource video = (VideoMBSource) sourceMap.get("video"); assertEquals("video", video.getType()); assertEquals(Arrays.asList("https://www.mapbox.com/drone/video/drone.mp4", "https://www.mapbox.com/drone/video/drone.webm"), video.getUrls()); assertEquals( Arrays.asList(new Point2D.Double(-122.51596391201019, 37.56238816766053), new Point2D.Double(-122.51467645168304, 37.56410183312965), new Point2D.Double(-122.51309394836426, 37.563391708549425), new Point2D.Double(-122.51423120498657, 37.56161849366671)), video.getCoordinates()); } @Test public void testRasterDefaultsMBSource() { Map<String, MBSource> sourceMap = testStyle.getSources(); assertTrue(sourceMap.get("raster-defaults") instanceof RasterMBSource); RasterMBSource raster = (RasterMBSource) sourceMap.get("raster-defaults"); assertEquals("raster", raster.getType()); assertEquals("mapbox://mapbox.satellite", raster.getUrl()); assertEquals(0, raster.getMinZoom().intValue()); assertEquals(22, raster.getMaxZoom().intValue()); assertEquals(512, raster.getTileSize().intValue()); } @Test public void testRasterMBSource() { Map<String, MBSource> sourceMap = testStyle.getSources(); assertTrue(sourceMap.get("raster") instanceof RasterMBSource); RasterMBSource raster = (RasterMBSource) sourceMap.get("raster"); assertEquals("raster", raster.getType()); assertNull(raster.getUrl()); assertEquals(1, raster.getMinZoom().intValue()); assertEquals(19, raster.getMaxZoom().intValue()); assertEquals(256, raster.getTileSize().intValue()); assertEquals( Arrays.asList( "http://a.example.com/wms?bbox={bbox-epsg-3857}&format=image/png&service=WMS&version=1.1.1&request=GetMap&srs=EPSG:3857&width=256&height=256&layers=example"), raster.getTiles()); } }