/* * Geotoolkit - An Open Source Java GIS Toolkit * http://www.geotoolkit.org * * (C) 2010, Geomatys * * 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.geotoolkit.ncwms; import java.awt.geom.NoninvertibleTransformException; import java.awt.Dimension; import java.net.MalformedURLException; import javax.xml.bind.JAXBException; import org.apache.sis.geometry.GeneralEnvelope; import org.apache.sis.referencing.CommonCRS; import org.geotoolkit.ncwms.map.NcWMSMapLayer; import org.geotoolkit.wms.xml.WMSVersion; import org.junit.Test; import org.opengis.referencing.NoSuchAuthorityCodeException; import org.opengis.referencing.operation.TransformException; import org.opengis.util.FactoryException; import static org.junit.Assert.*; /** * * @author Olivier Terral (Geomatys) * @module */ public class NcWMSMapLayerTest extends org.geotoolkit.test.TestBase { private final NcWebMapClient SERVER_111; private final NcWebMapClient SERVER_130; public NcWMSMapLayerTest() throws MalformedURLException, JAXBException { SERVER_111 = new MockWebMapClient(WMSVersion.v111); SERVER_130 = new MockWebMapClient(WMSVersion.v130); } /** * This test checks if the ncWMS parameters are not added to the get map * request when they are null */ @Test public void test_GetMapWithNullValues() throws TransformException, MalformedURLException, FactoryException{ final GeneralEnvelope env = new GeneralEnvelope(CommonCRS.WGS84.normalizedGeographic()); env.setRange(0, -180, 180); env.setRange(1, -90, 90); final NcWMSMapLayer layer = new NcWMSMapLayer(SERVER_111, "BlueMarble"); final String query = layer.getCoverageReference().query(env, new Dimension(800, 600)).toString(); assertFalse(query.contains("OPACITY=")); assertFalse(query.contains("COLORSCALERANGE=")); assertFalse(query.contains("NUMCOLORBANDS=")); assertFalse(query.contains("LOGSCALE=")); } /** * This test chacks if the ncWMS parameters are added to the get map request */ @Test public void test_GetMap() throws TransformException, MalformedURLException, FactoryException{ final GeneralEnvelope env = new GeneralEnvelope(CommonCRS.WGS84.normalizedGeographic()); env.setRange(0, -180, 180); env.setRange(1, -90, 90); final NcWMSMapLayer layer = new NcWMSMapLayer(SERVER_111, "BlueMarble"); layer.getCoverageReference().setOpacity(new Integer(60)); layer.getCoverageReference().dimensions().put("COLORSCALERANGE","auto"); layer.getCoverageReference().setNumColorBands(125); layer.getCoverageReference().setLogScale(true); final String query = layer.getCoverageReference().query(env, new Dimension(800, 600)).toString(); assertTrue("was:" + query, query.contains("OPACITY=60")); assertTrue("was:" + query, query.contains("COLORSCALERANGE=auto")); assertTrue("was:" + query, query.contains("NUMCOLORBANDS=125")); assertTrue("was:" + query, query.contains("LOGSCALE=true")); } /** * This test checks if the ncWMS parameters are not added to the get feature * info request when they are null */ @Test public void test_GetFeatureInfoWithNullValues() throws TransformException, MalformedURLException, FactoryException{ final GeneralEnvelope env = new GeneralEnvelope(CommonCRS.WGS84.normalizedGeographic()); env.setRange(0, -180, 180); env.setRange(1, -90, 90); final NcWMSMapLayer layer = new NcWMSMapLayer(SERVER_111, "BlueMarble"); final String query = layer.getCoverageReference().queryFeatureInfo(env, new Dimension(360, 180), 140, 250, new String[]{"BlueMarble"}, "gml", 1).getURL().toString(); assertTrue("was:" + query, query.contains("INFO_FORMAT=gml")); assertTrue("was:" + query, query.contains("QUERY_LAYERS=BlueMarble")); assertTrue("was:" + query, query.contains("X=140")); assertTrue("was:" + query, query.contains("Y=250")); assertFalse(query.contains("OPACITY=60")); assertFalse(query.contains("COLORSCALERANGE=auto")); assertFalse(query.contains("NUMCOLORBANDS=125")); assertFalse(query.contains("LOGSCALE=true")); } /** * This test checks if the ncWMS parameters are added to the get feature * info request */ @Test public void test_GetFeatureInfo() throws NoSuchAuthorityCodeException, FactoryException, MalformedURLException, TransformException, NoninvertibleTransformException { final GeneralEnvelope env = new GeneralEnvelope(CommonCRS.WGS84.normalizedGeographic()); env.setRange(0, -180, 180); env.setRange(1, -90, 90); final NcWMSMapLayer layer = new NcWMSMapLayer(SERVER_111, "BlueMarble"); layer.getCoverageReference().setOpacity(new Integer(60)); layer.getCoverageReference().dimensions().put("COLORSCALERANGE","auto"); layer.getCoverageReference().setNumColorBands(125); layer.getCoverageReference().setLogScale(true); final String query = layer.getCoverageReference().queryFeatureInfo(env, new Dimension(360, 180), 140, 250, new String[]{"BlueMarble"}, "gml", 1).getURL().toString(); assertTrue("was:" + query, query.contains("INFO_FORMAT=gml")); assertTrue("was:" + query, query.contains("QUERY_LAYERS=BlueMarble")); assertTrue("was:" + query, query.contains("X=140")); assertTrue("was:" + query, query.contains("Y=250")); assertTrue("was:" + query, query.contains("OPACITY=60")); assertTrue("was:" + query, query.contains("COLORSCALERANGE=auto")); assertTrue("was:" + query, query.contains("NUMCOLORBANDS=125")); assertTrue("was:" + query, query.contains("LOGSCALE=true")); } /** * This test checks if the ncWMS parameters are added to the GetLegendGraphic * request */ @Test public void test_GetLegend() throws MalformedURLException { final NcWMSMapLayer layer = new NcWMSMapLayer(SERVER_111, "BlueMarble"); layer.getCoverageReference().dimensions().put("COLORSCALERANGE","auto"); layer.getCoverageReference().setNumColorBands(125); layer.getCoverageReference().setLogScale(true); layer.getCoverageReference().setStyles("style_name/palette_name"); final String query = layer.getCoverageReference().queryLegend(new Dimension(360, 180), "image/png", "test", 100.0).getURL().toString(); assertTrue("was:" + query, query.contains("FORMAT=image%2Fpng")); assertTrue("was:" + query, query.contains("WIDTH=360")); assertTrue("was:" + query, query.contains("HEIGHT=180")); assertTrue("was:" + query, query.contains("RULE=test")); assertTrue("was:" + query, query.contains("SCALE=100")); assertTrue("was:" + query, query.contains("PALETTE=palette_name")); assertTrue("was:" + query, query.contains("COLORSCALERANGE=auto")); assertTrue("was:" + query, query.contains("NUMCOLORBANDS=125")); assertTrue("was:" + query, query.contains("LOGSCALE=true")); } /** * This test checks if the ncWMS parameters are added to the get metadata * request */ @Test public void test_GetMetadataLayerDetails() throws MalformedURLException { final NcWMSMapLayer layer = new NcWMSMapLayer(SERVER_111, "BlueMarble"); // Test mandatory values String query = layer.getCoverageReference().queryMetadataLayerDetails().toString(); assertTrue("was:" + query, query.contains("request=GetMetadata")); assertTrue("was:" + query, query.contains("item=layerDetails")); assertTrue("was:" + query, query.contains("layerName=BlueMarble")); // Test all values layer.getCoverageReference().dimensions().put("TIME", "10-10-10T01:00:00Z"); query = layer.getCoverageReference().queryMetadataLayerDetails().toString(); assertTrue("was:" + query, query.contains("item=layerDetails")); assertTrue("was:" + query, query.contains("layerName=BlueMarble")); assertTrue("was:" + query, query.contains("time=10-10-10T01%3A00%3A00Z")); } /** * This test checks if the ncWMS parameters are added to the get metadata * request */ @Test public void test_GetMetadataAnimationTimesteps() throws MalformedURLException { final NcWMSMapLayer layer = new NcWMSMapLayer(SERVER_111, "BlueMarble"); // Test mandatory values String query = layer.getCoverageReference().queryMetadataAnimationTimesteps("10-10-10T01:00:00Z", "11-10-10T01:00:00Z").toString(); assertTrue("was:" + query, query.contains("request=GetMetadata")); assertTrue("was:" + query, query.contains("item=animationTimesteps")); assertTrue("was:" + query, query.contains("layerName=BlueMarble")); assertTrue("was:" + query, query.contains("start=10-10-10T01%3A00%3A00Z")); assertTrue("was:" + query, query.contains("end=11-10-10T01%3A00%3A00Z")); } /** * This test checks if the ncWMS parameters are added to the get metadata * request */ @Test public void test_GetMetadataTimesteps() throws MalformedURLException { final NcWMSMapLayer layer = new NcWMSMapLayer(SERVER_111, "BlueMarble"); layer.getCoverageReference().dimensions().put("TIME", "10-10-10T01:00:00Z"); // Test mandatory values String query = layer.getCoverageReference().queryMetadataTimesteps().toString(); assertTrue("was:" + query, query.contains("request=GetMetadata")); assertTrue("was:" + query, query.contains("item=timesteps")); assertTrue("was:" + query, query.contains("layerName=BlueMarble")); assertTrue("was:" + query, query.contains("day=10-10-10T01%3A00%3A00Z")); } /** * This test checks if the ncWMS parameters are added to the get metadata * request */ @Test public void test_GetMetadataMinmax() throws MalformedURLException { final NcWMSMapLayer layer = new NcWMSMapLayer(SERVER_111, "BlueMarble"); // Test mandatory values String query = layer.getCoverageReference().queryMetadataMinmax("epsg:4326","-2,-1,1,2","300","400").toString(); assertTrue("was:" + query, query.contains("request=GetMetadata")); assertTrue("was:" + query, query.contains("item=minmax")); assertTrue("was:" + query, query.contains("layers=BlueMarble")); assertTrue("was:" + query, query.contains("crs=epsg%3A4326")); assertTrue("was:" + query, query.contains("bbox=-2%2C-1%2C1%2C2")); assertTrue("was:" + query, query.contains("width=300")); assertTrue("was:" + query, query.contains("height=400")); } /** * This test checks if the ncWMS parameters are added to the get metadata * request */ @Test public void test_GetTransect() throws MalformedURLException { final NcWMSMapLayer layer = new NcWMSMapLayer(SERVER_111, "BlueMarble"); // Test mandatory values String query = layer.getCoverageReference().queryTransect("CRS:84", "1 2,3 4", "image/png") .toString(); assertTrue("was:" + query, query.contains("REQUEST=GetTransect")); assertTrue("was:" + query, query.contains("LAYER=BlueMarble")); assertTrue("was:" + query, query.contains("CRS=CRS%3A84")); assertTrue("was:" + query, query.contains("FORMAT=image%2Fpng")); assertTrue("was:" + query, query.contains("LINESTRING=1+2%2C3+4")); // Test optional values layer.getCoverageReference().dimensions().put("TIME", "10-10-10T10:00:00Z"); layer.getCoverageReference().dimensions().put("ELEVATION", "550"); query = layer.getCoverageReference().queryTransect("CRS:84", "1 2,3 4", "image/png").toString(); assertTrue("was:" + query, query.contains("TIME=10-10-10T10%3A00%3A00Z")); assertTrue("was:" + query, query.contains("ELEVATION=550")); } /** * This test checks if the ncWMS parameters are added to the get vertical profile * request */ @Test public void test_GetVerticalProfile() throws MalformedURLException { final NcWMSMapLayer layer = new NcWMSMapLayer(SERVER_111, "BlueMarble"); // Test mandatory values String query = layer.getCoverageReference().queryVerticalProfile("CRS:84", 1, 2, "image/png") .toString(); System.out.println("query = " + query); assertTrue("was:" + query, query.contains("REQUEST=GetVerticalProfile")); assertTrue("was:" + query, query.contains("LAYER=BlueMarble")); assertTrue("was:" + query, query.contains("CRS=CRS%3A84")); assertTrue("was:" + query, query.contains("FORMAT=image%2Fpng")); assertTrue("was:" + query, query.contains("POINT=1.0+2.0")); // Test optional values layer.getCoverageReference().dimensions().put("TIME", "10-10-10T10:00:00Z"); query = layer.getCoverageReference().queryVerticalProfile("CRS:84", 1, 2, "image/png").toString(); assertTrue("was:" + query, query.contains("TIME=10-10-10T10%3A00%3A00Z")); } }