package org.geotools.mbtiles;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import java.io.File;
import java.io.InputStream;
import org.apache.commons.io.IOUtils;
import org.geotools.data.DataUtilities;
import org.geotools.mbtiles.MBTilesMetadata.t_format;
import org.geotools.mbtiles.MBTilesMetadata.t_type;
import org.geotools.referencing.CRS;
import org.junit.Before;
import org.junit.Test;
public class MBTilesFileVectorTileTest {
File dbfile;
@Before
public void setUp() {
dbfile = DataUtilities.urlToFile(MBTilesFileVectorTileTest.class.getResource("planet.mbtiles"));
}
@Test
public void testMBTilesMetaData() throws Exception {
try (
MBTilesFile file = new MBTilesFile(dbfile);
) {
MBTilesMetadata metadata2 = file.loadMetaData();
assertEquals("osm2vectortiles", metadata2.getName());
assertEquals("Extract from http://osm2vectortiles.org", metadata2.getDescription());
assertEquals("2.0", metadata2.getVersion());
metadata2.getBounds().getLowerCorner().getCoordinate();
double delta = 0.0001;
assertEquals(-180.0, metadata2.getBounds().getLowerCorner().getOrdinate(0), delta);
assertEquals( 180.0, metadata2.getBounds().getUpperCorner().getOrdinate(0), delta);
assertEquals(-85.0511, metadata2.getBounds().getLowerCorner().getOrdinate(1), delta);
assertEquals( 85.0511, metadata2.getBounds().getUpperCorner().getOrdinate(1), delta);
assertEquals(CRS.decode("EPSG:4326", true), metadata2.getBounds().getCoordinateReferenceSystem());
assertEquals(t_format.PBF, metadata2.getFormat());
assertEquals(t_type.BASE_LAYER, metadata2.getType());
assertEquals(0, metadata2.getMinZoom());
assertEquals(5, metadata2.getMaxZoom());
}
}
@Test
public void testMBTilesGetTile() throws Exception {
byte[] expected;
try(
InputStream is = MBTilesFileVectorTileTest.class.getResourceAsStream("tile_data.pbf.gz")
){
expected = IOUtils.toByteArray(is);
}
try (
MBTilesFile file = new MBTilesFile(dbfile);
) {
MBTilesTile tile = file.loadTile(0, 0, 0);
assertThat(tile.getData(), notNullValue());
assertThat(tile.getData(), equalTo(expected));
}
}
}