<xsl:variable name='fndef'><xsl:value-of select="funcdef"/></xsl:variable>\r
<xsl:variable name='numparams'><xsl:value-of select="count(paramdef/parameter)" /></xsl:variable>\r
<xsl:variable name='numparamgeoms'><xsl:value-of select="count(paramdef/type[contains(text(),'geometry') or contains(text(),'geography') or contains(text(),'box') or contains(text(), 'bytea')]) + count(paramdef/parameter[contains(text(),'WKT')])" /></xsl:variable>\r
+ <xsl:variable name='numparamgeogs'><xsl:value-of select="count(paramdef/type[contains(text(),'geography')] )" /></xsl:variable>\r
<!-- For each function prototype generate a test sql statement -->\r
<xsl:choose>\r
<!--Test functions that take no arguments or take no geometries -->\r
<xsl:when test="$numparamgeoms = '1' and not(contains($fnexclude,funcdef/function))" >\r
<xsl:for-each select="document('')//pgis:gardens/pgis:gset">\r
<xsl:choose>\r
- <xsl:when test="contains($fndef, 'geometry ')">\r
+ <xsl:when test="contains(paramdef, 'geometry ')">\r
+ \r
SELECT 'Geometry <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />: Start Testing <xsl:value-of select="@GeometryType" />';\r
BEGIN; <!-- If output is geometry show ewkt rep -->\r
SELECT ST_AsEWKT(<xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />))\r
</xsl:when>\r
- <xsl:when test="contains($fndef, 'geography ')">\r
+ <xsl:when test="contains(paramdef, 'geography ')">\r
SELECT 'Geography <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />: Start Testing <xsl:value-of select="@GeometryType" />';\r
BEGIN; <!-- If output is geometry show astext rep -->\r
SELECT ST_AsText(<xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />))\r
\r
<!--Functions more than 1 args not already covered this will cross every geometry type with every other -->\r
<xsl:when test="not(contains($fnexclude,funcdef/function))">\r
+ SELECT '<xsl:value-of select="$fnargs" />'\r
<xsl:for-each select="document('')//pgis:gardens/pgis:gset">\r
<!--Store first garden sql geometry from -->\r
<xsl:variable name="from1"><xsl:value-of select="." /></xsl:variable>\r
<xsl:variable name='geom1type'><xsl:value-of select="@ID"/></xsl:variable>\r
-SELECT '<xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" /> against other types';\r
+SELECT '<xsl:value-of select="$fnname" /> <xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" /> against other types';\r
<xsl:for-each select="document('')//pgis:gardens/pgis:gset">\r
<xsl:choose>\r
- <xsl:when test="contains($fndef, 'geometry ')">\r
- SELECT 'Geometry <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" />, <xsl:value-of select="@GeometryType" />';\r
- BEGIN; <!-- If output is geometry show ewkt rep -->\r
- SELECT ST_AsEWKT(<xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />)), ST_AsEWKT(foo1.the_geom) As ref1_geom, ST_AsEWKT(foo2.the_geom) As ref2_geom\r
- </xsl:when>\r
- <xsl:when test="contains($fndef, 'geography ')">\r
+ <xsl:when test="$numparamgeogs > '0'">\r
SELECT 'Geography <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" />, <xsl:value-of select="@GeometryType" />';\r
BEGIN; <!-- If output is geography show wkt rep -->\r
SELECT ST_AsText(<xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />)), ST_AsText(foo1.the_geom) As ref1_geom, ST_AsText(foo2.the_geom) As ref2_geom\r
+ </xsl:when>\r
+ <xsl:when test="$numparamgeoms > '0'">\r
+ SELECT 'Geometry <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" />, <xsl:value-of select="@GeometryType" />';\r
+ BEGIN; <!-- If output is geometry show ewkt rep -->\r
+ SELECT ST_AsEWKT(<xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />)), ST_AsEWKT(foo1.the_geom) As ref1_geom, ST_AsEWKT(foo2.the_geom) As ref2_geom\r
</xsl:when>\r
<xsl:otherwise>\r
SELECT 'Other <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" />, <xsl:value-of select="@GeometryType" />';\r
test more geometries but only against one function. Useful for intro of new functions or comparing major changes from function of one version of PostGIS to the other\r
******************************************************************** -->\r
<xsl:output method="text" />\r
- <xsl:variable name='testversion'>1.5.0</xsl:variable>\r
- <xsl:variable name='fninclude'>ST_Distance ST_DWithin ST_MaxDistance ST_ShortestLine ST_LongestLine</xsl:variable>\r
+<xsl:variable name='testversion'>1.5.0</xsl:variable>\r
+ <xsl:variable name='fninclude'>ST_Distance ST_DWithin ST_AsBinary</xsl:variable>\r
<!--This is just a place holder to state functions not supported in 1.3 or tested separately -->\r
\r
<xsl:variable name='var_srid'>3395</xsl:variable>\r
CROSS JOIN generate_series(40,70, 15) As j\r
WHERE NOT(i = j)\r
ORDER BY i, i*j)</pgis:gset>\r
- <pgis:gset ID='PolySet' GeometryType='POLYGON'>(SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j) As the_geom\r
+ <pgis:gset ID='PolySet' GeometryType='POLYGON'>(SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j*0.05) As the_geom\r
FROM generate_series(-10,50,10) As i\r
CROSS JOIN generate_series(40,70, 20) As j\r
ORDER BY i, i*j, j)</pgis:gset>\r
CROSS JOIN generate_series(1,2) As m\r
ORDER BY i, j, m, i*j*m\r
)</pgis:gset>\r
- <pgis:gset ID='PointSet3D' GeometryType='POINT'>(SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom\r
+ <pgis:gset ID='PointSet3D' GeometryType='POINTZ'>(SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom\r
FROM generate_series(-10,50,20) As i\r
CROSS JOIN generate_series(40,70, 20) j\r
CROSS JOIN generate_series(1,2) k\r
ORDER BY i,i*j, j*k, i + j + k)</pgis:gset>\r
- <pgis:gset ID='LineSet3D' GeometryType='LINESTRING'>(SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom\r
+ <pgis:gset ID='LineSet3D' GeometryType='LINESTRINGZ'>(SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom\r
FROM generate_series(-10,50,20) As i\r
CROSS JOIN generate_series(40,70, 20) j\r
CROSS JOIN generate_series(1,2) k\r
ORDER BY i, j, i+j+k, k, i*j*k)</pgis:gset>\r
- <pgis:gset ID='PolygonSet3D' GeometryType='POLYGON'>(SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326) As the_geom\r
+ <pgis:gset ID='PolygonSet3D' GeometryType='POLYGONZ'>(SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326) As the_geom\r
FROM generate_series(-10,50,20) As i\r
CROSS JOIN generate_series(50,70, 20) As j\r
CROSS JOIN generate_series(1,2) As m\r
ORDER BY i, j, i+j+m, m, i*j*m)</pgis:gset>\r
\r
- <pgis:gset ID='GCSet3D' GeometryType='GEOMETRYCOLLECTION' SkipUnary='1'>(SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326))) As the_geom\r
+ <pgis:gset ID='GCSet3D' GeometryType='GEOMETRYCOLLECTIONZ' SkipUnary='1'>(SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326))) As the_geom\r
FROM generate_series(-10,50,20) As i\r
CROSS JOIN generate_series(50,70, 20) As j\r
CROSS JOIN generate_series(1,2) As m\r
CROSS JOIN generate_series(40,70, 15) As j\r
WHERE NOT(i = j)) As s)</pgis:gset>\r
\r
- <pgis:gset ID='MultiPolySet' GeometryType='POLYGON'>(SELECT ST_Multi(ST_Union(ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j))) As the_geom\r
+ <pgis:gset ID='MultiPolySet' GeometryType='MULTIPOLYGON'>(SELECT ST_Multi(ST_Union(ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j*0.05))) As the_geom\r
FROM generate_series(-10,50,10) As i\r
CROSS JOIN generate_series(40,70, 25) As j)</pgis:gset>\r
\r
- <pgis:gset ID='MultiPointSet3D' GeometryType='MULTIPOINT'>(SELECT ST_Collect(ST_SetSRID(ST_MakePoint(i,j,k),4326)) As the_geom\r
+ <pgis:gset ID='MultiPointSet3D' GeometryType='MULTIPOINTZ'>(SELECT ST_Collect(ST_SetSRID(ST_MakePoint(i,j,k),4326)) As the_geom\r
FROM generate_series(-10,50,20) As i\r
CROSS JOIN generate_series(40,70, 25) j\r
CROSS JOIN generate_series(1,3) k\r
)</pgis:gset>\r
\r
- <pgis:gset ID='MultiLineSet3D' GeometryType='MULTILINESTRING'>(SELECT ST_Multi(ST_Union(ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326))) As the_geom\r
+ <pgis:gset ID='MultiLineSet3D' GeometryType='MULTILINESTRINGZ'>(SELECT ST_Multi(ST_Union(ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326))) As the_geom\r
FROM generate_series(-10,50,20) As i\r
CROSS JOIN generate_series(40,70, 25) j\r
CROSS JOIN generate_series(1,2) k\r
)</pgis:gset>\r
\r
- <pgis:gset ID='MultiPolySet3D' GeometryType='MULTIPOLYGON'>(SELECT ST_Multi(ST_Union(s.the_geom)) As the_geom\r
- FROM (SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326))) As the_geom\r
+ <pgis:gset ID='MultiPolySet3D' GeometryType='MULTIPOLYGONZ'>(SELECT ST_Multi(ST_Union(s.the_geom)) As the_geom\r
+ FROM (SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePoint(i+m,j,m),4326),ST_SetSRID(ST_MakePoint(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePoint(i,j,m),4326)),ST_SetSRID(ST_MakePoint(i+m,j,m),4326))) As the_geom\r
FROM generate_series(-10,50,20) As i\r
CROSS JOIN generate_series(50,70, 25) As j\r
CROSS JOIN generate_series(1,2) As m\r
CROSS JOIN generate_series(1,2) As m\r
WHERE NOT(i = j)) As s)</pgis:gset>\r
\r
- <pgis:gset ID='MultiPolygonMSet' GeometryType='MULTIPOLYGONM'>(SELECT ST_Multi(ST_Union(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326))))) As the_geom\r
- FROM generate_series(-10,50,20) As i\r
- CROSS JOIN generate_series(50,70, 25) As j\r
- CROSS JOIN generate_series(1,2) As m\r
+ <pgis:gset ID='MultiPolygonMSet' GeometryType='MULTIPOLYGONM'>(\r
+ SELECT ST_GeomFromEWKT('SRID=4326;MULTIPOLYGONM(((0 0 2,10 0 1,10 10 -2,0 10 -5,0 0 -5),(5 5 6,7 5 6,7 7 6,5 7 10,5 5 -2)))') As the_geom\r
)</pgis:gset>\r
\r
- <pgis:gset ID="Empty" GeometryType="GEOMETRY">(SELECT ST_GeomFromText('GEOMETRYCOLLECTION EMPTY',4326) As the_geom\r
+ <!--These are special case geometries -->\r
+ <pgis:gset ID="Empty" GeometryType="GEOMETRY" createtable="false">(SELECT ST_GeomFromText('GEOMETRYCOLLECTION EMPTY',4326) As the_geom\r
UNION ALL SELECT ST_GeomFromText('POLYGON EMPTY',4326) As the_geom\r
)\r
</pgis:gset>\r
\r
- <pgis:gset ID="NULL" GeometryType="GEOMETRY">(SELECT CAST(Null As geometry) As the_geom)\r
- </pgis:gset>\r
-\r
+ <!-- TODO: Finish off MULTI list -->\r
+ </pgis:gardens>\r
+ <!--This is just a placeholder to hold geometries that will crash server when hitting against some functions\r
+ We'll fix these crashers in 1.4 -->\r
+ <pgis:gardencrashers>\r
<pgis:gset ID='CurvePolySet' GeometryType='CURVEPOLYGON'>(SELECT ST_LineToCurve(ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)) As the_geom\r
FROM generate_series(-10,50,10) As i\r
CROSS JOIN generate_series(40,70, 20) As j\r
FROM generate_series(-10,50,10) As i\r
CROSS JOIN generate_series(40,70, 20) As j\r
ORDER BY i, j, i*j)</pgis:gset>\r
-\r
-\r
- <!-- TODO: Finish off MULTI list -->\r
- </pgis:gardens>\r
- <!--This is just a placeholder to hold geometries that will crash server when hitting against some functions\r
- We'll fix these crashers in 1.4 -->\r
- <pgis:gardencrashers>\r
+ <pgis:gset ID="NULL" GeometryType="GEOMETRY" createtable="false">(SELECT CAST(Null As geometry) As the_geom)</pgis:gset>\r
\r
</pgis:gardencrashers>\r
\r
<xsl:variable name='fndef'><xsl:value-of select="funcdef"/></xsl:variable>\r
<xsl:variable name='numparams'><xsl:value-of select="count(paramdef/parameter)" /></xsl:variable>\r
<xsl:variable name='numparamgeoms'><xsl:value-of select="count(paramdef/type[contains(text(),'geometry') or contains(text(),'box') or contains(text(), 'bytea')]) + count(paramdef/parameter[contains(text(),'WKT')])" /></xsl:variable>\r
+ <xsl:variable name='numparamgeogs'><xsl:value-of select="count(paramdef/type[contains(text(),'geography')] )" /></xsl:variable>\r
+\r
<!-- For each function prototype generate a test sql statement -->\r
<xsl:choose>\r
<!--Test functions that take no arguments or take no geometries -->\r
<!-- put functions that take only one geometry no need to cross with another geom collection, these are unary geom, aggregates, and so forth -->\r
<xsl:when test="$numparamgeoms = '1' and contains($fninclude,funcdef/function)" >\r
<xsl:for-each select="document('')//pgis:gardens/pgis:gset">\r
- SELECT '<xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />: Start Testing <xsl:value-of select="@GeometryType" />';\r
- BEGIN; <!-- If output is geometry show ewkt rep -->\r
<xsl:choose>\r
- <xsl:when test="contains($fndef, 'geometry ')">\r
+ <xsl:when test="contains(paramdef, 'geometry ')">\r
+ \r
+ SELECT 'Geometry <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />: Start Testing <xsl:value-of select="@GeometryType" />';\r
+ BEGIN; <!-- If output is geometry show ewkt rep -->\r
SELECT ST_AsEWKT(<xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />))\r
+ </xsl:when>\r
+ <xsl:when test="contains(paramdef, 'geography ')">\r
+ SELECT 'Geography <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />: Start Testing <xsl:value-of select="@GeometryType" />';\r
+ BEGIN; <!-- If output is geometry show astext rep -->\r
+ SELECT ST_AsText(<xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />))\r
</xsl:when>\r
<xsl:otherwise>\r
+ SELECT 'Other <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />: Start Testing <xsl:value-of select="@GeometryType" />';\r
+ BEGIN; <!-- If output is geometry show ewkt rep -->\r
SELECT <xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />)\r
</xsl:otherwise>\r
</xsl:choose>\r
\r
<!--Functions more than 1 args not already covered this will cross every geometry type with every other -->\r
<xsl:when test="contains($fninclude,funcdef/function)">\r
+ SELECT '<xsl:value-of select="$fnargs" />'\r
<xsl:for-each select="document('')//pgis:gardens/pgis:gset">\r
<!--Store first garden sql geometry from -->\r
<xsl:variable name="from1"><xsl:value-of select="." /></xsl:variable>\r
<xsl:variable name='geom1type'><xsl:value-of select="@ID"/></xsl:variable>\r
-SELECT '<xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" /> against other types';\r
+SELECT '<xsl:value-of select="$fnname" /> <xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" /> against other types';\r
<xsl:for-each select="document('')//pgis:gardens/pgis:gset">\r
- SELECT '<xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" />, <xsl:value-of select="@GeometryType" />';\r
- BEGIN; <!-- If output is geometry show ewkt rep -->\r
<xsl:choose>\r
- <xsl:when test="contains($fndef, 'geometry ')">\r
+ <xsl:when test="$numparamgeogs > '0'">\r
+ SELECT 'Geography <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" />, <xsl:value-of select="@GeometryType" />';\r
+ BEGIN; <!-- If output is geography show wkt rep -->\r
+ SELECT ST_AsText(<xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />)), ST_AsText(foo1.the_geom) As ref1_geom, ST_AsText(foo2.the_geom) As ref2_geom\r
+ </xsl:when>\r
+ <xsl:when test="$numparamgeoms > '0'">\r
+ SELECT 'Geometry <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" />, <xsl:value-of select="@GeometryType" />';\r
+ BEGIN; <!-- If output is geometry show ewkt rep -->\r
SELECT ST_AsEWKT(<xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />)), ST_AsEWKT(foo1.the_geom) As ref1_geom, ST_AsEWKT(foo2.the_geom) As ref2_geom\r
</xsl:when>\r
<xsl:otherwise>\r
+ SELECT 'Other <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" />, <xsl:value-of select="@GeometryType" />';\r
+ BEGIN; <!-- If output is geography show wkt rep -->\r
SELECT <xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />)\r
</xsl:otherwise>\r
</xsl:choose>\r