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,