Mercurial > gemma
diff schema/isrs_tests.sql @ 3566:4c585b5d4fe8
Introduce hectometer based order for ranges of ISRS location codes
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Fri, 31 May 2019 20:06:27 +0200 |
parents | 453f15ba8030 |
children | 8fcabb6f971e |
line wrap: on
line diff
--- a/schema/isrs_tests.sql Fri May 31 17:43:39 2019 +0200 +++ b/schema/isrs_tests.sql Fri May 31 20:06:27 2019 +0200 @@ -15,6 +15,9 @@ -- pgTAP test script for ISRS location code types and functions -- +-- +-- Conversion from/to text +-- SELECT results_eq($$ SELECT isrs_fromText('DEBON03901G007906548') $$, @@ -34,6 +37,53 @@ , 'isrs_asText() is the inverse of isrs_fromText()'); +-- +-- Comparison operators +-- +SELECT ok( + isrs_fromText('DEBON03901G007906548') + <> isrs_fromText('DEXXX039010000006548'), + 'Different codes at equal hectometre do not equal by default'); + +SELECT ok( + isrs_fromText('DEBON03901G007906548') + ~= isrs_fromText('DEXXX039010000006548') + AND isrs_fromText('DEBON03901G007906548') + >~= isrs_fromText('DEXXX039010000006548') + AND isrs_fromText('DEBON03901G007906548') + <~= isrs_fromText('DEXXX039010000006548'), + 'isrs_ops: Different codes at equal hectometre compare as equal'); + +SELECT ok( + isrs_fromText('DEBON03901G007906549') + >~ isrs_fromText('DEXXX039010000006548') + AND isrs_fromText('DEBON03901G007906549') + >~= isrs_fromText('DEXXX039010000006548') + AND isrs_fromText('DEXXX039010000006547') + <~= isrs_fromText('DEBON03901G007906548') + AND isrs_fromText('DEXXX039010000006547') + <~ isrs_fromText('DEBON03901G007906548'), + 'isrs_ops: Ordering depends on hectometre'); + +SELECT ok( + isrsrange(isrs_fromText('DEXXX039010000006540'), + isrs_fromText('DEXXX039010000006560')) + @> isrs_fromText('ATXXX000000000006550') + AND isrs_fromText('DEXXX039010000006560') + <@ isrsrange(isrs_fromText('ATXXX000000000006550'), + isrs_fromText('ATXXX000000000006570')), + 'isrsrange: ''Contains'' depends on hectometre'); + +SELECT ok( + isrsrange(isrs_fromText('DEXXX039010000006540'), + isrs_fromText('DEXXX039010000006560')) + && isrsrange(isrs_fromText('ATXXX000000000006550'), + isrs_fromText('ATXXX000000000006570')), + 'isrsrange: Overlap depends on hectometre'); + +-- +-- Geometry processing +-- SELECT throws_ok($$ SELECT ISRSrange_points(isrsrange( ('AT', 'XXX', '00001', '00000', 0)::isrs,