예제 #1
0
 public void Constructor_StreamSettings_SetsSettingsAndMakesItReadOnly()
 {
     var settings = new GpxReaderSettings() { ReadMetadata = false };
     using (var target = new GpxReader(new MemoryStream(GpxTestData.gpx_real_file), settings)) {
         Assert.Same(settings, target.Settings);
         Assert.True(settings.IsReadOnly);
     }
 }
예제 #2
0
 public void Constructor_StringSettings_SetsSettingsAndMakesItReadOnly()
 {
     string path = "../../src/Tests.SpatialLite.Gps/Data/Gpx/gpx-real-file.gpx";
     var settings = new GpxReaderSettings() { ReadMetadata = false };
     using (var target = new GpxReader(path, settings)) {
         Assert.Same(settings, target.Settings);
         Assert.True(settings.IsReadOnly);
     }
 }
예제 #3
0
        public void Dispose_ClosesOutputStreamIfWritingToStream()
        {
            var stream = new MemoryStream(GpxTestData.gpx_real_file);

            var target = new GpxReader(stream, new GpxReaderSettings() { ReadMetadata = false });
            target.Dispose();

            Assert.False(stream.CanRead);
        }
예제 #4
0
        /// <summary>
        /// Loads Gpx data from a file.
        /// </summary>
        /// <param name="path">Path to the GPX file.</param>
        /// <returns>GpxDocument instance with data from GPX file</returns>
        public static GpxDocument Load(string path)
        {
            GpxDocument result = new GpxDocument();

            using (GpxReader reader = new GpxReader(path, new GpxReaderSettings() { ReadMetadata = true })) {
                result.LoadFromReader(reader);
            }

            return result;
        }
예제 #5
0
        public void Load_IGpxReader_LoadsEntitiesFromReader()
        {
            using (var reader = new GpxReader(new MemoryStream(GpxTestData.gpx_real_file), new GpxReaderSettings() { ReadMetadata = true })) {
                var target = GpxDocument.Load(reader);

                Assert.Equal(3, target.Waypoints.Count);
                Assert.Equal(2, target.Routes.Count);
                Assert.Equal(1, target.Tracks.Count);
            }
        }
예제 #6
0
        public void Dispose_ClosesOutputStreamIfWritingToFiles()
        {
            string filename = "../../src/Tests.SpatialLite.Gps/Data/Gpx/gpx-real-file.gpx";

            var target = new GpxReader(filename, new GpxReaderSettings() { ReadMetadata = false });
            target.Dispose();

            FileStream testStream = null;
            Assert.DoesNotThrow(() => testStream = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite));
            testStream.Dispose();
        }
예제 #7
0
        public void Read_ThrowsExceptionIfWaypointHasntLon()
        {
            GpxReader target = new GpxReader(new MemoryStream(GpxTestData.gpx_waypoint_without_lon), new GpxReaderSettings() { ReadMetadata = false });

            Assert.Throws<InvalidDataException>(() => target.Read());
        }
예제 #8
0
        public void Read_ParsesMultipleTracks()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_track_multiple_tracks);

            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = false });
            var result1 = target.Read() as GpxTrack;
            var result2 = target.Read() as GpxTrack;

            //segments - first track
            Assert.Equal(2, result1.Geometries.Count);
            //points in segments - first track
            Assert.Equal(3, result1.Geometries[0].Points.Count);
            Assert.Equal(2, result1.Geometries[1].Points.Count);

            //segments - second track
            Assert.Equal(1, result2.Geometries.Count);
            //points in segments - second track
            Assert.Equal(2, result2.Geometries[0].Points.Count);
        }
예제 #9
0
        public void Read_SetsTrackMetadataToNullIfReadMetadataIsFalse()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_track_with_metadata);

            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = false });
            var result = target.Read() as GpxTrack;

            Assert.Null(result.Metadata);
        }
예제 #10
0
        public void Read_SetsMetadataIfReadMetadataIsTrue()
        {
            var data = new MemoryStream(GpxTestData.gpx_waypoint_simple);
            var expectedCoordinate = new Coordinate(-71.119277, 42.438878);

            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = true });
            var result = target.Read() as GpxPoint;

            Assert.NotNull(result.Metadata);
        }
