[geos-commits] r2038 - in trunk: . tests/unit tests/unit/precision
svn_geos at osgeo.org
svn_geos at osgeo.org
Sat Dec 8 19:02:38 EST 2007
Author: mloskot
Date: 2007-12-08 19:02:37 -0500 (Sat, 08 Dec 2007)
New Revision: 2038
Added:
trunk/tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp
Modified:
trunk/ChangeLog
trunk/tests/unit/Makefile.am
Log:
Added test suite for class geos::precision::SimpleGeometryPrecisionReducer.
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2007-12-08 22:59:54 UTC (rev 2037)
+++ trunk/ChangeLog 2007-12-09 00:02:37 UTC (rev 2038)
@@ -1,4 +1,9 @@
+2007-12-09 Mateusz Loskot <mateusz at loskot.net>
+
+ * tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp:
+ test suite for class geos::precision::SimpleGeometryPrecisionReducer
+
2007-11-26 Mateusz Loskot <mateusz at loskot.net>
* source\Makefile.vc: enabled target copying version.h.vc
Modified: trunk/tests/unit/Makefile.am
===================================================================
--- trunk/tests/unit/Makefile.am 2007-12-08 22:59:54 UTC (rev 2037)
+++ trunk/tests/unit/Makefile.am 2007-12-09 00:02:37 UTC (rev 2038)
@@ -50,8 +50,9 @@
noding/SegmentNodeTest.cpp \
noding/SegmentPointComparatorTest.cpp \
noding/SegmentStringTest.cpp \
+ precision/GeometrySnapperTest.cpp \
precision/LineStringSnapperTest.cpp \
- precision/GeometrySnapperTest.cpp \
+ precision/SimpleGeometryPrecisionReducerTest.cpp \
simplify/DouglasPeuckerSimplifierTest.cpp \
simplify/TopologyPreservingSimplifierTest.cpp \
util/UniqueCoordinateArrayFilterTest.cpp \
Added: trunk/tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp
===================================================================
--- trunk/tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp (rev 0)
+++ trunk/tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp 2007-12-09 00:02:37 UTC (rev 2038)
@@ -0,0 +1,149 @@
+// $Id$
+//
+// Test Suite for geos::precision::SimpleGeometryPrecisionReducer class.
+
+// TUT
+#include <tut.h>
+// GEOS
+#include <geos/precision/SimpleGeometryPrecisionReducer.h>
+#include <geos/geom/Geometry.h>
+#include <geos/geom/GeometryFactory.h>
+#include <geos/geom/PrecisionModel.h>
+#include <geos/io/WKTReader.h>
+
+// STL
+#include <string>
+#include <vector>
+
+namespace tut
+{
+ //
+ // Test Group
+ //
+
+ // Common data used by tests
+ struct test_sgpr_data
+ {
+ typedef std::auto_ptr<geos::geom::Geometry> GeometryPtr;
+
+ geos::geom::PrecisionModel pm_float_;
+ geos::geom::PrecisionModel pm_fixed_;
+ geos::geom::GeometryFactory factory_;
+ geos::io::WKTReader reader_;
+ geos::precision::SimpleGeometryPrecisionReducer reducer_;
+ geos::precision::SimpleGeometryPrecisionReducer reducer2_; // keep collapse
+
+ test_sgpr_data() :
+ pm_float_(),
+ pm_fixed_(1),
+ factory_(&pm_float_, 0),
+ reader_(&factory_),
+ reducer_(&pm_fixed_),
+ reducer2_(&pm_fixed_)
+ {
+ reducer2_.setRemoveCollapsedComponents(false);
+ }
+};
+
+ typedef test_group<test_sgpr_data> group;
+ typedef group::object object;
+
+ group test_sgpr_group("geos::precision::SimpleGeometryPrecisionReducer");
+
+ //
+ // Test Cases
+ //
+
+ // Test square
+ template<>
+ template<>
+ void object::test<1>()
+ {
+ GeometryPtr g1(reader_.read("POLYGON (( 0 0, 0 1.4, 1.4 1.4, 1.4 0, 0 0 ))"));
+ GeometryPtr g2(reader_.read("POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0 ))"));
+
+ GeometryPtr result(reducer_.reduce(g1.get()));
+
+ ensure( result->equalsExact(g2.get()) );
+ }
+
+ // Test tiny square collapse
+ template<>
+ template<>
+ void object::test<2>()
+ {
+ GeometryPtr g1(reader_.read("POLYGON (( 0 0, 0 .4, .4 .4, .4 0, 0 0 ))"));
+ GeometryPtr g2(reader_.read("POLYGON EMPTY"));
+
+ GeometryPtr result(reducer_.reduce(g1.get()));
+
+ ensure( result->equalsExact(g2.get()) );
+ }
+
+ // Test square collapse
+ template<>
+ template<>
+ void object::test<3>()
+ {
+ GeometryPtr g1(reader_.read("POLYGON (( 0 0, 0 1.4, .4 .4, .4 0, 0 0 ))"));
+ GeometryPtr g2(reader_.read("POLYGON EMPTY"));
+
+ GeometryPtr result(reducer_.reduce(g1.get()));
+
+ ensure( result->equalsExact(g2.get()) );
+ }
+
+ // Test square keep collapse
+ template<>
+ template<>
+ void object::test<4>()
+ {
+ GeometryPtr g1(reader_.read("POLYGON (( 0 0, 0 1.4, .4 .4, .4 0, 0 0 ))"));
+ GeometryPtr g2(reader_.read("POLYGON (( 0 0, 0 1, 0 0, 0 0, 0 0 ))"));
+
+ GeometryPtr result(reducer2_.reduce(g1.get()));
+
+ ensure( result->equalsExact(g2.get()) );
+ }
+
+ // Test line
+ template<>
+ template<>
+ void object::test<5>()
+ {
+ GeometryPtr g1(reader_.read("LINESTRING ( 0 0, 0 1.4 )"));
+ GeometryPtr g2(reader_.read("LINESTRING (0 0, 0 1)"));
+
+ GeometryPtr result(reducer_.reduce(g1.get()));
+
+ ensure( result->equalsExact(g2.get()) );
+ }
+
+ // Test line remove collapse
+ template<>
+ template<>
+ void object::test<6>()
+ {
+ GeometryPtr g1(reader_.read("LINESTRING ( 0 0, 0 .4 )"));
+ GeometryPtr g2(reader_.read("LINESTRING EMPTY"));
+
+ GeometryPtr result(reducer_.reduce(g1.get()));
+
+ ensure( result->equalsExact(g2.get()) );
+ }
+
+ // Test line keep collapse
+ template<>
+ template<>
+ void object::test<7>()
+ {
+ GeometryPtr g1(reader_.read("LINESTRING ( 0 0, 0 .4 )"));
+ GeometryPtr g2(reader_.read("LINESTRING ( 0 0, 0 0 )"));
+
+ GeometryPtr result(reducer2_.reduce(g1.get()));
+
+ ensure( result->equalsExact(g2.get()) );
+ }
+
+} // namespace tut
+
Property changes on: trunk/tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp
___________________________________________________________________
Name: svn:keyword
+ Id
More information about the geos-commits
mailing list