Skip to content

Commit f1be896

Browse files
Merge pull request #29 from ThalesGroup/dev_parsing
reading lat/lon more robust + tests
2 parents a04fe01 + 4e28339 commit f1be896

2 files changed

Lines changed: 43 additions & 0 deletions

File tree

src/GeoTools-Tests/AbsoluteCoordinatesTest.class.st

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,3 +305,40 @@ AbsoluteCoordinatesTest >> testRandom [
305305
coordinates := AbsoluteCoordinates random.
306306
self assert: coordinates isNotEmpty
307307
]
308+
309+
{ #category : #tests }
310+
AbsoluteCoordinatesTest >> testReadLatitude [
311+
312+
self assert: (AbsoluteCoordinates readLatitudeString: nil) isNil.
313+
314+
self assert: (AbsoluteCoordinates readLatitudeString: 'N 0°0.0' ) equals: 0.0.
315+
316+
self assert: (AbsoluteCoordinates readLatitudeString: 'N 1°0.0' ) equals: 1.0.
317+
self assert: (AbsoluteCoordinates readLatitudeString: 'S 1°0.0' ) equals: -1.0.
318+
319+
self assert: (AbsoluteCoordinates readLatitudeString: 'N 1°0''0"' ) equals: 1.0.
320+
self assert: (AbsoluteCoordinates readLatitudeString: 'S 1°0''0"' ) equals: -1.0.
321+
self assert: (AbsoluteCoordinates readLatitudeString: 'N1°0''0"' ) equals: 1.0.
322+
self assert: (AbsoluteCoordinates readLatitudeString: 'S1°0''0"' ) equals: -1.0.
323+
self assert: (AbsoluteCoordinates readLatitudeString: 'N 1° 0'' 0" ' ) equals: 1.0.
324+
self assert: (AbsoluteCoordinates readLatitudeString: 'S 1° 0 '' 0 " ' ) equals: -1.0.
325+
self assert: (AbsoluteCoordinates readLatitudeString: 'N 49° 36.99') equals: 49.6165.
326+
]
327+
328+
{ #category : #tests }
329+
AbsoluteCoordinatesTest >> testReadLongitude [
330+
self assert: (AbsoluteCoordinates readLongitudeString: nil) isNil.
331+
332+
self assert: (AbsoluteCoordinates readLongitudeString: 'E 0°0.0' ) equals: 0.0.
333+
334+
self assert: (AbsoluteCoordinates readLongitudeString: 'E 1°0.0' ) equals: 1.0.
335+
self assert: (AbsoluteCoordinates readLongitudeString: 'W 1°0.0' ) equals: -1.0.
336+
337+
self assert: (AbsoluteCoordinates readLongitudeString: 'E 1°0''0"' ) equals: 1.0.
338+
self assert: (AbsoluteCoordinates readLongitudeString: 'W 1°0''0"' ) equals: -1.0.
339+
340+
self assert: (AbsoluteCoordinates readLongitudeString: 'E1°0''0"' ) equals: 1.0.
341+
self assert: (AbsoluteCoordinates readLongitudeString: 'W1°0''0"' ) equals: -1.0.
342+
self assert: (AbsoluteCoordinates readLongitudeString: 'E 1° 0'' 0" ' ) equals: 1.0.
343+
self assert: (AbsoluteCoordinates readLongitudeString: 'W 1° 0 '' 0 " ' ) equals: -1.0.
344+
]

src/GeoTools/AbsoluteCoordinates.class.st

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,8 @@ AbsoluteCoordinates class >> readDMDString: aString [
330330
_string := _string removeChar: $E.
331331
_string := _string removeChar: $W.
332332
_string := _string removeChar: $O.
333+
_string := self in: _string removeChar: Character space.
334+
_string := self in: _string removeChar: Character tab.
333335
334336
rs := ReadStream on: _string.
335337
degree := (rs upTo: self charDegree) asNumber.
@@ -365,6 +367,10 @@ AbsoluteCoordinates class >> readDMSString: aString [
365367
_string := _string removeChar: $W.
366368
_string := _string removeChar: $O.
367369
370+
_string := self in: _string removeChar: Character space.
371+
_string := self in: _string removeChar: Character tab.
372+
373+
368374
rs := ReadStream on: _string.
369375
degree := (rs upTo: self charDegree) ifNotEmpty: [ :e | e asNumber ] ifEmpty: [ 0 ].
370376
minute := (rs upTo: self charMinute) ifNotEmpty: [ :e | e asNumber ] ifEmpty: [ 0 ].

0 commit comments

Comments
 (0)