예제 #11
0
        public void Read_ReadsWaypointUnsortedMetadataAndExtension()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_waypoint_with_metadata);

            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = true });
            var result = target.Read() as GpxPoint;

            Assert.Equal(0.98, result.Metadata.MagVar);
            Assert.Equal(12.5, result.Metadata.GeoidHeight);
            Assert.Equal(GpsFix.Fix3D, result.Metadata.Fix);
            Assert.Equal(8, result.Metadata.SatellitesCount);
            Assert.Equal(5.1, result.Metadata.Hdop);
            Assert.Equal(8.1, result.Metadata.Vdop);
            Assert.Equal(10.8, result.Metadata.Pdop);
            Assert.Equal(45, result.Metadata.AgeOfDgpsData);
            Assert.Equal(124, result.Metadata.DgpsId);

            Assert.Equal("WPT Comment", result.Metadata.Comment);
            Assert.Equal("WPT Description", result.Metadata.Description);
            Assert.Equal("WPT Name", result.Metadata.Name);
            Assert.Equal("WPT Source", result.Metadata.Source);

            Assert.Equal(1, result.Metadata.Links.Count);
            GpxLink link = result.Metadata.Links.Single();
            Assert.Equal("http://www.topografix.com", link.Url.OriginalString);
            Assert.Equal("Link text", link.Text);
            Assert.Equal("plain/text", link.Type);
        }
예제 #12
0
        public void Read_ReadsAllEntitiesFromRealGpxFile()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_real_file);
            List<IGpxGeometry> parsed = new List<IGpxGeometry>();

            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = true });

            IGpxGeometry geometry = null;
            while ((geometry = target.Read()) != null) {
                parsed.Add(geometry);
            }

            // waypoints
            Assert.Equal(3, parsed.Where(g => g.GeometryType == GpxGeometryType.Waypoint).Count());

            // routes
            Assert.Equal(2, parsed.Where(g => g.GeometryType == GpxGeometryType.Route).Count());

            // tracks
            Assert.Equal(1, parsed.Where(g => g.GeometryType == GpxGeometryType.Track).Count());
        }
예제 #13
0
        public void Read_ParsesSingleRouteWithExtensions()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_route_with_metadata_and_extensions);
            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = false });

            var result = target.Read() as GpxRoute;

            Assert.Equal(3, result.Points.Count);
        }
예제 #14
0
        public void Read_DoesntSetMetadataIfReadMetadataIsFalse()
        {
            var data = new MemoryStream(GpxTestData.gpx_waypoint_with_metadata);
            var expectedCoordinate = new Coordinate(-71.119277, 42.438878);

            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = false });
            var result = target.Read() as GpxPoint;

            Assert.Null(result.Metadata);
        }
예제 #15
0
        public void Read_ParsesTrackWithMultipleSegments()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_track_2_track_segments);

            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = false });
            var result = target.Read() as GpxTrack;

            //segments
            Assert.Equal(2, result.Geometries.Count);
            //points in segments
            Assert.Equal(3, result.Geometries[0].Points.Count);
            Assert.Equal(2, result.Geometries[1].Points.Count);
        }
예제 #16
0
        public void Read_ParsesTrackWithEmptySegment()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_track_empty_track_segment);

            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = false });
            var result = target.Read() as GpxTrack;

            Assert.Equal(1, result.Geometries.Count);
            Assert.Empty(result.Geometries[0].Points);
        }
예제 #17
0
        public void Read_ParsesMultipleWaypoints()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_waypoint_multiple);

            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = false });
            GpxPoint result = null;

            int count = 0;
            while ((result = target.Read() as GpxPoint) != null) {
                count++;
            }

            Assert.Equal(3, count);
        }
예제 #18
0
        public void Read_ParsesTrackMetadata()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_track_with_metadata);

            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = true });
            var result = target.Read() as GpxTrack;

            Assert.Equal("TRK Comment", result.Metadata.Comment);
            Assert.Equal("TRK Description", result.Metadata.Description);
            Assert.Equal("TRK Name", result.Metadata.Name);
            Assert.Equal("TRK Source", result.Metadata.Source);
            Assert.Equal("TRK Type", result.Metadata.Type);

            GpxLink link = result.Metadata.Links.Single();
            Assert.Equal("http://www.topografix.com", link.Url.OriginalString);
            Assert.Equal("Link text", link.Text);
            Assert.Equal("plain/text", link.Type);
        }
