/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2014, Open Source Geospatial Foundation (OSGeo) * * 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.geotools.coverage.io.driver; import java.io.IOException; import java.io.Serializable; import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import org.geotools.coverage.io.CoverageAccess; import org.geotools.coverage.io.CoverageAccess.AccessType; import org.geotools.coverage.io.CoverageSource; import org.geotools.coverage.io.CoverageSource.SpatialDomain; import org.geotools.coverage.io.Driver.DriverCapabilities; import org.geotools.coverage.io.RasterLayoutTest; import org.geotools.coverage.io.TestCoverageSourceDescriptor; import org.geotools.coverage.io.impl.DefaultFileDriver; import org.geotools.referencing.CRS; import org.geotools.util.SimpleInternationalString; import org.junit.Assert; import org.junit.Test; import org.opengis.feature.type.Name; import org.opengis.referencing.FactoryException; import org.opengis.referencing.NoSuchAuthorityCodeException; import org.opengis.referencing.crs.CoordinateReferenceSystem; public class DriverTest extends Assert { private final static TestDriver driver = new TestDriver(); private static CoordinateReferenceSystem WGS84; private final static Logger LOGGER = org.geotools.util.logging.Logging .getLogger(TestDriver.class.toString());; static { try { WGS84 = CRS.decode("EPSG:4326", true); } catch (NoSuchAuthorityCodeException e) { LOGGER.log(Level.FINER, e.getMessage(), e); } catch (FactoryException e) { LOGGER.log(Level.FINER, e.getMessage(), e); } } @Test public void testDriver() throws IOException { SimpleInternationalString driverName = new SimpleInternationalString(TestDriver.TEST_DRIVER); // Testing main driver capabilities. That's a Dummy Driver, it can only connect Map<String, Serializable> connectionParams = new HashMap<String, Serializable>(); connectionParams.put(DefaultFileDriver.URL.key, new URL(TestDriver.TEST_URL)); assertEquals(TestDriver.TEST_DRIVER, driver.getName()); assertEquals(driverName, driver.getTitle()); assertEquals(driverName, driver.getDescription()); assertTrue(driver.canAccess(DriverCapabilities.CONNECT, connectionParams)); assertFalse(driver.canAccess(DriverCapabilities.CREATE, connectionParams)); assertFalse(driver.canAccess(DriverCapabilities.DELETE, connectionParams)); } @Test public void testCoverageAccess() throws IOException { Map<String, Serializable> connectionParams = new HashMap<String, Serializable>(); connectionParams.put(DefaultFileDriver.URL.key, new URL(TestDriver.TEST_URL)); CoverageAccess access = driver.access(DriverCapabilities.CONNECT, connectionParams, null, null); assertFalse(access.isCreateSupported()); assertFalse(access.isDeleteSupported()); assertSame(driver, access.getDriver()); // Checking proper coverage name final List<Name> names = access.getNames(null); final Name coverageName = names.get(0); assertEquals(1, names.size()); assertEquals(TestCoverageSourceDescriptor.TEST_NAME, coverageName); final CoverageSource source = access.access(TestCoverageSourceDescriptor.TEST_NAME, null, AccessType.READ_ONLY, null, null); CoordinateReferenceSystem crs = source.getCoordinateReferenceSystem(); assertEquals(TestCoverageSourceDescriptor.TEST_NAME, source.getName(null)); // Test dimensions and descriptors assertTrue(source.getAdditionalDomains().isEmpty()); assertTrue(source.getDimensionDescriptors().isEmpty()); assertNull(source.getVerticalDomain()); assertNotNull(source.getTemporalDomain()); SpatialDomain spatialDomain = source.getSpatialDomain(); assertNotNull(spatialDomain); assertTrue(CRS.equalsIgnoreMetadata(spatialDomain.getCoordinateReferenceSystem2D(), WGS84)); assertEquals(RasterLayoutTest.testRasterLayout, spatialDomain .getRasterElements(false, null).iterator().next()); assertNotNull(crs); assertEquals(WGS84, crs); } }