From: Sandro Santilli Date: Thu, 12 Jan 2012 11:20:59 +0000 (+0000) Subject: Add tests for higher coordinate dimensions (#1455) X-Git-Tag: 2.0.0alpha1~93 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6e1d73efb0f2e13e9c4d92c9dadd06a93b990463;p=postgis Add tests for higher coordinate dimensions (#1455) GEOMETRYCOLLECTION still fails git-svn-id: http://svn.osgeo.org/postgis/trunk@8787 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/regress/wkt.sql b/regress/wkt.sql index 0a86103f8..151459b16 100644 --- a/regress/wkt.sql +++ b/regress/wkt.sql @@ -1,168 +1,338 @@ +-- POINT -- SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'POINT EMPTY' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'POINT(EMPTY)' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'POINT(0 0)' ::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'POINT Z (0 0 0)' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'POINT M (0 0 0)' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'POINT ZM (0 0 0 0)' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'POINT ZM (0 0 0)' -- broken, misses an ordinate value +::text as g ) as foo; + + + + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'POINT((0 0))' ::text as g ) as foo; + + +-- MULTIPOINT -- + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'MULTIPOINT EMPTY' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'MULTIPOINT(EMPTY)' ::text as g ) as foo; + -- This is supported for backward compatibility SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'MULTIPOINT(0 0, 2 0)' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'MULTIPOINT((0 0), (2 0))' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'MULTIPOINT((0 0), (2 0), EMPTY)' ::text as g ) as foo; +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTIPOINT Z ((0 0 0), (2 0 0))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTIPOINT M ((0 0 0), (2 0 0))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTIPOINT ZM ((0 0 0 0), (2 0 0 0))' +::text as g ) as foo; + + +-- LINESTRING -- + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'LINESTRING EMPTY' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'LINESTRING(EMPTY)' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'LINESTRING(0 0, 1 1)' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'LINESTRING((0 0, 1 1))' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'LINESTRING((0 0), (1 1))' ::text as g ) as foo; +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'LINESTRING Z (0 0 0, 1 1 0)' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'LINESTRING M (0 0 0, 1 1 0)' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'LINESTRING ZM (0 0 0 0, 1 1 0 0)' +::text as g ) as foo; + + +-- MULTILINESTRING -- + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'MULTILINESTRING EMPTY' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'MULTILINESTRING(EMPTY)' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'MULTILINESTRING(0 0, 2 0)' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'MULTILINESTRING((0 0, 2 0))' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'MULTILINESTRING((0 0, 2 0), (1 1, 2 2))' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'MULTILINESTRING((0 0, 2 0), (1 1, 2 2), EMPTY)' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'MULTILINESTRING((0 0, 2 0), (1 1, 2 2), (EMPTY))' ::text as g ) as foo; +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTILINESTRING Z ((0 0 0, 2 0 0), (1 1 0, 2 2 0))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTILINESTRING M ((0 0 0, 2 0 0), (1 1 0, 2 2 0))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTILINESTRING ZM ((0 0 0 0, 2 0 0 0), (1 1 0 0, 2 2 0 0))' +::text as g ) as foo; + + +-- POLYGON -- + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'POLYGON EMPTY' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'POLYGON(EMPTY)' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'POLYGON((0 0,1 0,1 1,0 1,0 0))' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'POLYGON((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2))' ::text as g ) as foo; +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'POLYGON Z ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(2 2 0,2 5 0,5 5 0,5 2 0,2 2 0))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'POLYGON M ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(2 2 0,2 5 0,5 5 0,5 2 0,2 2 0))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'POLYGON ZM ((0 0 0 2,10 0 0 2,10 10 0 2,0 10 0 2,0 0 0 2),(2 2 0 2,2 5 0 2,5 5 0 2,5 2 0 2,2 2 0 2))' +::text as g ) as foo; + + + +-- MULTIPOLYGON -- + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'MULTIPOLYGON EMPTY' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'MULTIPOLYGON(EMPTY)' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'MULTIPOLYGON((EMPTY))' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2)))' ::text as g ) as foo; +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTIPOLYGON Z (((0 0 2,10 0 2,10 10 2,0 10 2,0 0 2),(2 2 2,2 5 2,5 5 2,5 2 2,2 2 2)))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTIPOLYGON M (((0 0 2,10 0 2,10 10 2,0 10 2,0 0 2),(2 2 2,2 5 2,5 5 2,5 2 2,2 2 2)))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTIPOLYGON ZM (((0 0 2 5,10 0 2 5,10 10 2 5,0 10 2 5,0 0 2 5),(2 2 2 5,2 5 2 5,5 5 2 5,5 2 2 5,2 2 2 5)))' +::text as g ) as foo; + + +-- GEOMETRYCOLLECTION -- + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'GEOMETRYCOLLECTION EMPTY' ::text as g ) as foo; + -- This is supported for backward compatibility SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'GEOMETRYCOLLECTION(EMPTY)' ::text as g ) as foo; + SELECT g, ST_AsText(g::geometry), ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 'GEOMETRYCOLLECTION((EMPTY))' ::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2))),POINT(0 0),MULTILINESTRING((0 0, 2 0),(1 1, 2 2)))' +::text as g ) as foo; + diff --git a/regress/wkt_expected b/regress/wkt_expected index a0f0affe5..fc7755737 100644 --- a/regress/wkt_expected +++ b/regress/wkt_expected @@ -2,6 +2,11 @@ POINT EMPTY|POINT EMPTY|t ERROR: parse error - invalid geometry HINT: "POINT(EMPTY" <-- parse error at position 11 within geometry POINT(0 0)|POINT(0 0)|t +POINT Z (0 0 0)|POINT Z (0 0 0)|t +POINT M (0 0 0)|POINT M (0 0 0)|t +POINT ZM (0 0 0 0)|POINT ZM (0 0 0 0)|t +ERROR: can not mix dimensionality in a geometry +HINT: "POINT ZM (0 0 0)" <-- parse error at position 16 within geometry ERROR: parse error - invalid geometry HINT: "POINT((" <-- parse error at position 7 within geometry MULTIPOINT EMPTY|MULTIPOINT EMPTY|t @@ -11,6 +16,9 @@ MULTIPOINT(0 0, 2 0)|MULTIPOINT(0 0,2 0)|t MULTIPOINT((0 0), (2 0))|MULTIPOINT(0 0,2 0)|t ERROR: parse error - invalid geometry HINT: "MULTIPOINT((0 0), (2 0), EMPTY" <-- parse error at position 30 within geometry +MULTIPOINT Z ((0 0 0), (2 0 0))|MULTIPOINT Z (0 0 0,2 0 0)|t +MULTIPOINT M ((0 0 0), (2 0 0))|MULTIPOINT M (0 0 0,2 0 0)|t +MULTIPOINT ZM ((0 0 0 0), (2 0 0 0))|MULTIPOINT ZM (0 0 0 0,2 0 0 0)|t LINESTRING EMPTY|LINESTRING EMPTY|t ERROR: parse error - invalid geometry HINT: "LINESTRING(EMPTY" <-- parse error at position 16 within geometry @@ -19,6 +27,9 @@ ERROR: parse error - invalid geometry HINT: "LINESTRING((" <-- parse error at position 12 within geometry ERROR: parse error - invalid geometry HINT: "LINESTRING((" <-- parse error at position 12 within geometry +LINESTRING Z (0 0 0, 1 1 0)|LINESTRING Z (0 0 0,1 1 0)|t +LINESTRING M (0 0 0, 1 1 0)|LINESTRING M (0 0 0,1 1 0)|t +LINESTRING ZM (0 0 0 0, 1 1 0 0)|LINESTRING ZM (0 0 0 0,1 1 0 0)|t MULTILINESTRING EMPTY|MULTILINESTRING EMPTY|t ERROR: parse error - invalid geometry HINT: "MULTILINESTRING(EMPTY" <-- parse error at position 21 within geometry @@ -30,19 +41,29 @@ ERROR: parse error - invalid geometry HINT: "...ESTRING((0 0, 2 0), (1 1, 2 2), EMPTY" <-- parse error at position 45 within geometry ERROR: parse error - invalid geometry HINT: "...STRING((0 0, 2 0), (1 1, 2 2), (EMPTY" <-- parse error at position 46 within geometry +MULTILINESTRING Z ((0 0 0, 2 0 0), (1 1 0, 2 2 0))|MULTILINESTRING Z ((0 0 0,2 0 0),(1 1 0,2 2 0))|t +MULTILINESTRING M ((0 0 0, 2 0 0), (1 1 0, 2 2 0))|MULTILINESTRING M ((0 0 0,2 0 0),(1 1 0,2 2 0))|t +MULTILINESTRING ZM ((0 0 0 0, 2 0 0 0), (1 1 0 0, 2 2 0 0))|MULTILINESTRING ZM ((0 0 0 0,2 0 0 0),(1 1 0 0,2 2 0 0))|t POLYGON EMPTY|POLYGON EMPTY|t ERROR: parse error - invalid geometry HINT: "POLYGON(EMPTY" <-- parse error at position 13 within geometry POLYGON((0 0,1 0,1 1,0 1,0 0))|POLYGON((0 0,1 0,1 1,0 1,0 0))|t POLYGON((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2))|POLYGON((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2))|t +POLYGON Z ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(2 2 0,2 5 0,5 5 0,5 2 0,2 2 0))|POLYGON Z ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(2 2 0,2 5 0,5 5 0,5 2 0,2 2 0))|t +POLYGON M ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(2 2 0,2 5 0,5 5 0,5 2 0,2 2 0))|POLYGON M ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(2 2 0,2 5 0,5 5 0,5 2 0,2 2 0))|t +POLYGON ZM ((0 0 0 2,10 0 0 2,10 10 0 2,0 10 0 2,0 0 0 2),(2 2 0 2,2 5 0 2,5 5 0 2,5 2 0 2,2 2 0 2))|POLYGON ZM ((0 0 0 2,10 0 0 2,10 10 0 2,0 10 0 2,0 0 0 2),(2 2 0 2,2 5 0 2,5 5 0 2,5 2 0 2,2 2 0 2))|t MULTIPOLYGON EMPTY|MULTIPOLYGON EMPTY|t ERROR: parse error - invalid geometry HINT: "MULTIPOLYGON(EMPTY" <-- parse error at position 18 within geometry ERROR: parse error - invalid geometry HINT: "MULTIPOLYGON((EMPTY" <-- parse error at position 19 within geometry MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2)))|MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2)))|t +MULTIPOLYGON Z (((0 0 2,10 0 2,10 10 2,0 10 2,0 0 2),(2 2 2,2 5 2,5 5 2,5 2 2,2 2 2)))|MULTIPOLYGON Z (((0 0 2,10 0 2,10 10 2,0 10 2,0 0 2),(2 2 2,2 5 2,5 5 2,5 2 2,2 2 2)))|t +MULTIPOLYGON M (((0 0 2,10 0 2,10 10 2,0 10 2,0 0 2),(2 2 2,2 5 2,5 5 2,5 2 2,2 2 2)))|MULTIPOLYGON M (((0 0 2,10 0 2,10 10 2,0 10 2,0 0 2),(2 2 2,2 5 2,5 5 2,5 2 2,2 2 2)))|t +MULTIPOLYGON ZM (((0 0 2 5,10 0 2 5,10 10 2 5,0 10 2 5,0 0 2 5),(2 2 2 5,2 5 2 5,5 5 2 5,5 2 2 5,2 2 2 5)))|MULTIPOLYGON ZM (((0 0 2 5,10 0 2 5,10 10 2 5,0 10 2 5,0 0 2 5),(2 2 2 5,2 5 2 5,5 5 2 5,5 2 2 5,2 2 2 5)))|t GEOMETRYCOLLECTION EMPTY|GEOMETRYCOLLECTION EMPTY|t ERROR: parse error - invalid geometry HINT: "GEOMETRYCOLLECTION(EMPTY" <-- parse error at position 24 within geometry ERROR: parse error - invalid geometry HINT: "GEOMETRYCOLLECTION((" <-- parse error at position 20 within geometry +GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2))),POINT(0 0),MULTILINESTRING((0 0, 2 0),(1 1, 2 2)))|GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2))),POINT(0 0),MULTILINESTRING((0 0,2 0),(1 1,2 2)))|t