@Test
public void parseGeometricComplex()
                        throws XMLStreamException, FactoryConfigurationError, IOException, UnknownCRSException {

    GMLStreamReader gmlReader = getParser( "GeometricComplex.gml" );
    XMLStreamReader xmlReader = gmlReader.getXMLReader();
    Assert.assertEquals( XMLStreamConstants.START_ELEMENT, xmlReader.getEventType() );
    Assert.assertEquals( new QName( "http://www.opengis.net/gml", "GeometricComplex" ), xmlReader.getName() );
    CompositeGeometry<?> compositeGeometry = (CompositeGeometry<?>) gmlReader.readGeometry();
    Assert.assertEquals( XMLStreamConstants.END_ELEMENT, xmlReader.getEventType() );
    Assert.assertEquals( new QName( "http://www.opengis.net/gml", "GeometricComplex" ), xmlReader.getName() );
    Solid solid = (Solid) compositeGeometry.get( 0 );
    Assert.assertEquals( SolidType.Solid, solid.getSolidType() );
    Assert.assertEquals( CRSManager.lookup( "EPSG:31466" ), solid.getCoordinateSystem() );
    Assert.assertEquals( 8, solid.getExteriorSurface().getPatches().size() );
    Assert.assertEquals( 2568786.096,
                         ( (PolygonPatch) solid.getExteriorSurface().getPatches().get( 7 ) ).getExteriorRing().getStartPoint().get0(),
                         DELTA );
    Assert.assertEquals( 5662881.386,
                         ( (PolygonPatch) solid.getExteriorSurface().getPatches().get( 7 ) ).getExteriorRing().getStartPoint().get1(),
                         DELTA );
    Assert.assertEquals( 60.3842642785516,
                         ( (PolygonPatch) solid.getExteriorSurface().getPatches().get( 7 ) ).getExteriorRing().getStartPoint().get2(),
                         DELTA );
    Assert.assertEquals( 2568786.096,
                         ( (PolygonPatch) solid.getExteriorSurface().getPatches().get( 7 ) ).getExteriorRing().getEndPoint().get0(),
                         DELTA );
    Assert.assertEquals( 5662881.386,
                         ( (PolygonPatch) solid.getExteriorSurface().getPatches().get( 7 ) ).getExteriorRing().getEndPoint().get1(),
                         DELTA );
    Assert.assertEquals( 60.3842642785516,
                         ( (PolygonPatch) solid.getExteriorSurface().getPatches().get( 7 ) ).getExteriorRing().getEndPoint().get2(),
                         DELTA );
    Curve curve = (Curve) compositeGeometry.get( 1 );
    Assert.assertEquals( 2, curve.getCurveSegments().size() );
    Assert.assertEquals( ARC, curve.getCurveSegments().get( 0 ).getSegmentType() );
    Assert.assertEquals( LINE_STRING_SEGMENT, curve.getCurveSegments().get( 1 ).getSegmentType() );
}