/// <summary> /// Tests execution for multiple graphs. /// </summary> /// <param name="metadataPreservation">Indicates whether the metadata should be preserved.</param> private void TestExecuteForGraphs(Boolean metadataPreservation) { // empty graph IGeometryGraph sourceGraph = new GeometryFactory(ProjectedCoordinateReferenceSystems.HD72_EOV).CreateGraph(); IDictionary <OperationParameter, Object> parameters = new Dictionary <OperationParameter, Object>(); parameters.Add(ReferenceOperationParameters.TargetReferenceSystem, ProjectedCoordinateReferenceSystems.WGS84_WorldMercator); parameters.Add(CommonOperationParameters.MetadataPreservation, metadataPreservation); GraphReferenceTransformation transformation = new GraphReferenceTransformation(sourceGraph, parameters); transformation.Execute(); IGeometryGraph resultGraph = transformation.Result as IGeometryGraph; Assert.AreEqual(0, resultGraph.VertexCount); Assert.AreEqual(0, resultGraph.EdgeCount); Assert.AreEqual(sourceGraph.Metadata, resultGraph.Metadata); // graph with points and edges Coordinate[] coordinates = new Coordinate[] { new Coordinate(10, 10), new Coordinate(20, 20), new Coordinate(30, 30) }; sourceGraph = new GeometryFactory(ProjectedCoordinateReferenceSystems.HD72_EOV).CreateGraph(); IGraphVertex[] vertices = coordinates.Select(coordinate => sourceGraph.AddVertex(coordinate)).ToArray(); sourceGraph.AddEdge(vertices[0], vertices[1]); sourceGraph.AddEdge(vertices[1], vertices[2]); transformation = new GraphReferenceTransformation(sourceGraph, parameters); transformation.Execute(); resultGraph = transformation.Result as IGeometryGraph; Assert.AreEqual(3, resultGraph.VertexCount); Assert.AreEqual(2, resultGraph.EdgeCount); Assert.AreEqual(1, resultGraph.OutEdges(resultGraph.Vertices[0]).Count); Assert.AreEqual(resultGraph.Vertices[1], resultGraph.OutEdges(resultGraph.Vertices[0]).First().Target); Assert.AreEqual(1, resultGraph.OutEdges(resultGraph.Vertices[1]).Count); Assert.AreEqual(resultGraph.Vertices[2], resultGraph.OutEdges(resultGraph.Vertices[1]).First().Target); for (Int32 vertexIndex = 0; vertexIndex < resultGraph.VertexCount; vertexIndex++) { GeoCoordinate sourceGeoCoordinate = ProjectedCoordinateReferenceSystems.HD72_EOV.Projection.Reverse(coordinates[vertexIndex]); GeoCoordinate expectedGeoCoordinate = GeographicTransformations.HD72_WGS84_V1.Forward(sourceGeoCoordinate); Coordinate expectedCoordinate = ProjectedCoordinateReferenceSystems.WGS84_WorldMercator.Projection.Forward(expectedGeoCoordinate); Assert.AreEqual(expectedCoordinate, resultGraph.Vertices[vertexIndex].Coordinate); } // not supported geometry Mock <IGeometry> geometryMock = new Mock <IGeometry>(MockBehavior.Loose); geometryMock.Setup(geometry => geometry.Factory).Returns(() => new GeometryFactory(ProjectedCoordinateReferenceSystems.HD72_EOV)); geometryMock.Setup(geometry => geometry.ReferenceSystem).Returns(() => ProjectedCoordinateReferenceSystems.HD72_EOV); transformation = new GraphReferenceTransformation(geometryMock.Object, parameters); Assert.Throws <InvalidOperationException>(() => transformation.Execute()); }