Commit f5f5b60e authored by Bas Couwenberg's avatar Bas Couwenberg

Imported Upstream version 2.1.6+dfsg

parent fb991b4f
This diff is collapsed.
PostGIS 2.1.6
2015/03/20
* Enhancements *
- #3000, Ensure edge splitting and healing algorithms use indexes
- #3048, Speed up geometry simplification (J.Santana @ CartoDB)
- #3050, Speep up geometry type reading (J.Santana @ CartoDB)
* Bug Fixes *
- #2941, allow geography columns with SRID other than 4326
- #3069, small objects getting inappropriately fluffed up w/ boxes
- #3068, Have postgis_typmod_dims return NULL for unconstrained dims
- #3061, Allow duplicate points in JSON, GML, GML ST_GeomFrom* functions
- #3058, Fix ND-GiST picksplit method to split on the best plane
- #3052, Make operators <-> and <#> available for PostgreSQL < 9.1
- #3045, Fix dimensionality confusion in &&& operator
- #3016, Allow unregistering layers of corrupted topologies
- #3015, Avoid exceptions from TopologySummary
- #3020, ST_AddBand out-db bug where height using width value
- #3031, Allow restore of Geometry(Point) tables dumped with empties in them
PostGIS 2.1.5
2014/12/18
......
PostGIS - Geographic Information Systems Extensions to PostgreSQL
=================================================================
:Version: 2.1.5
:Date: 2014-12-18
:Version: 2.1.6
:Date: 2015-03-20
:Website: http://postgis.net
This distribution contains a module which implements GIS simple features, ties
......
......@@ -5,5 +5,5 @@
POSTGIS_MAJOR_VERSION=2
POSTGIS_MINOR_VERSION=1
POSTGIS_MICRO_VERSION=5
POSTGIS_MICRO_VERSION=6
......@@ -462,13 +462,70 @@ SELECT topology.AddTopoGeometryColumn('ri_topo', 'ri', 'roads', 'topo', 'LINE');
<refsection>
<title>Description</title>
<para>Returns a set of <xref linkend="validatetopology_returntype"/> objects detailing issues with topology. Refer to
<xref linkend="validatetopology_returntype"/> for listing of possible errors.</para>
<para>Returns a set of <xref linkend="validatetopology_returntype"/> objects detailing issues with topology. Table below lists possible errors and what the id1 and id2 mean in each case</para>
<informaltable rowsep="1" frame="all">
<tgroup cols="3">
<thead><row><entry>Error</entry><entry>id1</entry><entry>id2</entry></row></thead>
<tbody>
<row>
<entry>edge crosses node</entry>
<entry>node_id</entry>
<entry>edge_id # NOTE: should this be swapped?</entry>
</row>
<row>
<entry>invalid edge</entry>
<entry>edge_id</entry>
<entry>null</entry>
</row>
<row>
<entry>edge not simple</entry>
<entry>edge_id</entry>
<entry>null</entry>
</row>
<row>
<entry>edge crosses edge</entry>
<entry>edge_id</entry>
<entry>edge_id</entry>
</row>
<row>
<entry>edge start node geometry mis-match</entry>
<entry>edge_id</entry>
<entry>node_id</entry>
</row>
<row>
<entry>edge end node geometry mis-match</entry>
<entry>edge_id</entry>
<entry>node_id</entry>
</row>
<row>
<entry>face without edges</entry>
<entry>face_id</entry>
<entry>null</entry>
</row>
<row>
<entry>face has no rings</entry>
<entry>face_id</entry>
<entry>null</entry>
</row>
<row>
<entry>face overlaps face</entry>
<entry>face_id</entry>
<entry>face_id</entry>
</row>
<row>
<entry>face within face</entry>
<entry>inner face_id</entry>
<entry>outer face_id</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<!-- use this format if new function -->
<para>Availability: 1.?</para>
<para>Availability: 1.0.0</para>
<!-- use this format if not a new function but functionality enhanced -->
<para>Enhanced: 2.0.0 more efficient edge crossing detection and fixes for false positives that were existent in prior versions.</para>
<para>Enhanced: 2.0.0 more efficient edge crossing detection and fixes for false positives that were existent in prior versions.</para>
</refsection>
......@@ -2066,7 +2123,8 @@ SELECT ST_AsText(topology.ST_GetFaceGeometry('ma_topo', 1)) As facegeomwkt;
<refname>GetRingEdges</refname>
<refpurpose>
Returns an ordered set of edges forming a ring with the given edge .
Returns the ordered set of signed edge identifiers met by walking on an
a given edge side.
</refpurpose>
</refnamediv>
......@@ -2085,12 +2143,18 @@ Returns an ordered set of edges forming a ring with the given edge .
<title>Description</title>
<para>
Returns an ordered set of edges forming a ring with the given edge.
Returns the ordered set of signed edge identifiers met by walking on an
a given edge side.
Each output consists of a sequence and a signed edge id.
Sequence numbers start with value 1.
A negative edge identifier means that the given edge is taken backward.
You can pass a negative edge id to start walking backward.
</para>
</para>
<para>
If you pass a positive edge id, the walk starts on the left side
of the corresponding edge and follows the edge direction.
If you pass a negative edge id, the walk starts on the right side
of it and goes backward.
</para>
<para>
If <varname>max_edges</varname> is not null no more than those records
......@@ -2098,9 +2162,12 @@ are returned by that function. This is meant to be a safety parameter
when dealing with possibly invalid topologies.
</para>
<note><para>
This function uses edge ring linking metadata.
</para></note>
<!-- use this format if new function -->
<para>Availability: 2.0 </para>
<para>Availability: 2.0.0 </para>
</refsection>
......
......@@ -3,6 +3,16 @@
<title>PostGIS Raster Frequently Asked Questions</title>
<qandaset>
<qandaentry id="faq_security_change_1">
<question>
<para>I'm getting error <code>ERROR: RASTER_fromGDALRaster: Could not open bytea with GDAL. Check that the bytea is of a GDAL supported format.</code></para>
</question>
<answer>
<para>As of PostGIS 2.1.3 and 2.0.5, a security change was made to by default disable all GDAL drivers and out of db rasters. The release notes are at <ulink url="/2014/05/19/postgis-2.0.6_and_2.1.3">PostGIS 2.0.6, 2.1.3 security release</ulink>. In order to reenable specific drivers or all drivers and reenable out of database support, refer to <xref linkend="install_short_version" />.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
......
......@@ -3734,7 +3734,7 @@ SELECT ST_AsEWKT(ST_PointOnSurface(ST_GeomFromEWKT('LINESTRING(0 5 1, 0 0 1, 0 1
<para>Version 2: Takes geomA and geomB and returns the <xref linkend="DE-9IM" /></para>
<para>Version 3: same as version 2 bu allows to specify a boundary node rule (1:OGC/MOD2, 2:Endpoint, 3:MultivalentEndpoint, 4:MonovalentEndpoint)</para>
<para>Version 3: same as version 2, but allows to specify a boundary node rule (1:OGC/MOD2, 2:Endpoint, 3:MultivalentEndpoint, 4:MonovalentEndpoint)</para>
<note><para>Do not call with a GeometryCollection as an argument</para></note>
......
......@@ -95,7 +95,7 @@ FROM ( VALUES
<refnamediv>
<refname>&amp;&amp;&amp;</refname>
<refpurpose>Returns <varname>TRUE</varname> if A's 3D bounding box intersects B's 3D bounding box.</refpurpose>
<refpurpose>Returns <varname>TRUE</varname> if A's n-D bounding box intersects B's n-D bounding box.</refpurpose>
</refnamediv>
<refsynopsisdiv>
......@@ -1068,9 +1068,10 @@ select 'LINESTRING(0 0, 1 1)'::geometry ~= 'LINESTRING(0 1, 1 0)'::geometry as e
<refnamediv>
<refname>&lt;-&gt;</refname>
<refpurpose>Returns the distance between two points. For point / point checks it uses floating point accuracy (as opposed to the double precision accuracy of the underlying point geometry). For other geometry types
the distance between the floating point bounding box centroids is returned. Useful for doing distance ordering and nearest neighbor limits
using KNN gist functionality.</refpurpose>
<refpurpose>
Returns the 2D distance between the centroids of A and B bounding
boxes.
</refpurpose>
</refnamediv>
<refsynopsisdiv>
......@@ -1096,16 +1097,19 @@ select 'LINESTRING(0 0, 1 1)'::geometry ~= 'LINESTRING(0 1, 1 0)'::geometry as e
<refsection>
<title>Description</title>
<para>The <varname>&lt;-&gt;</varname> operator returns distance between two points read from the spatial index for points (float precision). For
other geometries it returns the distance from centroid of bounding box of geometries. Useful for doing nearest neighbor <emphasis role="strong">approximate</emphasis> distance ordering.</para>
<para>
The <varname>&lt;-&gt;</varname> operator returns the 2D distance between the
centroids of the bounding boxes of two geometries. Useful for doing
nearest neighbor <emphasis role="strong">approximate</emphasis> distance
ordering.</para>
<note><para>This operand will make use of any indexes that may be available on the
<note><para>This operand will make use of 2D GiST indexes that may be available on the
geometries. It is different from other operators that use spatial indexes in that the spatial index is only used when the operator
is in the ORDER BY clause.</para></note>
<note><para>Index only kicks in if one of the geometries is a constant (not in a subquery/cte). e.g. 'SRID=3005;POINT(1011102 450541)'::geometry instead of a.geom</para></note>
<para>Refer to <ulink url="http://workshops.opengeo.org/postgis-intro/knn.html">OpenGeo workshop: Nearest-Neighbour Searching</ulink> for real live example.</para>
<para>Availability: 2.0.0 only available for PostgreSQL 9.1+</para>
<para>Availability: 2.0.0 -- KNN only available for PostgreSQL 9.1+</para>
</refsection>
......@@ -1192,8 +1196,9 @@ Finally the hybrid:
<refnamediv>
<refname>&lt;#&gt;</refname>
<refpurpose>Returns the distance between bounding box of 2 geometries. For point / point checks it's almost the same as distance (though may be different since the bounding box is at floating point accuracy and geometries are double precision). Useful for doing distance ordering and nearest neighbor limits
using KNN gist functionality.</refpurpose>
<refpurpose>
Returns the 2D distance between bounding boxes of 2 geometries.
</refpurpose>
</refnamediv>
<refsynopsisdiv>
......@@ -1219,14 +1224,14 @@ Finally the hybrid:
<refsection>
<title>Description</title>
<para>The <varname>&lt;#&gt;</varname> KNN GIST operator returns distance between two floating point bounding boxes read from the spatial index if available. Useful for doing nearest neighbor <emphasis role="strong">approximate</emphasis> distance ordering.</para>
<para>The <varname>&lt;#&gt;</varname> operator returns distance between two floating point bounding boxes, possibly reading them from a spatial index (PostgreSQL 9.1+ required). Useful for doing nearest neighbor <emphasis role="strong">approximate</emphasis> distance ordering.</para>
<note><para>This operand will make use of any indexes that may be available on the
geometries. It is different from other operators that use spatial indexes in that the spatial index is only used when the operator
is in the ORDER BY clause.</para></note>
<note><para>Index only kicks in if one of the geometries is a constant e.g. ORDER BY (ST_GeomFromText('POINT(1 2)') &lt;#&gt; geom) instead of g1.geom &lt;#&gt;.</para></note>
<para>Availability: 2.0.0 only available for PostgreSQL 9.1+</para>
<para>Availability: 2.0.0 -- KNN only available for PostgreSQL 9.1+</para>
</refsection>
......
......@@ -3,6 +3,32 @@
<title>Appendix</title>
<subtitle>Release Notes</subtitle>
<sect1>
<title>Release 2.1.5</title>
<para>Release date: 2014-12-18</para>
<para>This is a bug fix and performance improvement release.</para>
<simplesect>
<title>Enhancements</title>
<para>#3000, Ensure edge splitting and healing algorithms use indexes</para>
<para>#3048, Speed up geometry simplification (J.Santana @ CartoDB)</para>
<para>#3050, Speep up geometry type reading (J.Santana @ CartoDB)</para>
</simplesect>
<simplesect>
<title>Bug Fixes</title>
<para>#2941, allow geography columns with SRID other than 4326</para>
<para>#3069, small objects getting inappropriately fluffed up w/ boxes</para>
<para>#3068, Have postgis_typmod_dims return NULL for unconstrained dims</para>
<para>#3061, Allow duplicate points in JSON, GML, GML ST_GeomFrom* functions</para>
<para>#3058, Fix ND-GiST picksplit method to split on the best plane</para>
<para>#3052, Make operators &lt;-&gt; and &lt;#&gt; available for PostgreSQL &lt; 9.1</para>
<para>#3045, Fix dimensionality confusion in &amp;&amp;&amp; operator</para>
<para>#3016, Allow unregistering layers of corrupted topologies</para>
<para>#3015, Avoid exceptions from TopologySummary</para>
<para>#3020, ST_AddBand out-db bug where height using width value</para>
<para>#3031, Allow restore of Geometry(Point) tables dumped with empties in them</para>
</simplesect>
</sect1>
<sect1>
<title>Release 2.1.5</title>
<para>Release date: 2014-12-18</para>
......
......@@ -83,7 +83,7 @@ COMMENT ON FUNCTION topology.ST_GetFaceEdges(varchar , integer ) IS 'args: atopo
COMMENT ON FUNCTION topology.ST_GetFaceGeometry(varchar , integer ) IS 'args: atopology, aface - Returns the polygon in the given topology with the specified face id.';
COMMENT ON FUNCTION topology.GetRingEdges(varchar , integer , integer ) IS 'args: atopology, aring, max_edges=null - Returns an ordered set of edges forming a ring with the given edge .';
COMMENT ON FUNCTION topology.GetRingEdges(varchar , integer , integer ) IS 'args: atopology, aring, max_edges=null - Returns the ordered set of signed edge identifiers met by walking on ana given edge side.';
COMMENT ON FUNCTION topology.GetNodeEdges(varchar , integer ) IS 'args: atopology, anode - Returns an ordered set of edges incident to the given node.';
......
# postgis extension
comment = 'PostGIS geometry, geography, and raster spatial types and functions'
default_version = '2.1.5'
default_version = '2.1.6'
module_pathname = '$libdir/postgis-2.1'
relocatable = true
# postgis tiger geocoder extension
comment = 'PostGIS tiger geocoder and reverse geocoder'
default_version = '2.1.5'
default_version = '2.1.6'
relocatable = false
schema = tiger
requires = 'postgis,fuzzystrmatch'
# postgis topology extension
comment = 'PostGIS topology spatial types and functions'
default_version = '2.1.5'
default_version = '2.1.6'
relocatable = false
schema = topology
requires = postgis
UPGRADEABLE_VERSIONS = \
2.0.0 \
2.0.1 \
2.0.2 \
2.0.3 \
2.0.4 \
2.0.5 \
2.0.1 \
2.0.2 \
2.0.3 \
2.0.4 \
2.0.5 \
2.0.6 \
2.1.0rc1 \
2.1.0rc2 \
2.1.0rc3 \
......@@ -12,15 +13,17 @@ UPGRADEABLE_VERSIONS = \
2.1.1 \
2.1.2 \
2.1.3 \
2.1.4
2.1.4 \
2.1.5
UPGRADEABLE_VERSIONS_MINOR = \
2.0.0 \
2.0.1 \
2.0.2 \
2.0.3 \
2.0.4 \
2.0.5
2.0.1 \
2.0.2 \
2.0.3 \
2.0.4 \
2.0.5 \
2.0.6
UPGRADEABLE_VERSIONS_PATCH = \
2.1.0rc1 \
......@@ -30,4 +33,5 @@ UPGRADEABLE_VERSIONS_PATCH = \
2.1.1 \
2.1.2 \
2.1.3 \
2.1.4
2.1.4 \
2.1.5
......@@ -11,9 +11,18 @@
# **********************************************************************
ANT=@ANT@
POSTGIS_LIB_VERSION=@POSTGIS_LIB_VERSION@
all: build
pom.xml: pom.xml.in
sed 's,%VERSION%,$(POSTGIS_LIB_VERSION),g' $< >$@
distclean:
rm -f pom.xml
build: pom.xml
build clean distclean check:
$(ANT) $@
......
......@@ -11,7 +11,7 @@
<groupId>org.postgis</groupId>
<artifactId>postgis-jdbc</artifactId>
<version>2.1.4dev</version>
<version>%VERSION%</version>
<packaging>jar</packaging>
<name>Postgis JDBC Driver</name>
<url>http://postgis.net</url>
......
......@@ -12,7 +12,7 @@
<groupId>org.postgis</groupId>
<artifactId>postgis-jdbc-jtsparser</artifactId>
<version>2.1.4dev</version>
<version>2.1.6</version>
<packaging>jar</packaging>
<name>Postgis JDBC Driver JTS Parser</name>
<url>http://postgis.net</url>
......
......@@ -67,18 +67,18 @@ will find a block that looks like this (this example is from cu_print.c):
/*
** Used by the test harness to register the tests in this file.
*/
CU_TestInfo print_tests[] = {
PG_TEST(test_lwprint_default_format),
PG_TEST(test_lwprint_format_orders),
PG_TEST(test_lwprint_optional_format),
PG_TEST(test_lwprint_oddball_formats),
PG_TEST(test_lwprint_bad_formats),
CU_TEST_INFO_NULL
void print_suite_setup(void);
void print_suite_setup(void)
{
CU_pSuite suite = CU_add_suite("Print", init_print_suite, clean_print_suite);
PG_ADD_TEST(test_lwprint_default_format);
PG_ADD_TEST(test_lwprint_format_orders);
PG_ADD_TEST(test_lwprint_optional_format);
};
Add a new line for your test:
PG_TEST(<your test function name>),
PG_ADD_TEST(<your test function name>);
The tests will be run in the order they appear in the list.
CU_TEST_INFO_NULL must always be the last entry.
......@@ -122,18 +122,16 @@ of the file, construct the array of tests (example taken from cu_print.c):
/*
** Used by the test harness to register the tests in this file.
*/
CU_TestInfo print_tests[] = {
PG_TEST(test_lwprint_default_format),
PG_TEST(test_lwprint_format_orders),
PG_TEST(test_lwprint_optional_format),
PG_TEST(test_lwprint_oddball_formats),
PG_TEST(test_lwprint_bad_formats),
CU_TEST_INFO_NULL
void print_suite_setup(void);
void print_suite_setup(void)
{
CU_pSuite suite = CU_add_suite("Print", init_print_suite, clean_print_suite);
PG_ADD_TEST(test_lwprint_default_format);
PG_ADD_TEST(test_lwprint_format_orders);
PG_ADD_TEST(test_lwprint_optional_format);
};
Note that each test function must be wrapped with the PG_TEST macro, and
the last entry must be CU_TEST_INFO_NULL. The naming convention is
generally <suite name>_tests.
The naming convention is generally <suite name>_suite_setup.
3.3 Construct the init / clean functions and the suite struct.
......@@ -148,18 +146,10 @@ The naming convention is generally:
static int init_<suite name>(void)
static int clean_<suite_name>(void)
The very last line of the file (after all the functions and the tests
array) should look like this:
CU_SuiteInfo <suite info name> = {"<suite display name>", <init function>, <clean function>, <test array>};
The naming convention is generally <suite name>_suite. If you do not have
an init function, you may pass "NULL" instead. Same with the clean function.
3.4 Add your suite to cu_tester.c.
Edit cu_tester.c. Search for "ADD YOUR SUITE HERE" and add new lines in
the appropriate places, using the suite info name you used in the last step.
the appropriate places, using the _suite_setup name you used in the last step.
Now run make (remember to run configure first), then ./cu_tester and your
new suite should run.
......
/**********************************************************************
* $Id: cu_algorithm.c 13134 2014-12-01 08:47:21Z strk $
* $Id: cu_algorithm.c 13247 2015-02-20 15:10:29Z pramsey $
*
* PostGIS - Spatial Types for PostgreSQL
* http://postgis.net
......@@ -895,28 +895,48 @@ static void test_geohash_point_as_int(void)
CU_ASSERT_EQUAL(gh, (unsigned int)4166944232);
}
static void test_lwgeom_simplify(void)
{
LWGEOM *l;
char *ewkt;
/* Not simplifiable */
l = lwgeom_simplify(lwgeom_from_wkt("LINESTRING(0 0, 50 1.00001, 100 0)", LW_PARSER_CHECK_NONE), 1.0);
ewkt = lwgeom_to_ewkt(l);
CU_ASSERT_STRING_EQUAL(ewkt, "LINESTRING(0 0,50 1.00001,100 0)");
lwgeom_free(l);
lwfree(ewkt);
/* Simplifiable */
l = lwgeom_simplify(lwgeom_from_wkt("LINESTRING(0 0,50 0.99999,100 0)", LW_PARSER_CHECK_NONE), 1.0);
ewkt = lwgeom_to_ewkt(l);
CU_ASSERT_STRING_EQUAL(ewkt, "LINESTRING(0 0,100 0)");
lwgeom_free(l);
lwfree(ewkt);
}
/*
** Used by test harness to register the tests in this file.
*/
CU_TestInfo algorithms_tests[] =
void algorithms_suite_setup(void);
void algorithms_suite_setup(void)
{
PG_TEST(test_lw_segment_side),
PG_TEST(test_lw_segment_intersects),
PG_TEST(test_lwline_crossing_short_lines),
PG_TEST(test_lwline_crossing_long_lines),
PG_TEST(test_lwline_crossing_bugs),
PG_TEST(test_lwpoint_set_ordinate),
PG_TEST(test_lwpoint_get_ordinate),
PG_TEST(test_point_interpolate),
PG_TEST(test_lwline_clip),
PG_TEST(test_lwline_clip_big),
PG_TEST(test_lwmline_clip),
PG_TEST(test_geohash_point),
PG_TEST(test_geohash_precision),
PG_TEST(test_geohash),
PG_TEST(test_geohash_point_as_int),
PG_TEST(test_isclosed),
CU_TEST_INFO_NULL
};
CU_SuiteInfo algorithms_suite = {"PostGIS Computational Geometry Suite", init_cg_suite, clean_cg_suite, algorithms_tests};
CU_pSuite suite = CU_add_suite("Computational Geometry", init_cg_suite, clean_cg_suite);
PG_ADD_TEST(suite,test_lw_segment_side);
PG_ADD_TEST(suite,test_lw_segment_intersects);
PG_ADD_TEST(suite,test_lwline_crossing_short_lines);
PG_ADD_TEST(suite,test_lwline_crossing_long_lines);
PG_ADD_TEST(suite,test_lwline_crossing_bugs);
PG_ADD_TEST(suite,test_lwpoint_set_ordinate);
PG_ADD_TEST(suite,test_lwpoint_get_ordinate);
PG_ADD_TEST(suite,test_point_interpolate);
PG_ADD_TEST(suite,test_lwline_clip);
PG_ADD_TEST(suite,test_lwline_clip_big);
PG_ADD_TEST(suite,test_lwmline_clip);
PG_ADD_TEST(suite,test_geohash_point);
PG_ADD_TEST(suite,test_geohash_precision);
PG_ADD_TEST(suite,test_geohash);
PG_ADD_TEST(suite,test_geohash_point_as_int);
PG_ADD_TEST(suite,test_isclosed);
PG_ADD_TEST(suite,test_lwgeom_simplify);
}
......@@ -323,19 +323,16 @@ static void buildarea7(void)
}
/*
** Used by test harness to register the tests in this file.
*/
static CU_TestInfo buildarea_tests[] =
void buildarea_suite_setup(void);
void buildarea_suite_setup(void)
{
PG_TEST(buildarea1),
PG_TEST(buildarea2),
PG_TEST(buildarea3),
PG_TEST(buildarea4),
PG_TEST(buildarea4b),
PG_TEST(buildarea5),
PG_TEST(buildarea6),
PG_TEST(buildarea7),
CU_TEST_INFO_NULL
};
CU_SuiteInfo buildarea_suite = {"buildarea", NULL, NULL, buildarea_tests};
CU_pSuite suite = CU_add_suite("Buildarea", NULL, NULL);
PG_ADD_TEST(suite,buildarea1);
PG_ADD_TEST(suite,buildarea2);
PG_ADD_TEST(suite,buildarea3);
PG_ADD_TEST(suite,buildarea4);
PG_ADD_TEST(suite,buildarea4b);
PG_ADD_TEST(suite,buildarea5);
PG_ADD_TEST(suite,buildarea6);
PG_ADD_TEST(suite,buildarea7);
}
......@@ -139,9 +139,9 @@ static void test_lwgeom_make_valid(void)
/*
** Used by test harness to register the tests in this file.
*/
static CU_TestInfo clean_tests[] =
void clean_suite_setup(void);
void clean_suite_setup(void)
{
PG_TEST(test_lwgeom_make_valid),
CU_TEST_INFO_NULL
};
CU_SuiteInfo clean_suite = {"clean", NULL, NULL, clean_tests};
CU_pSuite suite = CU_add_suite("Geometry Clean", NULL, NULL);
PG_ADD_TEST(suite, test_lwgeom_make_valid);
}
......@@ -164,11 +164,11 @@ static void test_sfs_11(void)
/*
** Used by test harness to register the tests in this file.
*/
CU_TestInfo force_sfs_tests[] =
void force_sfs_suite_setup(void);
void force_sfs_suite_setup(void)
{
PG_TEST(test_sfs_11),
PG_TEST(test_sfs_12),
PG_TEST(test_sqlmm),
CU_TEST_INFO_NULL
};
CU_SuiteInfo force_sfs_suite = {"force_sfs", NULL, NULL, force_sfs_tests};
CU_pSuite suite = CU_add_suite("Force SFS", NULL, NULL);
PG_ADD_TEST(suite, test_sfs_11);
PG_ADD_TEST(suite, test_sfs_12);
PG_ADD_TEST(suite, test_sqlmm);
}
/**********************************************************************
* $Id: cu_geodetic.c 13134 2014-12-01 08:47:21Z strk $
* $Id: cu_geodetic.c 13242 2015-02-19 00:22:22Z pramsey $
*
* PostGIS - Spatial Types for PostgreSQL
* http://postgis.net
......@@ -1484,31 +1484,31 @@ static void test_lwgeom_area_sphere(void)
/*
** Used by test harness to register the tests in this file.
*/
CU_TestInfo geodetic_tests[] =
void geodetic_suite_setup(void);
void geodetic_suite_setup(void)
{
PG_TEST(test_sphere_direction),
PG_TEST(test_sphere_project),
PG_TEST(test_lwgeom_area_sphere),
PG_TEST(test_signum),
PG_TEST(test_gbox_from_spherical_coordinates),
PG_TEST(test_gserialized_get_gbox_geocentric),
PG_TEST(test_clairaut),
PG_TEST(test_edge_intersection),
PG_TEST(test_edge_intersects),
PG_TEST(test_edge_distance_to_point),
PG_TEST(test_edge_distance_to_edge),
PG_TEST(test_lwgeom_distance_sphere),
PG_TEST(test_lwgeom_check_geodetic),
PG_TEST(test_gserialized_from_lwgeom),
PG_TEST(test_spheroid_distance),
PG_TEST(test_spheroid_area),
PG_TEST(test_lwpoly_covers_point2d),
PG_TEST(test_gbox_utils),
PG_TEST(test_vector_angle),
PG_TEST(test_vector_rotate),
PG_TEST(test_lwgeom_segmentize_sphere),
PG_TEST(test_ptarray_contains_point_sphere),
PG_TEST(test_ptarray_contains_point_sphere_iowa),
CU_TEST_INFO_NULL
};
CU_SuiteInfo geodetic_suite = {"Geodetic Suite", NULL, NULL, geodetic_tests};
CU_pSuite suite = CU_add_suite("Geodetic", NULL, NULL);
PG_ADD_TEST(suite, test_sphere_direction);
PG_ADD_TEST(suite, test_sphere_project);
PG_ADD_TEST(suite, test_lwgeom_area_sphere);
PG_ADD_TEST(suite, test_signum);
PG_ADD_TEST(suite, test_gbox_from_spherical_coordinates);
PG_ADD_TEST(suite, test_gserialized_get_gbox_geocentric);
PG_ADD_TEST(suite, test_clairaut);
PG_ADD_TEST(suite, test_edge_intersection);