/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.test; import static org.junit.Assert.*; import org.junit.Test; import org.w3c.dom.Document; /** * Test for 3D BBOXes in App-schema Support for offline as well as online * testing * * @author Niels Charlier */ public class Reprojection3DTest extends AbstractAppSchemaTestSupport { @Override protected BBox3DMockData createTestData() { return new BBox3DMockData(); } /** * Tests re-projection of NonFeatureTypeProxy. * */ @Test public void testReprojection() { Document doc = getAsDOM("wfs?request=GetFeature&version=1.1.0&typename=gsml:MappedFeature&srsName=EPSG:4891"); LOGGER.info("WFS GetFeature&typename=gsml:MappedFeature response:\n" + prettyString(doc)); assertEquals( "3", evaluate( "//gsml:MappedFeature[@gml:id='gsml.mappedfeature.mf1']/gsml:shape/gml:Point/@srsDimension", doc)); assertEquals( "http://www.opengis.net/gml/srs/epsg.xml#4891", evaluate( "//gsml:MappedFeature[@gml:id='gsml.mappedfeature.mf1']/gsml:shape/gml:Point/@srsName", doc)); String point = evaluate( "//gsml:MappedFeature[@gml:id='gsml.mappedfeature.mf1']/gsml:shape/gml:Point/gml:pos", doc); assertTrue(Double.parseDouble(point.split(" ")[2]) - (112 - 7.91243825667) < 0.00001); point = evaluate( "//gsml:MappedFeature[@gml:id='gsml.mappedfeature.mf2']/gsml:shape/gml:Point/gml:pos", doc); assertTrue(Double.parseDouble(point.split(" ")[2]) - (7 - 7.87193142436) < 0.00001); point = evaluate( "//gsml:MappedFeature[@gml:id='gsml.mappedfeature.mf3']/gsml:shape/gml:Point/gml:pos", doc); assertTrue(Double.parseDouble(point.split(" ")[2]) - (5 - 7.97579399217) < 0.00001); point = evaluate( "//gsml:MappedFeature[@gml:id='gsml.mappedfeature.mf4']/gsml:shape/gml:Point/gml:pos", doc); assertTrue(Double.parseDouble(point.split(" ")[2]) - (88 - 7.82161881682) < 0.00001); point = evaluate( "//gsml:MappedFeature[@gml:id='gsml.mappedfeature.mf5']/gsml:shape/gml:LineString/gml:posList", doc); String[] coords = point.split(" "); assertTrue(Double.parseDouble(coords[2]) - (112 - 7.91243825667) < 0.00001); assertTrue(Double.parseDouble(coords[5]) - (7 - 7.87193142436) < 0.00001); assertTrue(Double.parseDouble(coords[8]) - (5 - 7.97579399217) < 0.00001); assertTrue(Double.parseDouble(coords[11]) - (88 - 7.82161881682) < 0.00001); } }