@@ -13,10 +13,12 @@ private let pi: Double = Double.pi
1313private func rad< T: BinaryFloatingPoint > ( fromDegree d: T ) -> T {
1414 return d * T. pi / 180
1515}
16+
1617/// - Returns: radians converted to degrees
1718private func deg< T: BinaryFloatingPoint > ( fromRadian r: T ) -> T {
1819 return r * 180 / T. pi
1920}
21+
2022/// - Returns: meters converted to nautical miles
2123private func nm< T: BinaryFloatingPoint > ( fromMeters m: T ) -> T {
2224 return m / 1852.0
@@ -39,7 +41,17 @@ private extension BinaryFloatingPoint {
3941}
4042
4143final class VincentyTests : XCTestCase {
42-
44+
45+ /// example code as shown in the Readme.md
46+ func testRreadmeExamples( ) {
47+ do {
48+ let d = try ! vincenty. distance ( ( lat: Double . pi / 2 , lon: 0 ) , ( lat: - Double . pi / 2 , lon: 0 ) )
49+ }
50+ do {
51+ let ( d, ( a, b) ) = try ! solveInverse ( ( lat: Double . pi / 2 , lon: 0 ) , ( lat: - Double . pi / 2 , lon: 0 ) )
52+ }
53+
54+ }
4355
4456 func testShortcutForEqualPoints( ) {
4557 // make sure, points are equal and not identical, to check if the shortcut works correctly
@@ -98,7 +110,7 @@ final class VincentyTests: XCTestCase {
98110 x = ( lat: 0 . asRad, lon: - 0.5 . asRad)
99111 y = ( lat: 0 . asRad, lon: 0.5 . asRad)
100112 XCTAssertEqual ( try ! vincenty. solveInverse ( x, y) . distance, 111319.491 , accuracy: delta)
101-
113+
102114 //Test Cardinals
103115 x = ( lat: 0.0 , lon: 0.0 )
104116 y = ( lat: pi/ 2 , lon: 0.0 ) //north pole
@@ -110,23 +122,23 @@ final class VincentyTests: XCTestCase {
110122 ( _, azimuths: ( initialTrueTrack, finalTrueTrack) ) = try ! vincenty. solveInverse ( x, y)
111123 XCTAssertEqual ( initialTrueTrack, Double . pi/ 2 , accuracy: delta)
112124 XCTAssertEqual ( finalTrueTrack, Double . pi/ 2 , accuracy: delta)
113-
125+
114126 y = ( lat: - pi/ 2 , lon: 0.0 ) //south pole
115127 ( _, azimuths: ( initialTrueTrack, finalTrueTrack) ) = try ! vincenty. solveInverse ( x, y)
116128 XCTAssertEqual ( initialTrueTrack, Double . pi, accuracy: delta)
117129 XCTAssertEqual ( finalTrueTrack, Double . pi, accuracy: delta)
118-
130+
119131 y = ( lat: 0.0 , lon: - pi/ 2 ) //west
120132 ( _, azimuths: ( initialTrueTrack, finalTrueTrack) ) = try ! vincenty. solveInverse ( x, y)
121133 XCTAssertEqual ( initialTrueTrack, 3 * Double. pi/ 2 , accuracy: delta)
122134 XCTAssertEqual ( finalTrueTrack, 3 * Double. pi/ 2 , accuracy: delta)
123-
135+
124136 }
125-
137+
126138 /// Test against A330 FMS
127139 let fmsAcc = 0.49 //within half nm or degree
128140 func testNavigationAccurracy( ) {
129-
141+
130142 var x : ( lat: Double , lon: Double ) , y : ( lat: Double , lon: Double )
131143
132144 //Urabi to Bumat
@@ -135,8 +147,8 @@ final class VincentyTests: XCTestCase {
135147 var ( distance, azimuths: ( initialTrueTrack, _) ) = try ! vincenty. solveInverse ( x, y)
136148 XCTAssertEqual ( distance. inNm, 197 , accuracy: fmsAcc)
137149 XCTAssertEqual ( initialTrueTrack. asDegrees, 058 , accuracy: fmsAcc)
138-
139-
150+
151+
140152 //Dacey is N5933.6 / W12604.5
141153 x = ( lat: ( 59 + 33.6 / 60 ) . asRad, lon: - ( 126 + 04.5 / 60 ) . asRad)
142154 //MCT is N5321.4 / W00215.7
@@ -149,9 +161,9 @@ final class VincentyTests: XCTestCase {
149161 print ( " vincenty: \( distance) , geodesic: \( gDist) , delta: \( fabs ( distance - gDist) ) " )
150162 XCTAssertEqual ( distance, gDist, accuracy: 1e-3 )
151163 XCTAssertEqual ( initialTrueTrack. asDegrees, 036 , accuracy: fmsAcc)
152-
164+
153165 }
154-
166+
155167
156168 /// use geodesic as reference and test vincenty distance.
157169 func testAgainstGeodesic( ) {
0 commit comments