public void ToGeometryMultiLineStringReturnsExpectedResult()
        {
            _fixture.CustomizePolyLineM();
            var input  = _fixture.Create <PolyLineM>();
            var result = GeometryTranslator.ToGeometryMultiLineString(input);

            Assert.Equal(input.NumberOfParts, result.Geometries.Length);
            Assert.Equal(input.NumberOfPoints, result.NumPoints);
            Assert.Equal(input.Points,
                         result
                         .Geometries
                         .SelectMany(geometry =>
                                     Enumerable
                                     .Range(0, geometry.NumPoints)
                                     .Select(index => ((NetTopologySuite.Geometries.LineString)geometry).GetPointN(index))
                                     )
                         .Select(point => new Point(point.X, point.Y))
                         .ToArray()
                         );
            var lines = new List <NetTopologySuite.Geometries.LineString>(result.Geometries.Cast <NetTopologySuite.Geometries.LineString>());

            Assert.Equal(
                input.Measures,
                lines
                .SelectMany(line =>
                            Enumerable
                            .Range(0, line.NumPoints)
                            .Select(index => line.CoordinateSequence.GetOrdinate(index, NetTopologySuite.Geometries.Ordinate.M)))
                );
        }
 public void ToGeometryMultiLineStringCanNotBeNull()
 {
     Assert.Throws <ArgumentNullException>(
         () => GeometryTranslator.ToGeometryMultiLineString(null));
 }