From: Sandro Santilli <strk@keybit.net>
Date: Mon, 16 Jan 2012 10:24:54 +0000 (+0000)
Subject: Implement lwgeom_same for MULTICURVE and MULTISURFACE (#1475)
X-Git-Tag: 2.0.0alpha1~49
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=10732e13a9af922c294f325942a4f69a81f1cb69;p=postgis

Implement lwgeom_same for MULTICURVE and MULTISURFACE (#1475)

git-svn-id: http://svn.osgeo.org/postgis/trunk@8831 b70326c6-7e19-0410-871a-916f4a2858ee
---

diff --git a/liblwgeom/lwgeom.c b/liblwgeom/lwgeom.c
index 8bc02b2d5..cdea7bb7d 100644
--- a/liblwgeom/lwgeom.c
+++ b/liblwgeom/lwgeom.c
@@ -516,6 +516,8 @@ lwgeom_same(const LWGEOM *lwgeom1, const LWGEOM *lwgeom2)
 	case MULTIPOINTTYPE:
 	case MULTILINETYPE:
 	case MULTIPOLYGONTYPE:
+	case MULTICURVETYPE:
+	case MULTISURFACETYPE:
 	case COMPOUNDTYPE:
 	case CURVEPOLYTYPE:
 	case POLYHEDRALSURFACETYPE:
diff --git a/regress/wkb.sql b/regress/wkb.sql
index 8027ddab2..ab9cdb0d0 100644
--- a/regress/wkb.sql
+++ b/regress/wkb.sql
@@ -348,3 +348,47 @@ select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'),
  'CURVEPOLYGON ZM EMPTY'
 ::text as g ) as foo;
 
+-- MULTICURVE
+select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'),
+          st_orderingequals(g::geometry, ST_GeomFromWKB(ST_AsBinary(g::geometry))),
+          encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT
+ 'MULTICURVE EMPTY'
+::text as g ) as foo;
+select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'),
+          st_orderingequals(g::geometry, ST_GeomFromWKB(ST_AsBinary(g::geometry))),
+          encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT
+ 'MULTICURVE Z EMPTY'
+::text as g ) as foo;
+select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'),
+          st_orderingequals(g::geometry, ST_GeomFromWKB(ST_AsBinary(g::geometry))),
+          encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT
+ 'MULTICURVE M EMPTY'
+::text as g ) as foo;
+select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'),
+          st_orderingequals(g::geometry, ST_GeomFromWKB(ST_AsBinary(g::geometry))),
+          encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT
+ 'MULTICURVE ZM EMPTY'
+::text as g ) as foo;
+
+-- MULTISURFACE
+select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'),
+          st_orderingequals(g::geometry, ST_GeomFromWKB(ST_AsBinary(g::geometry))),
+          encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT
+ 'MULTISURFACE EMPTY'
+::text as g ) as foo;
+select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'),
+          st_orderingequals(g::geometry, ST_GeomFromWKB(ST_AsBinary(g::geometry))),
+          encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT
+ 'MULTISURFACE Z EMPTY'
+::text as g ) as foo;
+select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'),
+          st_orderingequals(g::geometry, ST_GeomFromWKB(ST_AsBinary(g::geometry))),
+          encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT
+ 'MULTISURFACE M EMPTY'
+::text as g ) as foo;
+select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'),
+          st_orderingequals(g::geometry, ST_GeomFromWKB(ST_AsBinary(g::geometry))),
+          encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT
+ 'MULTISURFACE ZM EMPTY'
+::text as g ) as foo;
+
diff --git a/regress/wkb_expected b/regress/wkb_expected
index 4c61dc22b..3f24fd648 100644
--- a/regress/wkb_expected
+++ b/regress/wkb_expected
@@ -64,3 +64,11 @@ CURVEPOLYGON EMPTY|010a00000000000000|t|000000000a00000000
 CURVEPOLYGON Z EMPTY|01f203000000000000|t|00000003f200000000
 CURVEPOLYGON M EMPTY|01da07000000000000|t|00000007da00000000
 CURVEPOLYGON ZM EMPTY|01c20b000000000000|t|0000000bc200000000
+MULTICURVE EMPTY|010b00000000000000|t|000000000b00000000
+MULTICURVE Z EMPTY|01f303000000000000|t|00000003f300000000
+MULTICURVE M EMPTY|01db07000000000000|t|00000007db00000000
+MULTICURVE ZM EMPTY|01c30b000000000000|t|0000000bc300000000
+MULTISURFACE EMPTY|010c00000000000000|t|000000000c00000000
+MULTISURFACE Z EMPTY|01f403000000000000|t|00000003f400000000
+MULTISURFACE M EMPTY|01dc07000000000000|t|00000007dc00000000
+MULTISURFACE ZM EMPTY|01c40b000000000000|t|0000000bc400000000