Skip to content

Commit

Permalink
typo in wkt validatie
Browse files Browse the repository at this point in the history
  • Loading branch information
davidvlaminck committed Feb 3, 2022
1 parent 9161a84 commit 3415b10
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 30 deletions.
53 changes: 27 additions & 26 deletions UnitTests/OTLFieldTests/WKTValidatorTests.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,34 +7,35 @@
class ComplexDataTypeFieldTests(unittest.TestCase):
def test_WKT_valid(self):
with self.subTest('testen POINT'):
self.assertTrue(WKTValidator.validate_wkt("POINT(1.0 2.0)"))
self.assertTrue(WKTValidator.validate_wkt("POINT(1 2)"))
self.assertTrue(WKTValidator.validate_wkt("POINT(12345.678901 12345.678902)"))
self.assertTrue(WKTValidator.validate_wkt("POINT Z(1.0 2.0 3.0)"))
self.assertTrue(WKTValidator.validate_wkt("POINT Z(1 2 3)"))
self.assertFalse(WKTValidator.validate_wkt("POINT Z(1,0 2,0 3,0)"))
self.assertFalse(WKTValidator.validate_wkt("POINT Z(1 2)"))
self.assertFalse(WKTValidator.validate_wkt("POINT(1 2 3)"))
self.assertFalse(WKTValidator.validate_wkt("POINT(-1 -2)"))
self.assertFalse(WKTValidator.validate_wkt("punt Z(1 2)"))
self.assertTrue(WKTValidator.validate_wkt("POINT (1.0 2.0)"))
self.assertTrue(WKTValidator.validate_wkt("POINT (1 2)"))
self.assertTrue(WKTValidator.validate_wkt("POINT (12345.678901 12345.678902)"))
self.assertTrue(WKTValidator.validate_wkt("POINT Z (1.0 2.0 3.0)"))
self.assertTrue(WKTValidator.validate_wkt("POINT Z (1 2 3)"))
self.assertFalse(WKTValidator.validate_wkt("POINT Z (1,0 2,0 3,0)"))
self.assertFalse(WKTValidator.validate_wkt("POINT Z (1 2)"))
self.assertFalse(WKTValidator.validate_wkt("POINT (1 2 3)"))
self.assertFalse(WKTValidator.validate_wkt("POINT(1 2)"))
self.assertFalse(WKTValidator.validate_wkt("POINT (-1 -2)"))
self.assertFalse(WKTValidator.validate_wkt("punt Z (1 2)"))

with self.subTest('testen LINESTRING'):
self.assertTrue(WKTValidator.validate_wkt("LINESTRING(1.0 2.0, 3.0 4.0)"))
self.assertTrue(WKTValidator.validate_wkt("LINESTRING(1 2, 3 4)"))
self.assertTrue(WKTValidator.validate_wkt("LINESTRING Z(1.0 2.0 3.0, 4.0 5.0 6.0)"))
self.assertTrue(WKTValidator.validate_wkt("LINESTRING Z(1.0 2.0 3.0, 4.0 5.0 6.0, 7.0 8.0 9.0)"))
self.assertTrue(WKTValidator.validate_wkt("LINESTRING Z(1 2 3, 4 5 6, 7 8 9)"))
self.assertFalse(WKTValidator.validate_wkt("LINESTRING(1,0 2,0, 3,0 4,0)"))
self.assertFalse(WKTValidator.validate_wkt("LINESTRING Z(1.0 2.0, 4.0 5.0)"))
self.assertFalse(WKTValidator.validate_wkt("LINESTRING(1 2 5, 3 4 6)"))
self.assertTrue(WKTValidator.validate_wkt("LINESTRING (1.0 2.0, 3.0 4.0)"))
self.assertTrue(WKTValidator.validate_wkt("LINESTRING (1 2, 3 4)"))
self.assertTrue(WKTValidator.validate_wkt("LINESTRING Z (1.0 2.0 3.0, 4.0 5.0 6.0)"))
self.assertTrue(WKTValidator.validate_wkt("LINESTRING Z (1.0 2.0 3.0, 4.0 5.0 6.0, 7.0 8.0 9.0)"))
self.assertTrue(WKTValidator.validate_wkt("LINESTRING Z (1 2 3, 4 5 6, 7 8 9)"))
self.assertFalse(WKTValidator.validate_wkt("LINESTRING (1,0 2,0, 3,0 4,0)"))
self.assertFalse(WKTValidator.validate_wkt("LINESTRING Z (1.0 2.0, 4.0 5.0)"))
self.assertFalse(WKTValidator.validate_wkt("LINESTRING (1 2 5, 3 4 6)"))

