diff --git a/src/GeoTools-Tests/AbsoluteCoordinatesTest.class.st b/src/GeoTools-Tests/AbsoluteCoordinatesTest.class.st index 8b713f6..2de47c4 100644 --- a/src/GeoTools-Tests/AbsoluteCoordinatesTest.class.st +++ b/src/GeoTools-Tests/AbsoluteCoordinatesTest.class.st @@ -305,3 +305,40 @@ AbsoluteCoordinatesTest >> testRandom [ coordinates := AbsoluteCoordinates random. self assert: coordinates isNotEmpty ] + +{ #category : #tests } +AbsoluteCoordinatesTest >> testReadLatitude [ + + self assert: (AbsoluteCoordinates readLatitudeString: nil) isNil. + + self assert: (AbsoluteCoordinates readLatitudeString: 'N 0°0.0' ) equals: 0.0. + + self assert: (AbsoluteCoordinates readLatitudeString: 'N 1°0.0' ) equals: 1.0. + self assert: (AbsoluteCoordinates readLatitudeString: 'S 1°0.0' ) equals: -1.0. + + self assert: (AbsoluteCoordinates readLatitudeString: 'N 1°0''0"' ) equals: 1.0. + self assert: (AbsoluteCoordinates readLatitudeString: 'S 1°0''0"' ) equals: -1.0. + self assert: (AbsoluteCoordinates readLatitudeString: 'N1°0''0"' ) equals: 1.0. + self assert: (AbsoluteCoordinates readLatitudeString: 'S1°0''0"' ) equals: -1.0. + self assert: (AbsoluteCoordinates readLatitudeString: 'N 1° 0'' 0" ' ) equals: 1.0. + self assert: (AbsoluteCoordinates readLatitudeString: 'S 1° 0 '' 0 " ' ) equals: -1.0. + self assert: (AbsoluteCoordinates readLatitudeString: 'N 49° 36.99') equals: 49.6165. +] + +{ #category : #tests } +AbsoluteCoordinatesTest >> testReadLongitude [ + self assert: (AbsoluteCoordinates readLongitudeString: nil) isNil. + + self assert: (AbsoluteCoordinates readLongitudeString: 'E 0°0.0' ) equals: 0.0. + + self assert: (AbsoluteCoordinates readLongitudeString: 'E 1°0.0' ) equals: 1.0. + self assert: (AbsoluteCoordinates readLongitudeString: 'W 1°0.0' ) equals: -1.0. + + self assert: (AbsoluteCoordinates readLongitudeString: 'E 1°0''0"' ) equals: 1.0. + self assert: (AbsoluteCoordinates readLongitudeString: 'W 1°0''0"' ) equals: -1.0. + + self assert: (AbsoluteCoordinates readLongitudeString: 'E1°0''0"' ) equals: 1.0. + self assert: (AbsoluteCoordinates readLongitudeString: 'W1°0''0"' ) equals: -1.0. + self assert: (AbsoluteCoordinates readLongitudeString: 'E 1° 0'' 0" ' ) equals: 1.0. + self assert: (AbsoluteCoordinates readLongitudeString: 'W 1° 0 '' 0 " ' ) equals: -1.0. +] diff --git a/src/GeoTools/AbsoluteCoordinates.class.st b/src/GeoTools/AbsoluteCoordinates.class.st index 20ec91c..ad43cd6 100644 --- a/src/GeoTools/AbsoluteCoordinates.class.st +++ b/src/GeoTools/AbsoluteCoordinates.class.st @@ -330,6 +330,8 @@ AbsoluteCoordinates class >> readDMDString: aString [ _string := _string removeChar: $E. _string := _string removeChar: $W. _string := _string removeChar: $O. + _string := self in: _string removeChar: Character space. + _string := self in: _string removeChar: Character tab. rs := ReadStream on: _string. degree := (rs upTo: self charDegree) asNumber. @@ -365,6 +367,10 @@ AbsoluteCoordinates class >> readDMSString: aString [ _string := _string removeChar: $W. _string := _string removeChar: $O. + _string := self in: _string removeChar: Character space. + _string := self in: _string removeChar: Character tab. + + rs := ReadStream on: _string. degree := (rs upTo: self charDegree) ifNotEmpty: [ :e | e asNumber ] ifEmpty: [ 0 ]. minute := (rs upTo: self charMinute) ifNotEmpty: [ :e | e asNumber ] ifEmpty: [ 0 ].