Package org.geotools.coverage.io.impl

Source Code of org.geotools.coverage.io.impl.DefaultClassesTest

/*
*    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.impl;

import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;

import java.io.IOException;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collections;
import java.util.Date;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;

import org.geotools.coverage.grid.GridCoverage2D;
import org.geotools.coverage.grid.GridCoverageFactory;
import org.geotools.coverage.io.CoverageAccess.AccessType;
import org.geotools.coverage.io.Driver.DriverCapabilities;
import org.geotools.coverage.io.driver.TestDriver;
import org.geotools.data.Parameter;
import org.geotools.factory.Hints;
import org.geotools.feature.NameImpl;
import org.geotools.geometry.DirectPosition2D;
import org.geotools.geometry.jts.ReferencedEnvelope;
import org.geotools.referencing.CRS;
import org.geotools.util.DateRange;
import org.geotools.util.NumberRange;
import org.junit.BeforeClass;
import org.junit.Test;
import org.opengis.feature.type.Name;

/**
*
* @author Nicola Lagomarsini Geosolutions
*
*/
public class DefaultClassesTest {

    private static Map<String, Parameter<?>> emptyMap;

    private static Map<String, Serializable> connectionParams;

    private static URL url;

    private static Hints hints;

    private static Name name;

    @BeforeClass
    public static void setup() throws MalformedURLException {
        emptyMap = Collections.emptyMap();
        connectionParams = new HashMap<String, Serializable>();
        url = new URL(TestDriver.TEST_URL);
        connectionParams.put(DefaultFileDriver.URL.key, url);
        hints = new Hints();
        name = new NameImpl("test");
    }

    @Test
    public void testDefaultCoverageAccess() throws IOException {
        DefaultCoverageAccess access = new DefaultCoverageAccess(new TestDriver(),
                EnumSet.of(AccessType.READ_WRITE), emptyMap, connectionParams);
        // Checks on the creation and removal of a store
        assertFalse(access.canCreate(name, connectionParams, hints, null));
        assertFalse(access.canDelete(name, connectionParams, hints));
        assertFalse(access.delete(name, connectionParams, hints));

        // Test exceptions
        // Ensure that UnsupportedOperationException is thrown
        boolean notThrown = false;
        try {
            access.access(name, connectionParams, AccessType.READ_ONLY, hints, null);
            notThrown = true;
        } catch (UnsupportedOperationException e) {
        } catch (IOException e) {
            notThrown = true;
        }
        assertFalse(notThrown);
        // Reset the boolean
        notThrown = false;

        try {
            access.create(name, connectionParams, hints, null);
            notThrown = true;
        } catch (UnsupportedOperationException e) {
        } catch (IOException e) {
            notThrown = true;
        }
        assertFalse(notThrown);
        // Reset the boolean
        notThrown = false;
        try {
            access.getInfo(null);
            notThrown = true;
        } catch (UnsupportedOperationException e) {
        }
        assertFalse(notThrown);
        // Reset the boolean
        notThrown = false;
    }

