Package org.geoserver.wcs2_0.kvp

Source Code of org.geoserver.wcs2_0.kvp.GMLGetCoverageKVPTest

package org.geoserver.wcs2_0.kvp;
import static org.junit.Assert.*;

import java.io.ByteArrayInputStream;
import java.util.List;

import org.geoserver.catalog.Catalog;
import org.geoserver.catalog.CoverageDimensionInfo;
import org.geoserver.catalog.CoverageInfo;
import org.geoserver.wcs2_0.WCSTestSupport;
import org.geoserver.wcs2_0.response.GMLCoverageResponseDelegate;
import org.geotools.util.NumberRange;
import org.junit.Test;
import org.w3c.dom.Document;

import com.mockrunner.mock.web.MockHttpServletResponse;
/**
* Testing {@link GMLCoverageResponseDelegate}
*
* @author Simone Giannecchini, GeoSolutions SAS
*
*/
public class GMLGetCoverageKVPTest extends WCSTestSupport {

    private final static double DELTA = 1E-6;

    @Test
    public void gmlFormat() throws Exception {
        MockHttpServletResponse response =
            getAsServletResponse("wcs?request=GetCoverage&service=WCS&version=2.0.1" +
        "&coverageId=wcs__BlueMarble&format=application%2Fgml%2Bxml");

        assertEquals("application/gml+xml", response.getContentType());
        Document dom = dom(new ByteArrayInputStream(response.getOutputStreamContent().getBytes()));    
    }

    @Test
    public void gmlFormatCoverageBandDetails() throws Exception {
        Catalog catalog = getCatalog();

        CoverageInfo c = catalog.getCoverageByName("wcs", "BlueMarble");
        List<CoverageDimensionInfo> dimensions = c.getDimensions();
        CoverageDimensionInfo dimension = dimensions.get(0);
        assertEquals("RED_BAND", dimension.getName());
        NumberRange range = dimension.getRange();
        assertEquals(Double.NEGATIVE_INFINITY, range.getMinimum(), DELTA);
        assertEquals(Double.POSITIVE_INFINITY, range.getMaximum(), DELTA);
        assertEquals("GridSampleDimension[-Infinity,Infinity]", dimension.getDescription());
        List<Double> nullValues = dimension.getNullValues();
        assertEquals(0, nullValues.size());
        assertEquals("W.m-2.Sr-1", dimension.getUnit());

        int i = 1;
        for (CoverageDimensionInfo dimensionInfo : dimensions) {
            // Updating dimension properties
            dimensionInfo.getNullValues().add(-999d);
            dimensionInfo.setDescription("GridSampleDimension[-100.0,1000.0]");
            dimensionInfo.setUnit("m");
            dimensionInfo.setRange(NumberRange.create(-100, 1000));
            dimensionInfo.setName("Band" + (i++));
        }
        catalog.save(c);

        MockHttpServletResponse response = getAsServletResponse("wcs?request=GetCoverage&service=WCS&version=2.0.1"
                + "&coverageId=wcs__BlueMarble&format=application%2Fgml%2Bxml");
        Document dom = dom(new ByteArrayInputStream(response.getOutputStreamContent().getBytes()));
        String name = xpath.evaluate("//swe:field/@name", dom);
        assertEquals("Band1", name);
        String interval = xpath.evaluate("//swe:interval", dom);
        assertEquals("-100 1000", interval);
        String unit = xpath.evaluate("//swe:uom/@code", dom);
        assertEquals("m", unit);
        String noData = xpath.evaluate("//swe:nilValue", dom);
        assertEquals("-999.0", noData);
    }
}
TOP

Related Classes of org.geoserver.wcs2_0.kvp.GMLGetCoverageKVPTest

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.