package org.geowebcache.arcgis.layer; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.net.URL; import java.util.List; import junit.framework.TestCase; import org.geowebcache.arcgis.config.CacheInfo; import org.geowebcache.arcgis.config.CacheInfoPersister; import org.geowebcache.arcgis.config.LODInfo; import org.geowebcache.arcgis.config.TileOrigin; import org.geowebcache.grid.BoundingBox; import org.geowebcache.grid.GridSet; import org.geowebcache.grid.GridSubsetFactory; /** * Unit test suite for the {@link GridSetBuilder} utility class * * @author Gabriel Roldan * */ public class GridSetBuilderTest extends TestCase { private GridSetBuilder builder; private CacheInfo cacheInfo; private BoundingBox layerBounds; private GridSet gridset; @Override public void setUp() throws Exception { URL url = getClass().getResource("/arcgis_09.2_conf.xml"); CacheInfoPersister persister = new CacheInfoPersister(); InputStream stream = url.openStream(); Reader reader = new InputStreamReader(stream); try { cacheInfo = persister.load(reader); } finally { stream.close(); } layerBounds = new BoundingBox(-10, -10, 100, 50); builder = new GridSetBuilder(); gridset = builder.buildGridset("TestLayer", cacheInfo, layerBounds); assertNotNull(gridset); } public void testBounds() { assertTrue(gridset.isTopLeftAligned()); BoundingBox bounds = gridset.getBounds(); TileOrigin tileOrigin = cacheInfo.getTileCacheInfo().getTileOrigin(); assertEquals(tileOrigin.getX(), bounds.getMinX()); assertEquals(tileOrigin.getY(), bounds.getMaxY()); assertTrue(bounds.contains(layerBounds)); } public void testResolutionsAndScaleDenoms() { double[] resolutions = GridSubsetFactory.createGridSubSet(gridset).getResolutions(); List<LODInfo> lodInfos = cacheInfo.getTileCacheInfo().getLodInfos(); assertEquals(lodInfos.size(), resolutions.length); for (int i = 0; i < resolutions.length; i++) { LODInfo lodInfo = lodInfos.get(i); assertEquals(lodInfo.getResolution(), resolutions[i]); assertEquals(lodInfo.getScale(), gridset.getGridLevels()[i].getScaleDenominator(), 1e-6); } } }