File tree 2 files changed +28
-5
lines changed 2 files changed +28
-5
lines changed Original file line number Diff line number Diff line change @@ -24,15 +24,17 @@ extension GPXTrack: GPXElement {
24
24
gpxDescription = xml [ " desc " ] . value
25
25
26
26
segments = try xml
27
- . all ( withValue: Segment . xmlTag) ?
27
+ . children
28
+ . filter { $0. name == Segment . xmlTag }
28
29
. map { try Segment ( xml: $0) }
29
- ?? [ ]
30
30
}
31
31
32
32
var xmlElement : AEXMLElement {
33
33
let element = AEXMLElement ( name: Self . xmlTag)
34
34
element. addChild ( name: " name " , value: name)
35
- element. addChild ( name: " desc " , value: gpxDescription)
35
+ if let desc = gpxDescription {
36
+ element. addChild ( name: " desc " , value: desc)
37
+ }
36
38
element. addChildren ( segments. map ( \. xmlElement) )
37
39
return element
38
40
}
@@ -46,7 +48,7 @@ extension GPXTrack.Segment: GPXElement {
46
48
}
47
49
48
50
init ( xml: AEXMLElement ) throws {
49
- let pointChildren = xml. all ( withValue : GPXTrack . Point. xmlTag) ?? [ ]
51
+ let pointChildren = xml. children . filter { $0 . name == GPXTrack . Point. xmlTag }
50
52
trackPoints = try pointChildren. map { try GPXTrack . Point ( xml: $0) }
51
53
}
52
54
Original file line number Diff line number Diff line change 36
36
XCTAssertEqual ( gpxWpt. elevation ?? 0.0 , knownTraits. elev, accuracy: 0.0001 )
37
37
}
38
38
39
- //Tracks
39
+ //Tracks (number of segments)
40
40
let knownTracks : [ String : Int ] = [
41
41
" Barrett Spur 1 " : 2 ,
42
42
" Barrett Spur 2 " : 3
43
43
]
44
+ let trackPointCounts : [ String : Int ] = [
45
+ " Barrett Spur 1 " : 99 ,
46
+ " Barrett Spur 2 " : 98
47
+ ]
44
48
let trackNamesKnown = Set ( knownTracks. keys)
45
49
let trackNamesFound = Set ( document. tracks. map ( \. name) )
46
50
XCTAssertEqual ( trackNamesKnown, trackNamesFound)
47
51
52
+ // Segments
53
+ for foundTrack in document. tracks {
54
+ XCTAssertEqual ( knownTracks [ foundTrack. name] , foundTrack. segments. count)
55
+ XCTAssertEqual ( trackPointCounts [ foundTrack. name] , foundTrack. allTrackPoints ( ) . count)
56
+ }
57
+
58
+ }
59
+
60
+ func testGpxWriting( ) throws {
61
+ guard let document = getTestDocument ( name: " GPSVisSample " ) else {
62
+ XCTFail ( " Oh no! Can't open GPSVisSample file " )
63
+ return
64
+ }
65
+
66
+ let gpxString = document. gpxString ( )
67
+ print ( gpxString)
48
68
}
69
+
49
70
}
50
71
51
72
//MARK: Helper Functions
You can’t perform that action at this time.
0 commit comments