comparison schema/isrs_tests.sql @ 2453:00cac7890574

Improve TAP tests Reduce code duplication in one test and infer correctness of result a bit closer in another.
author Tom Gottfried <tom@intevation.de>
date Fri, 01 Mar 2019 17:26:08 +0100
parents 48495bd3081d
children 73c8762cee60
comparison
equal deleted inserted replaced
2452:0f1a915344c5 2453:00cac7890574
40 ('AT', 'XXX', '00001', '00000', 1)::isrs), 40 ('AT', 'XXX', '00001', '00000', 1)::isrs),
41 ST_SetSRID('POLYGON((0 1, 0 2, 1 2, 1 1, 0 1))'::geometry, 4326) 41 ST_SetSRID('POLYGON((0 1, 0 2, 1 2, 1 1, 0 1))'::geometry, 4326)
42 ) IS NULL, 42 ) IS NULL,
43 'ISRSrange_area returns NULL, if given area does not intersect with axis'); 43 'ISRSrange_area returns NULL, if given area does not intersect with axis');
44 44
45 SELECT ok( 45 SELECT results_eq($$
46 ST_DWithin( 46 SELECT every(ST_DWithin(
47 (SELECT geom FROM waterway.distance_marks_virtual 47 ST_Boundary(ISRSrange_area(
48 WHERE location_code = ('AT', 'XXX', '00001', '00000', 0)::isrs), 48 isrsrange(
49 ST_Boundary(ISRSrange_area(isrsrange( 49 ('AT', 'XXX', '00001', '00000', 0)::isrs,
50 ('AT', 'XXX', '00001', '00000', 0)::isrs, 50 ('AT', 'XXX', '00001', '00000', 1)::isrs),
51 ('AT', 'XXX', '00001', '00000', 1)::isrs), 51 (SELECT ST_Collect(CAST(area AS geometry))
52 (SELECT ST_Collect(CAST(area AS geometry)) 52 FROM waterway.waterway_area))),
53 FROM waterway.waterway_area))), 53 geom,
54 1) 54 1))
55 AND 55 FROM waterway.distance_marks_virtual
56 ST_DWithin( 56 WHERE location_code IN(
57 (SELECT geom FROM waterway.distance_marks_virtual 57 ('AT', 'XXX', '00001', '00000', 0)::isrs,
58 WHERE location_code = ('AT', 'XXX', '00001', '00000', 1)::isrs), 58 ('AT', 'XXX', '00001', '00000', 1)::isrs)
59 ST_Boundary(ISRSrange_area(isrsrange( 59 $$,
60 ('AT', 'XXX', '00001', '00000', 0)::isrs, 60 $$
61 ('AT', 'XXX', '00001', '00000', 1)::isrs), 61 SELECT true
62 (SELECT ST_Collect(CAST(area AS geometry)) 62 $$,
63 FROM waterway.waterway_area))),
64 1),
65 'Resulting polygon almost ST_Touches points corresponding to stretch'); 63 'Resulting polygon almost ST_Touches points corresponding to stretch');
66 64
67 \set test_area 'POLYGON((-1 1, 2 1, 2 -1, -1 -1, -1 1))' 65 \set test_area 'POLYGON((-1 1, 2 1, 2 -1, -1 -1, -1 1))'
68 SELECT ok( 66 SELECT ok(
69 2 = ST_NumGeometries( 67 2 = ST_NumGeometries(
99 - ST_XMin(:'test_area'::geometry))/3), 97 - ST_XMin(:'test_area'::geometry))/3),
100 0)), 98 0)),
101 4326))), 99 4326))),
102 'Self-intersecting multipolygon leads to one polygon in result'); 100 'Self-intersecting multipolygon leads to one polygon in result');
103 101
104 SELECT ok( 102 SELECT results_eq($$
105 ISRSrange_area( 103 SELECT every(ST_DWithin(
106 isrsrange( 104 ST_Boundary(ISRSrange_area(
105 isrsrange(
106 ('AT', 'XXX', '00001', '00000', 0)::isrs,
107 ('AT', 'XXX', '00001', '00000', 2)::isrs),
108 (SELECT ST_Collect(CAST(area AS geometry))
109 FROM waterway.waterway_area))),
110 geom,
111 1))
112 FROM waterway.distance_marks_virtual
113 WHERE location_code IN(
107 ('AT', 'XXX', '00001', '00000', 0)::isrs, 114 ('AT', 'XXX', '00001', '00000', 0)::isrs,
108 ('AT', 'XXX', '00001', '00000', 2)::isrs), 115 ('AT', 'XXX', '00001', '00000', 2)::isrs)
109 (SELECT ST_Collect(CAST(area AS geometry)) 116 $$,
110 FROM waterway.waterway_area)) IS NOT NULL, 117 $$
118 SELECT true
119 $$,
111 'Area generated from non-matching distance mark and non-contiguous axis'); 120 'Area generated from non-matching distance mark and non-contiguous axis');