    @Test
    public void testDefaultFileDriver() {
        DefaultFileDriver driver = new DefaultFileDriver(TestDriver.TEST_DRIVER,
                TestDriver.TEST_DRIVER, TestDriver.TEST_DRIVER, new Hints(),
                Collections.singletonList(".EXT"), EnumSet.of(DriverCapabilities.CONNECT,
                        DriverCapabilities.CREATE, DriverCapabilities.DELETE));

        // Various checks on the DefaultFileDriver class
        assertFalse(driver.canProcess(DriverCapabilities.CONNECT, url, connectionParams));
        assertFalse(driver.canProcess(DriverCapabilities.CREATE, url, connectionParams));
        assertFalse(driver.canProcess(DriverCapabilities.DELETE, url, connectionParams));

        assertFalse(driver.canConnect(connectionParams));
        assertFalse(driver.canCreate(connectionParams));
        assertFalse(driver.canDelete(connectionParams));

        // Ensure that UnsupportedOperationException is thrown
        boolean notThrown = false;
        try {
            driver.connect(connectionParams, hints, null);
            notThrown = true;
        } catch (UnsupportedOperationException e) {
        } catch (IOException e) {
            notThrown = true;
        }
        assertFalse(notThrown);
        // Reset the boolean
        notThrown = false;

        try {
            driver.create(connectionParams, hints, null);
            notThrown = true;
        } catch (UnsupportedOperationException e) {
        } catch (IOException e) {
            notThrown = true;
        }
        assertFalse(notThrown);
        // Reset the boolean
        notThrown = false;

        try {
            driver.delete(connectionParams, hints, null);
            notThrown = true;
        } catch (UnsupportedOperationException e) {
        } catch (IOException e) {
            notThrown = true;
        }
        assertFalse(notThrown);

        try {
            driver.process(DriverCapabilities.CONNECT, url, connectionParams, hints, null);
            notThrown = true;
        } catch (UnsupportedOperationException e) {
        } catch (IOException e) {
            notThrown = true;
        }
        assertFalse(notThrown);
        // Reset the boolean
        notThrown = false;

        try {
            driver.process(DriverCapabilities.CREATE, url, connectionParams, hints, null);
            notThrown = true;
        } catch (UnsupportedOperationException e) {
        } catch (IOException e) {
            notThrown = true;
        }
        assertFalse(notThrown);
        // Reset the boolean
        notThrown = false;

        try {
            driver.process(DriverCapabilities.DELETE, url, connectionParams, hints, null);
            notThrown = true;
        } catch (UnsupportedOperationException e) {
        } catch (IOException e) {
            notThrown = true;
        }
        assertFalse(notThrown);

        // ParameterInfo
        Map<String, Parameter<?>> connectParameterInfo = driver.getConnectParameterInfo();
        assertTrue(connectParameterInfo != null);
        assertTrue(connectParameterInfo.containsKey(DefaultFileDriver.URL.key));
        Map<String, Parameter<?>> createParameterInfo = driver.getCreateParameterInfo();
        assertTrue(createParameterInfo != null);
        assertTrue(createParameterInfo.containsKey(DefaultFileDriver.URL.key));
        Map<String, Parameter<?>> deleteParameterInfo = driver.getDeleteParameterInfo();
        assertTrue(deleteParameterInfo != null);
        assertTrue(deleteParameterInfo.containsKey(DefaultFileDriver.URL.key));
    }

    @Test
    public void testDefaultGridCoverageResponse() {
        // creation of a dummy coverage and response
        GridCoverage2D cov = new GridCoverageFactory().create("test",
                new float[][] { { 1.0f, 1.0f } }, new ReferencedEnvelope(0.0d, 1.0d, 0.0d, 1.0d,
                        null));
        DateRange temporalExtent = new DateRange(new Date(10000), new Date(20000));
        NumberRange<Double> verticalExtent = new NumberRange<Double>(Double.class, 0.0d, 100.0d);
        DefaultGridCoverageResponse response = new DefaultGridCoverageResponse(cov, temporalExtent,
                verticalExtent);

        // Check if the response results are equals to that of the input GridCoverage
        assertEquals(response.getNumSampleDimensions(), cov.getNumSampleDimensions());
        assertEquals(response.getNumOverviews(), cov.getNumOverviews());
        assertTrue(CRS.equalsIgnoreMetadata(response.getCoordinateReferenceSystem(),
                cov.getCoordinateReferenceSystem()));
        assertTrue(new ReferencedEnvelope(response.getEnvelope()).contains(cov.getEnvelope2D()));
        assertTrue(response.isDataEditable() == cov.isDataEditable());
        assertSame(response.getGridGeometry(), cov.getGridGeometry());
        assertSame(response.getGridCoverage2D(), cov);
        assertSame(response.getRenderedImage(), cov.getRenderedImage());
        assertSame(response.getTemporalExtent(), temporalExtent);
        assertSame(response.getVerticalExtent(), verticalExtent);
        assertSame(response.getSampleDimension(0), cov.getSampleDimension(0));
        assertSame(response.getSources(), cov.getSources());
        assertArrayEquals(response.getOptimalDataBlockSizes(), cov.getOptimalDataBlockSizes());

        // Evaluation of the same position
        DirectPosition2D pos = new DirectPosition2D(cov.getEnvelope2D().getCenterX(), cov
                .getEnvelope2D().getCenterY());
       
        assertArrayEquals(response.evaluate(pos, new byte[1]), cov.evaluate(pos, new byte[1]));
    }

}
TOP

Related Classes of org.geotools.coverage.io.impl.DefaultClassesTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.