예제 #19
0
        public void Read_ParsesMultipleRoutes()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_route_multiple_routes);
            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = false });

            var result1 = target.Read() as GpxRoute;
            var result2 = target.Read() as GpxRoute;

            Assert.Equal(3, result1.Points.Count);
            Assert.Equal(2, result2.Points.Count);
        }
예제 #20
0
        public void Read_ParsesTrackWithSingleSegment()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_track_single_track_segment);

            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = false });
            var result = target.Read() as GpxTrack;

            Assert.Equal(1, result.Geometries.Count);

            GpxTrackSegment segment = result.Geometries[0];
            Assert.Equal(new Coordinate(-76.638178825, 39.449270368), segment.Points[0].Position);
            Assert.Equal(new DateTime(1970, 1, 1, 7, 10, 23, DateTimeKind.Utc), segment.Points[0].Timestamp);
            Assert.Equal(new Coordinate(-76.638012528, 39.449130893), segment.Points[1].Position);
            Assert.Equal(new DateTime(1970, 1, 1, 7, 10, 28, DateTimeKind.Utc), segment.Points[1].Timestamp);
            Assert.Equal(new Coordinate(-76.637980342, 39.449098706), segment.Points[2].Position);
            Assert.Equal(new DateTime(1970, 1, 1, 7, 10, 33, DateTimeKind.Utc), segment.Points[2].Timestamp);
        }
예제 #21
0
        public void Read_ParsesSingleRoute()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_route_single_route);
            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = false });

            var result = target.Read() as GpxRoute;

            Assert.Equal(new Coordinate(-76.638178825, 39.449270368), result.Points[0].Position);
            Assert.Equal(new DateTime(1970, 1, 1, 7, 10, 23, DateTimeKind.Utc), result.Points[0].Timestamp);
            Assert.Equal(new Coordinate(-76.638012528, 39.449130893), result.Points[1].Position);
            Assert.Equal(new DateTime(1970, 1, 1, 7, 10, 28, DateTimeKind.Utc), result.Points[1].Timestamp);
            Assert.Equal(new Coordinate(-76.637980342, 39.449098706), result.Points[2].Position);
            Assert.Equal(new DateTime(1970, 1, 1, 7, 10, 33, DateTimeKind.Utc), result.Points[2].Timestamp);
        }
예제 #22
0
        public void Read_ParsesEmptyRoute()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_route_empty);
            GpxReader target = new GpxReader(data, new GpxReaderSettings() {ReadMetadata = false});

            var result = target.Read() as GpxRoute;

            Assert.Equal(0, result.Points.Count);
        }
예제 #23
0
        public void Read_ParsesTrackWithSingleSegmentAndExtensions()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_track_single_track_segment);

            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = false });
            var result = target.Read() as GpxTrack;

            Assert.Equal(1, result.Geometries.Count);

            GpxTrackSegment segment = result.Geometries[0];
        }
예제 #24
0
        public void Read_ParsesWaypointWithLatLonElevationAndTime()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_waypoint_with_metadata);
            Coordinate expectedCoordinate = new Coordinate(-71.119277, 42.438878, 44.586548);
            DateTime expectedTime = new DateTime(2001, 11, 28, 21, 5, 28, DateTimeKind.Utc);

            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = false });
            var result = target.Read() as GpxPoint;

            Assert.Equal(result.Position, expectedCoordinate);
            Assert.Equal(result.Timestamp, expectedTime);
        }
예제 #25
0
        public void Read_ParsesEmptyTrack()
        {
            MemoryStream data = new MemoryStream(GpxTestData.gpx_track_empty);

            GpxReader target = new GpxReader(data, new GpxReaderSettings() { ReadMetadata = false });
            var result = target.Read() as GpxTrack;

            Assert.Equal(0, result.Geometries.Count);
        }