with self.subTest('testen POLYGON'):
self.assertTrue(WKTValidator.validate_wkt("POLYGON((10 20, 30 40, 50 60))"))
self.assertFalse(WKTValidator.validate_wkt("POLYGON((10 20, 30 40))"))
self.assertTrue(WKTValidator.validate_wkt("POLYGON((10.0 20.0, 30.0 40.0, 50.0 60.0))"))
self.assertTrue(WKTValidator.validate_wkt("POLYGON((10.0 20.0, 30.0 40.0, 50.0 60.0, 70.0 80.0))"))
self.assertTrue(WKTValidator.validate_wkt("POLYGON Z((10.0 20.0 1, 30.0 40.0 2, 50.0 60.0 3))"))
self.assertFalse(WKTValidator.validate_wkt("POLYGON Z((10.0 20.0, 30.0 40.0 2, 50.0 60.0))"))
self.assertFalse(WKTValidator.validate_wkt("POLYGON((10.0 20.0 1, 30.0 40.0 2, 50.0 60.0 3))"))
self.assertTrue(WKTValidator.validate_wkt("POLYGON ((10 20, 30 40, 50 60))"))
self.assertFalse(WKTValidator.validate_wkt("POLYGON ((10 20, 30 40))"))
self.assertTrue(WKTValidator.validate_wkt("POLYGON ((10.0 20.0, 30.0 40.0, 50.0 60.0))"))
self.assertTrue(WKTValidator.validate_wkt("POLYGON ((10.0 20.0, 30.0 40.0, 50.0 60.0, 70.0 80.0))"))
self.assertTrue(WKTValidator.validate_wkt("POLYGON Z ((10.0 20.0 1, 30.0 40.0 2, 50.0 60.0 3))"))
self.assertFalse(WKTValidator.validate_wkt("POLYGON Z ((10.0 20.0, 30.0 40.0 2, 50.0 60.0))"))
self.assertFalse(WKTValidator.validate_wkt("POLYGON ((10.0 20.0 1, 30.0 40.0 2, 50.0 60.0 3))"))
self.assertTrue(
WKTValidator.validate_wkt("POLYGON((10.0 20.0, 30.0 40.0, 50.0 60.0), (110.0 120.0, 130.0 140.0, 150.0 160.0))"))
WKTValidator.validate_wkt("POLYGON ((10.0 20.0, 30.0 40.0, 50.0 60.0), (110.0 120.0, 130.0 140.0, 150.0 160.0))"))
2 changes: 1 addition & 1 deletion src/OTLMOW/OTLModel/BaseClasses/WKTField.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def validate(value, attribuut):
raise TypeError(f'expecting string in {attribuut.naam}')
if not WKTValidator.validate_wkt(value):
raise ValueError(f'{value} is not a valid WKT string for {attribuut.naam}')
geo_type = value.split('(')[0]
geo_type = value.split(' (')[0]
if geo_type not in attribuut.owner._geometry_types:
raise TypeError(f'expecting {attribuut.constraints} in {attribuut.naam}')
return True
Expand Down
6 changes: 3 additions & 3 deletions src/OTLMOW/OTLModel/BaseClasses/WKTValidator.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ class WKTValidator:
def validate_wkt(cls, input_string: str) -> bool:
if not '(' in input_string or not ')' in input_string:
return False
geo_type = input_string.split('(')[0]
geo_type = input_string.split(' (')[0]

if geo_type not in ('POINT', 'POINT Z', 'LINESTRING', 'LINESTRING Z', 'POLYGON', 'POLYGON Z'):
return False

if geo_type.startswith('POLYGON'):
punten = input_string.split('((')[1]
punten = input_string.split(' ((')[1]
if punten[-2:] != '))':
return False
punten = punten[:-2]
Expand All @@ -25,7 +25,7 @@ def validate_wkt(cls, input_string: str) -> bool:
puntenlijst = punten.split(', ')
return WKTValidator.validate_puntenlijst(geo_type, puntenlijst)
else:
punten = input_string.split('(')[1]
punten = input_string.split(' (')[1]
if punten[-1] != ')':
return False
punten = punten[:-1]
Expand Down

0 comments on commit 3415b10

Please sign in to comment.