/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, availible at the root * application directory. */ package org.geoserver.wms; import java.util.ArrayList; import java.util.List; import junit.framework.Test; import org.geoserver.data.test.MockData; import org.geotools.referencing.CRS; import org.opengis.referencing.crs.CoordinateReferenceSystem; import com.vividsolutions.jts.geom.Envelope; public class DefaultWebMapServiceTest extends WMSTestSupport { /** * This is a READ ONLY TEST so we can use one time setup */ public static Test suite() { return new OneTimeTestSetup(new DefaultWebMapServiceTest()); } /** * This is just a very basic test, mostly testing defaults * * @throws Exception */ public void test1() throws Exception { GetMapRequest mockGMR = createGetMapRequest(MockData.BASIC_POLYGONS); /* Create a request */ GetMapRequest request = new GetMapRequest(); /* Create the reflector */ DefaultWebMapService reflector = new DefaultWebMapService(getWMS()); /* Run the reflector */ request.setLayers(mockGMR.getLayers()); request.setFormat(DefaultWebMapService.FORMAT); reflector.autoSetBoundsAndSize(request); CoordinateReferenceSystem crs = request.getCrs(); String srs = request.getSRS(); Envelope bbox = request.getBbox(); String format = request.getFormat(); int width = request.getWidth(); int height = request.getHeight(); String crsString = crs.getName().toString(); assertTrue("EPSG:WGS 84".equalsIgnoreCase(crsString)); assertTrue("EPSG:4326".equalsIgnoreCase(srs)); // mockGMR.getBbox() actually returns (-180 , 90 , -90 , 180 ) <- foo assertTrue(bbox.getMinX() == -180.0 && bbox.getMaxX() == 180.0 && bbox.getMinY() == -90.0 && bbox.getMaxY() == 90.0); assertEquals("image/png", format); assertEquals(width, 512); assertEquals(height, 256); } /** * Tests basic reprojection * * @throws Exception */ public void test2() throws Exception { GetMapRequest mockGMR = createGetMapRequest(MockData.BASIC_POLYGONS); /* Create a request */ GetMapRequest request = new GetMapRequest(); /* Create the reflector */ DefaultWebMapService reflector = new DefaultWebMapService(getWMS()); /* Run the reflector */ request.setSRS("EPSG:41001"); request.setCrs(CRS.decode("EPSG:41001")); request.setLayers(mockGMR.getLayers()); request.setFormat("image/gif"); reflector.autoSetBoundsAndSize(request); CoordinateReferenceSystem crs = request.getCrs(); String srs = request.getSRS(); Envelope bbox = request.getBbox(); String format = request.getFormat(); int width = request.getWidth(); int height = request.getHeight(); String crsString = crs.getName().toString(); assertTrue("WGS84 / Simple Mercator".equalsIgnoreCase(crsString)); assertTrue("EPSG:41001".equalsIgnoreCase(srs)); // mockGMR.getBbox() actually returns (-180 , 90 , -90 , 180 ) <- foo assertTrue(Math.abs(bbox.getMinX() + 1.9236008009077676E7) < 1E-4 && Math.abs(bbox.getMinY() + 2.2026354993694823E7) < 1E-4 && Math.abs(bbox.getMaxX() - 1.9236008009077676E7) < 1E-4 && Math.abs(bbox.getMaxY() - 2.2026354993694823E7) < 1E-4); assertEquals("image/gif", format); assertEquals(447, width); assertEquals(512, height); } /** * This test is incomplete because I (arneke) had trouble finding mock data with proper bounding * boxes * * @throws Exception */ public void test3() throws Exception { GetMapRequest mockStreams = createGetMapRequest(MockData.BRIDGES); GetMapRequest mockBridges = createGetMapRequest(MockData.STREAMS); List<MapLayerInfo> mls = new ArrayList<MapLayerInfo>(2); mls.add(mockBridges.getLayers().get(0)); mls.add(mockStreams.getLayers().get(0)); /* Create a request */ GetMapRequest request = new GetMapRequest(); /* Create the reflector */ DefaultWebMapService reflector = new DefaultWebMapService(getWMS()); /* Run the reflector */ request.setSRS("EPSG:41001"); request.setCrs(CRS.decode("EPSG:41001")); request.setLayers(mls); request.setFormat("image/gif"); reflector.autoSetBoundsAndSize(request); CoordinateReferenceSystem crs = request.getCrs(); String srs = request.getSRS(); Envelope bbox = request.getBbox(); String format = request.getFormat(); int width = request.getWidth(); int height = request.getHeight(); String crsString = crs.getName().toString(); assertTrue("WGS84 / Simple Mercator".equalsIgnoreCase(crsString)); assertTrue("EPSG:41001".equalsIgnoreCase(srs)); assertTrue(Math.abs(bbox.getMinX() + 1.9236008009077676E7) < 1E-4 && Math.abs(bbox.getMinY() + 2.2026354993694823E7) < 1E-4 && Math.abs(bbox.getMaxX() - 1.9236008009077676E7) < 1E-4 && Math.abs(bbox.getMaxY() - 2.2026354993694823E7) < 1E-4); assertEquals("image/gif", format); assertEquals(447, width); assertEquals(512, height); } }