package org.mapfish.print.map.tiled.wmts;
import org.geotools.geometry.jts.ReferencedEnvelope;
import org.geotools.referencing.CRS;
import org.junit.Test;
import org.mapfish.print.attribute.map.CenterScaleMapBounds;
import org.mapfish.print.attribute.map.MapBounds;
import org.mapfish.print.config.Configuration;
import java.awt.Rectangle;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class WMTSLayerTest {
@Test
public void testTileBoundsCalculation() throws Exception {
WMTSLayerParam params = new WMTSLayerParam();
Matrix matrix = new Matrix();
matrix.matrixSize = new long[] {67108864, 67108864};
matrix.tileSize = new int[] {256, 256};
matrix.topLeftCorner = new double[] {420000, 350000};
matrix.scaleDenominator = 7500;
params.matrices = new Matrix[] {matrix};
WMTSLayer wmtsLayer = new WMTSLayer(null, null, params, null,
new Configuration());
Rectangle paintArea = new Rectangle(0, 0, 256, 256);
MapBounds bounds = new CenterScaleMapBounds(CRS.decode("EPSG:21781"),
595217.02, 236708.54, 7500);
WMTSLayer.WMTSTileCacheInfo tileInformation =
(WMTSLayer.WMTSTileCacheInfo) wmtsLayer.createTileInformation(bounds, paintArea, 256);
ReferencedEnvelope tileCacheBounds = tileInformation.getTileCacheBounds();
assertEquals(tileCacheBounds.getMinX(), 420000, 0.00001);
assertFalse ("" + tileCacheBounds.getMinX(), Double.isInfinite(tileCacheBounds.getMinX()));
assertFalse("" + tileCacheBounds.getMinX(), Double.isNaN(tileCacheBounds.getMinX()));
assertTrue("" + tileCacheBounds.getMinY(), tileCacheBounds.getMinY() < 350000);
assertFalse ("" + tileCacheBounds.getMinY(), Double.isInfinite(tileCacheBounds.getMinY()));
assertFalse("" + tileCacheBounds.getMinY(), Double.isNaN(tileCacheBounds.getMinY()));
assertTrue("" + tileCacheBounds.getMaxX(), tileCacheBounds.getMaxX() > 420000);
assertFalse ("" + tileCacheBounds.getMaxX(), Double.isInfinite(tileCacheBounds.getMaxX()));
assertFalse("" + tileCacheBounds.getMaxX(), Double.isNaN(tileCacheBounds.getMaxX()));
assertEquals(tileCacheBounds.getMaxY(), 350000, 0.00001);
assertFalse ("" + tileCacheBounds.getMaxY(), Double.isInfinite(tileCacheBounds.getMaxY()));
assertFalse("" + tileCacheBounds.getMaxY(), Double.isNaN(tileCacheBounds.getMaxY()));
}
@Test
public void testCreateRestURI() throws Exception {
WMTSLayerParam param = new WMTSLayerParam();
param.layer = "wmts_layer";
param.matrixSet = "matrix_set";
param.baseURL = "http://test_server/mapproxy_4_v3/wmts/{Layer}/{TileMatrixSet}/{TileMatrix}/{TileCol}/{TileRow}.png";
String restURI = WMTSLayer.createRestURI("the_matrix_id", 4, 5, param).toString();
assertEquals("http://test_server/mapproxy_4_v3/wmts/wmts_layer/matrix_set/the_matrix_id/5/4.png", restURI);
}
}