/*
* Geotoolkit - An Open Source Java GIS Toolkit
* http://www.geotoolkit.org
*
* (C) 2012, Geomatys
*
* 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; either
* version 2.1 of the License, or (at your option) any later version.
*
* 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.geotoolkit.wps.converters.inputs.reference;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import org.geotoolkit.coverage.grid.GridCoverage2D;
import static org.geotoolkit.test.Assert.*;
import org.apache.sis.util.UnconvertibleObjectException;
import org.geotoolkit.wps.converters.AbstractWPSConverterTest;
import org.geotoolkit.wps.converters.ConvertersTestUtils;
import org.geotoolkit.wps.converters.WPSConverterRegistry;
import org.geotoolkit.wps.converters.WPSObjectConverter;
import org.geotoolkit.wps.converters.inputs.references.AbstractReferenceInputConverter;
import org.geotoolkit.wps.io.WPSIO;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.opengis.geometry.Envelope;
import org.apache.sis.util.Utilities;
import org.geotoolkit.wps.xml.Reference;
import org.geotoolkit.wps.xml.WPSXmlFactory;
/**
*
* @author Quentin Boileau (Geomatys)
*/
public class ReferenceToGridCoverage2DConverterTest extends AbstractWPSConverterTest {
@Test
@org.junit.Ignore("Fails randomly because of GeoTIFF reader not found.")
public void testConversion() throws UnconvertibleObjectException, IOException {
final WPSObjectConverter<Reference, GridCoverage2D> converter = WPSConverterRegistry.getInstance().getConverter(Reference.class, GridCoverage2D.class);
final URL coverage = ReferenceToRenderedImageConverterTest.class.getResource("/inputs/coverage.tiff");
assertNotNull(coverage);
final Map<String, Object> parameters = new HashMap<>();
parameters.put(AbstractReferenceInputConverter.IOTYPE, WPSIO.IOType.INPUT);
parameters.put(AbstractReferenceInputConverter.MIME, "image/geotiff");
final Reference reference = WPSXmlFactory.buildInOutReference("1.0.0", WPSIO.IOType.INPUT);
reference.setHref(coverage.toString());
reference.setMimeType("image/x-geotiff");
reference.setEncoding(null);
final GridCoverage2D convertedCvg = converter.convert(reference, parameters);
assertNotNull(convertedCvg);
final GridCoverage2D expectedCvg = ConvertersTestUtils.makeCoverage();
final Envelope convertedEnvelope = convertedCvg.getEnvelope();
final Envelope expectedEnvelope = expectedCvg.getEnvelope();
assertTrue(Utilities.equalsIgnoreMetadata(expectedEnvelope.getCoordinateReferenceSystem(), convertedEnvelope.getCoordinateReferenceSystem()));
assertTrue(expectedEnvelope.getMinimum(0) == convertedEnvelope.getMinimum(0));
assertTrue(expectedEnvelope.getMinimum(1) == convertedEnvelope.getMinimum(1));
assertTrue(expectedEnvelope.getMaximum(0) == convertedEnvelope.getMaximum(0));
assertTrue(expectedEnvelope.getMaximum(1) == convertedEnvelope.getMaximum(1));
assertRasterEquals(expectedCvg, convertedCvg);
}
@Test
@org.junit.Ignore("Fails randomly because of GeoTIFF reader not found.")
public void testConversionBase64() throws UnconvertibleObjectException, IOException {
final WPSObjectConverter<Reference, GridCoverage2D> converter = WPSConverterRegistry.getInstance().getConverter(Reference.class, GridCoverage2D.class);
final URL coverageBase64 = ReferenceToRenderedImageConverterTest.class.getResource("/inputs/coverage_geotiff_base64");
assertNotNull(coverageBase64);
final Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put(AbstractReferenceInputConverter.IOTYPE, WPSIO.IOType.INPUT);
parameters.put(AbstractReferenceInputConverter.ENCODING, "base64");
final Reference reference = WPSXmlFactory.buildInOutReference("1.0.0", WPSIO.IOType.INPUT);
reference.setHref(coverageBase64.toString());
reference.setMimeType("image/x-geotiff");
reference.setEncoding("base64");
final GridCoverage2D convertedCvg = converter.convert(reference, parameters);
assertNotNull(convertedCvg);
final GridCoverage2D expectedCvg = ConvertersTestUtils.makeCoverage();
final Envelope convertedEnvelope = convertedCvg.getEnvelope();
final Envelope expectedEnvelope = expectedCvg.getEnvelope();
assertTrue(Utilities.equalsIgnoreMetadata(expectedEnvelope.getCoordinateReferenceSystem(), convertedEnvelope.getCoordinateReferenceSystem()));
assertTrue(expectedEnvelope.getMinimum(0) == convertedEnvelope.getMinimum(0));
assertTrue(expectedEnvelope.getMinimum(1) == convertedEnvelope.getMinimum(1));
assertTrue(expectedEnvelope.getMaximum(0) == convertedEnvelope.getMaximum(0));
assertTrue(expectedEnvelope.getMaximum(1) == convertedEnvelope.getMaximum(1));
assertRasterEquals(expectedCvg, convertedCvg);
}
}