From ab863f5e8751fde08d823e09d287ebd3e3262a8a Mon Sep 17 00:00:00 2001 From: "eric.lepors" Date: Wed, 19 Nov 2025 09:04:03 +0000 Subject: [PATCH 1/2] reading lat/lon more robust + tests --- .../AbsoluteCoordinatesTest.class.st | 47 +++++++++++++++++++ src/GeoTools/AbsoluteCoordinates.class.st | 6 +++ 2 files changed, 53 insertions(+) diff --git a/src/GeoTools-Tests/AbsoluteCoordinatesTest.class.st b/src/GeoTools-Tests/AbsoluteCoordinatesTest.class.st index 8b713f6..6d85e8b 100644 --- a/src/GeoTools-Tests/AbsoluteCoordinatesTest.class.st +++ b/src/GeoTools-Tests/AbsoluteCoordinatesTest.class.st @@ -305,3 +305,50 @@ AbsoluteCoordinatesTest >> testRandom [ coordinates := AbsoluteCoordinates random. self assert: coordinates isNotEmpty ] + +{ #category : #tests } +AbsoluteCoordinatesTest >> testReadDMC [ + + self assert: (AbsoluteCoordinates readLatitudeString: nil) isNil. + + self assert: (AbsoluteCoordinates readLatitudeString: 'N 0°0.0' ) equals: AbsoluteCoordinates zeroLatLon latitude . + + +] + +{ #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 ]. From 4e28339cd8777b1c3b02d4c5750091eb0c73ded0 Mon Sep 17 00:00:00 2001 From: "eric.lepors" Date: Wed, 19 Nov 2025 09:09:42 +0000 Subject: [PATCH 2/2] removing invalide test --- src/GeoTools-Tests/AbsoluteCoordinatesTest.class.st | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/GeoTools-Tests/AbsoluteCoordinatesTest.class.st b/src/GeoTools-Tests/AbsoluteCoordinatesTest.class.st index 6d85e8b..2de47c4 100644 --- a/src/GeoTools-Tests/AbsoluteCoordinatesTest.class.st +++ b/src/GeoTools-Tests/AbsoluteCoordinatesTest.class.st @@ -306,16 +306,6 @@ AbsoluteCoordinatesTest >> testRandom [ self assert: coordinates isNotEmpty ] -{ #category : #tests } -AbsoluteCoordinatesTest >> testReadDMC [ - - self assert: (AbsoluteCoordinates readLatitudeString: nil) isNil. - - self assert: (AbsoluteCoordinates readLatitudeString: 'N 0°0.0' ) equals: AbsoluteCoordinates zeroLatLon latitude . - - -] - { #category : #tests } AbsoluteCoordinatesTest >> testReadLatitude [