summaryrefslogtreecommitdiff
path: root/misc/openlayers/tests/Geometry
diff options
context:
space:
mode:
authorChris Schlaeger <chris@linux.com>2015-10-17 21:36:38 +0200
committerChris Schlaeger <chris@linux.com>2015-10-17 21:36:38 +0200
commite30f267181d990947e67909de4809fa941698c85 (patch)
tree46e9f94c2b3699ed378963b420b8a8d361286ea1 /misc/openlayers/tests/Geometry
parente763ceb183f389fcd314a4a6a712d87c9d4cdb32 (diff)
downloadpostrunner-e30f267181d990947e67909de4809fa941698c85.zip
Upgrading openlayers to 3.x
Diffstat (limited to 'misc/openlayers/tests/Geometry')
-rw-r--r--misc/openlayers/tests/Geometry/Collection.html431
-rw-r--r--misc/openlayers/tests/Geometry/Curve.html157
-rw-r--r--misc/openlayers/tests/Geometry/LineString.html443
-rw-r--r--misc/openlayers/tests/Geometry/LinearRing.html362
-rw-r--r--misc/openlayers/tests/Geometry/MultiLineString.html267
-rw-r--r--misc/openlayers/tests/Geometry/MultiPoint.html130
-rw-r--r--misc/openlayers/tests/Geometry/MultiPolygon.html34
-rw-r--r--misc/openlayers/tests/Geometry/Point.html244
-rw-r--r--misc/openlayers/tests/Geometry/Polygon.html420
9 files changed, 0 insertions, 2488 deletions
diff --git a/misc/openlayers/tests/Geometry/Collection.html b/misc/openlayers/tests/Geometry/Collection.html
deleted file mode 100644
index 7c9fd62..0000000
--- a/misc/openlayers/tests/Geometry/Collection.html
+++ /dev/null
@@ -1,431 +0,0 @@
-<html>
-<head>
- <script src="../OLLoader.js"></script>
- <script type="text/javascript">
- var coll;
-
- function test_Collection_constructor (t) {
- t.plan( 4 );
-
- //null param
- coll = new OpenLayers.Geometry.Collection();
- t.ok( coll instanceof OpenLayers.Geometry.Collection, "new OpenLayers.Geometry.Collection returns coll object" );
- t.eq( coll.CLASS_NAME, "OpenLayers.Geometry.Collection", "coll.CLASS_NAME is set correctly");
- t.eq( coll.components.length, 0, "coll.components is set correctly");
-
- OpenLayers.Geometry.Collection.prototype._addComponents =
- OpenLayers.Geometry.Collection.prototype.addComponents;
- OpenLayers.Geometry.Collection.prototype.addComponents =
- function(comps) { g_addcomponents = comps; };
-
- //valid param
- g_addcomponents = null;
- var components = {};
- coll = new OpenLayers.Geometry.Collection(components);
- t.ok(g_addcomponents, components, "addcomponents called on non-null param")
-
- OpenLayers.Geometry.Collection.prototype.addComponents =
- OpenLayers.Geometry.Collection.prototype._addComponents;
- }
-
- function test_Collection_addComponents (t) {
- t.plan( 10 );
-
- coll = new OpenLayers.Geometry.Collection();
-
- //null
- coll.addComponents(null);
- t.ok(true, "doesn't break on add null components");
-
- OpenLayers.Geometry.Collection.prototype._addComponent =
- OpenLayers.Geometry.Collection.prototype.addComponent;
-
- OpenLayers.Geometry.Collection.prototype.addComponent =
- function(comp) { g_addComp = comp; g_added++};
-
-
- //nonarray argument
- var g_added = 0;
- var g_addComp = 0;
- var component = {};
- coll.addComponents(component);
- t.eq(g_added, 1, "added once");
- t.eq(g_addComp, component, "added component");
-
- //array arg
- var g_added = 0;
- var g_addComp = 0;
- var component1 = {};
- var component2 = {};
- coll.addComponents([component1, component2]);
- t.eq(g_added, 2, "added twice");
- t.eq(g_addComp, component2, "added component");
-
- OpenLayers.Geometry.Collection.prototype.addComponent =
- OpenLayers.Geometry.Collection.prototype._addComponent;
-
-
-
- coll.addComponents(new OpenLayers.Geometry.Point(0,0));
- coll.addComponents(new OpenLayers.Geometry.Point(10,10));
- t.eq( coll.components.length, 2, "added two components to collection" );
- bounds = coll.getBounds();
- t.eq( bounds.left, 0, "left bound is 0" );
- t.eq( bounds.bottom, 0, "bottom bound is 0" );
- t.eq( bounds.right, 10, "right bound is 10" );
- t.eq( bounds.top, 10, "top bound is 10" );
- }
-
- function test_Collection_clone (t) {
- t.plan( 3 );
- coll = new OpenLayers.Geometry.Collection();
- coll.addComponents(new OpenLayers.Geometry.Point(0,0));
- coll.addComponents(new OpenLayers.Geometry.Point(10,10));
- coll2 = coll.clone();
- t.ok( coll2 instanceof OpenLayers.Geometry.Collection, "coll.clone() returns collection object" );
- t.eq( coll2.components.length, 2, "coll2.components.length is set correctly");
- t.ok( coll2.components[0] instanceof OpenLayers.Geometry.Point,
- "coll2.components.length is set correctly");
- }
-
- function test_Collection_removeComponents (t) {
- t.plan( 5 );
- coll = new OpenLayers.Geometry.Collection();
- point = new OpenLayers.Geometry.Point(0,0);
- coll.addComponents(point);
- coll.addComponents(new OpenLayers.Geometry.Point(10,10));
- coll.removeComponents(coll.components[0]);
- t.eq( coll.components.length, 1, "coll.components.length is smaller after removeComponent" );
- t.ok( coll.bounds == null, "bounds are nullified after call to remove (to trigger recalc on getBounds()");
- bounds = coll.getBounds();
- t.eq( bounds.left, 10, "left bound is 10 after removeComponent" );
- t.eq( bounds.bottom, 10, "bottom bound is 10 after removeComponent" );
-
- coll = new OpenLayers.Geometry.Collection();
- for(var i=0; i<5; ++i) {
- coll.addComponents(
- new OpenLayers.Geometry.Point(Math.random(), Math.random())
- );
- }
- coll.removeComponents(coll.components);
- t.eq(coll.components.length, 0,
- "remove components even works with multiple components");
-
- }
-
- function test_Collection_calculateBounds(t) {
- t.plan( 9 );
-
- var coll = new OpenLayers.Geometry.Collection();
- coll.calculateBounds();
- t.eq(coll.bounds, null, "null components list gives null bounds on calculation()");
-
- var p1 = new OpenLayers.Geometry.Point(10,20);
- var p2 = new OpenLayers.Geometry.Point(30,40);
-
- var components = [p1, p2];
- coll = new OpenLayers.Geometry.Collection(components);
-
- coll.calculateBounds();
-
- t.eq(coll.bounds.left, 10, "good left bounds");
- t.eq(coll.bounds.bottom, 20, "good bottom bounds");
- t.eq(coll.bounds.right, 30, "good right bounds");
- t.eq(coll.bounds.top, 40, "good top bounds");
-
- var newPoint = new OpenLayers.Geometry.Point(60,70);
- coll.addComponent(newPoint);
- coll.calculateBounds();
-
- t.eq(coll.bounds.left, 10, "good left bounds");
- t.eq(coll.bounds.bottom, 20, "good bottom bounds");
- t.eq(coll.bounds.right, 60, "good right bounds");
- t.eq(coll.bounds.top, 70, "good top bounds");
- }
-
- function test_Collection_equals(t) {
- t.plan(1);
- var geom = new OpenLayers.Geometry.Collection();
- t.ok(!geom.equals(), "collection.equals() returns false for undefined");
- }
-
- function test_Collection_addComponent(t) {
- t.plan(10);
-
- var coll = new OpenLayers.Geometry.Collection();
-
- //null
- coll.addComponent(null);
- t.ok(!coll.addComponent(null),
- "addComponent returns false for bad component")
-
- //good component
- var component = new OpenLayers.Geometry.Point(3,4);
- t.ok(coll.addComponent(component),
- "addComponent returns true for good component");
- t.ok(coll.bounds == null, "bounds cache correctly cleared");
-
- var foundComponent = false;
- for(var i=0; i< coll.components.length; i++) {
- if (coll.components[i].equals(component)) {
- foundComponent = true;
- }
- }
- t.ok(foundComponent, "component added to internal array");
-
- // restricted components
- coll.componentTypes = ["OpenLayers.Geometry.Point",
- "OpenLayers.Geometry.LineString"];
- var point1 = new OpenLayers.Geometry.Point(0,0);
- var point2 = new OpenLayers.Geometry.Point(1,1);
- var line = new OpenLayers.Geometry.LineString([point1, point2]);
- var multipoint = new OpenLayers.Geometry.MultiPoint([point1, point2]);
-
- t.ok(coll.addComponent(point1),
- "addComponent returns true for 1st geometry type in componentTypes");
- t.ok(OpenLayers.Util.indexOf(coll.components, point1) > -1,
- "addComponent adds 1st restricted type to components array");
- t.ok(coll.addComponent(line),
- "addComponent returns true for 2nd geometry type in componentTypes");
- t.ok(OpenLayers.Util.indexOf(coll.components, point1) > -1,
- "addComponent adds 2nd restricted type to components array");
- t.ok(!coll.addComponent(multipoint),
- "addComponent returns false for geometry type not in componentTypes");
- t.ok(OpenLayers.Util.indexOf(coll.components, multipoint) == -1,
- "addComponent doesn't add restricted type to component array");
-
- }
-
- function test_collection_getLength(t) {
- t.plan(2);
-
- //null
- var coll = new OpenLayers.Geometry.Collection();
- t.eq( coll.getLength(), 0, "null coll has 0 getlength");
-
- //valid
- coll.components = [
- { 'getLength': function() { return 50; } },
- { 'getLength': function() { return 15; } }
- ];
- t.eq( coll.getLength(), 65, "coll with valid components correctly sums getlength");
- }
-
- function test_collection_getArea(t) {
- t.plan(2);
-
- //null
- var coll = new OpenLayers.Geometry.Collection();
- t.eq( coll.getArea(), 0, "null coll has 0 getArea");
-
- //valid
- coll.components = [
- { 'getArea': function() { return 50; } },
- { 'getArea': function() { return 15; } }
- ];
- t.eq( coll.getArea(), 65, "coll with valid components correctly sums getArea");
- }
-
- function test_transform(t) {
- t.plan(5);
- var p1 = new OpenLayers.Geometry.Point(0,0);
- p1.bounds = "foo";
- var p2 = new OpenLayers.Geometry.Point(1,1);
- p2.bounds = "foo";
- var line = new OpenLayers.Geometry.LineString([p1, p2]);
- var multipoint = new OpenLayers.Geometry.MultiPoint([p1, p2]);
- var coll = new OpenLayers.Geometry.Collection([
- p1, p2, line, multipoint
- ]);
- coll.bounds = "foo";
-
- var wgs84 = new OpenLayers.Projection("EPSG:4326");
- var sm = new OpenLayers.Projection("EPSG:900913");
- coll.transform(wgs84, sm);
-
- t.eq(coll.bounds, null, "coll bounds cleared");
- t.eq(p1.bounds, null, "p1 component bounds cleared");
- t.eq(p2.bounds, null, "p2 component bounds cleared");
- t.eq(line.bounds, null, "line component bounds cleared");
- t.eq(multipoint.bounds, null, "multipoint component bounds cleared");
-
- }
-
- function test_getCentroid_pts_only(t) {
- t.plan(3);
-
- coll = new OpenLayers.Geometry.Collection();
- coll.addComponent(new OpenLayers.Geometry.Point(0,0));
- coll.addComponent(new OpenLayers.Geometry.Point(1,1));
-
- centroid = coll.getCentroid(true);
- t.ok(centroid != null, 'The centroid is not null.');
- t.eq(centroid.x, 0.5, 'The centroid x coordinate is good.');
- t.eq(centroid.y, 0.5, 'The centroid y coordinate is good.');
-
- coll.destroy();
- }
-
- function test_getCentroid_poly_nonrecursive(t) {
- t.plan(3);
-
- coll = new OpenLayers.Geometry.Collection();
- coll.addComponent(
- new OpenLayers.Geometry.Polygon([
- new OpenLayers.Geometry.LinearRing([
- new OpenLayers.Geometry.Point(0,0),
- new OpenLayers.Geometry.Point(0,1),
- new OpenLayers.Geometry.Point(1,1),
- new OpenLayers.Geometry.Point(1,0)
- ])
- ])
- );
- // performing non-recursive getCentroid means this next polygon
- // is excluded from the centroid computation
- coll.addComponent(
- new OpenLayers.Geometry.Polygon([
- new OpenLayers.Geometry.LinearRing([
- new OpenLayers.Geometry.Point(2,2),
- new OpenLayers.Geometry.Point(2,3),
- new OpenLayers.Geometry.Point(3,3),
- new OpenLayers.Geometry.Point(3,2)
- ])
- ])
- );
-
- centroid = coll.getCentroid();
- t.ok(centroid != null, 'The centroid is not null.');
- t.eq(centroid.x, 0.5, 'The centroid x coordinate is good.');
- t.eq(centroid.y, 0.5, 'The centroid y coordinate is good.');
-
- coll.destroy();
- }
-
- function test_getCentroid_poly_only(t) {
- t.plan(3);
-
- coll = new OpenLayers.Geometry.Collection();
- coll.addComponent(
- new OpenLayers.Geometry.Polygon([
- new OpenLayers.Geometry.LinearRing([
- new OpenLayers.Geometry.Point(0,0),
- new OpenLayers.Geometry.Point(0,1),
- new OpenLayers.Geometry.Point(1,1),
- new OpenLayers.Geometry.Point(1,0)
- ])
- ])
- );
-
- centroid = coll.getCentroid(true);
- t.ok(centroid != null, 'The centroid is not null.');
- t.eq(centroid.x, 0.5, 'The centroid x coordinate is good.');
- t.eq(centroid.y, 0.5, 'The centroid y coordinate is good.');
-
- coll.destroy();
- }
-
- function test_getCentroid_poly_and_pts(t) {
- t.plan(3);
-
- coll = new OpenLayers.Geometry.Collection();
- coll.addComponent(
- new OpenLayers.Geometry.Polygon([
- new OpenLayers.Geometry.LinearRing([
- new OpenLayers.Geometry.Point(0,0),
- new OpenLayers.Geometry.Point(0,1),
- new OpenLayers.Geometry.Point(1,1),
- new OpenLayers.Geometry.Point(1,0)
- ])
- ])
- );
-
- // since the polygon above has an area of 1 and these
- // points have an area of 0, they should not change the centroid
- coll.addComponent( new OpenLayers.Geometry.Point(2,2) );
- coll.addComponent( new OpenLayers.Geometry.Point(4,4) );
-
- centroid = coll.getCentroid(true);
- t.ok(centroid != null, 'The centroid is not null.');
- t.eq(centroid.x, 0.5, 'The centroid x coordinate is good.');
- t.eq(centroid.y, 0.5, 'The centroid y coordinate is good.');
-
- coll.destroy();
- }
-
- function test_getCentroid_poly_big_and_small(t) {
- t.plan(3);
-
- coll = new OpenLayers.Geometry.Collection();
- // polygon w/area=1, centroid=0.5,0.5
- coll.addComponent(
- new OpenLayers.Geometry.Polygon([
- new OpenLayers.Geometry.LinearRing([
- new OpenLayers.Geometry.Point(0,0),
- new OpenLayers.Geometry.Point(0,1),
- new OpenLayers.Geometry.Point(1,1),
- new OpenLayers.Geometry.Point(1,0)
- ])
- ])
- );
-
- // since the polygon above has an area of 1 and this
- // polygon has an area of 4, the center is weighted 20% toward
- // the first polygon
-
- // polygon w/area=4, centroid=5.5,5.5
- coll.addComponent(
- new OpenLayers.Geometry.Polygon([
- new OpenLayers.Geometry.LinearRing([
- new OpenLayers.Geometry.Point(4.5,-0.5),
- new OpenLayers.Geometry.Point(4.5,1.5),
- new OpenLayers.Geometry.Point(6.5,1.5),
- new OpenLayers.Geometry.Point(6.5,-0.5)
- ])
- ])
- );
-
- centroid = coll.getCentroid(true);
- t.ok(centroid != null, 'The centroid is not null.');
- t.eq(centroid.x, 4.5, 'The centroid x coordinate is good.');
- t.eq(centroid.y, 0.5, 'The centroid y coordinate is good.');
-
- coll.destroy();
- }
-
- function test_avoid_infinite_recursion(t) {
- t.plan(1);
-
- var g = new OpenLayers.Geometry.Polygon([
- new OpenLayers.Geometry.LinearRing(),
- new OpenLayers.Geometry.LinearRing()
- ]);
- var bounds;
- try {
- bounds = g.getBounds();
- t.eq(bounds, null, "Polygon with empty linear ring has null bounds");
- } catch (err) {
- t.fail("Failed to get bounds of polygon with empty linear ring: " + err.message);
- }
-
- }
-
-
- function test_Collection_destroy(t) {
- t.plan( 3 );
- coll = new OpenLayers.Geometry.Collection();
- coll.addComponents(new OpenLayers.Geometry.Point(0,0));
- coll.addComponents(new OpenLayers.Geometry.Point(10,10));
- coll.getBounds();
- coll.destroy();
-
- t.ok(coll.components == null, "components array cleared");
- t.ok(coll.getBounds() == null, "bounds is cleared");
- t.ok(coll.id == null, "id is cleared");
-
- }
-
- </script>
-</head>
-<body>
-</body>
-</html>
diff --git a/misc/openlayers/tests/Geometry/Curve.html b/misc/openlayers/tests/Geometry/Curve.html
deleted file mode 100644
index 5afebdf..0000000
--- a/misc/openlayers/tests/Geometry/Curve.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<html>
-<head>
- <script src="../OLLoader.js"></script>
- <script type="text/javascript">
- var curve;
- var components = [new OpenLayers.Geometry.Point(10,10),
- new OpenLayers.Geometry.Point(0,0)];
-
- function test_Curve_constructor (t) {
- t.plan( 3 );
- curve = new OpenLayers.Geometry.Curve();
- t.ok( curve instanceof OpenLayers.Geometry.Curve, "new OpenLayers.Geometry.Curve returns curve object" );
- t.eq( curve.CLASS_NAME, "OpenLayers.Geometry.Curve", "curve.CLASS_NAME is set correctly");
- t.eq( curve.components, [], "curve.components is set correctly");
- }
-
- function test_Curve_constructor (t) {
- t.plan( 2 );
- curve = new OpenLayers.Geometry.Curve(components);
- t.ok( curve instanceof OpenLayers.Geometry.Curve, "new OpenLayers.Geometry.Curve returns curve object" );
- t.eq( curve.components.length, 2, "curve.components.length is set correctly");
- }
-
- function test_Curve_clone (t) {
- t.plan( 2 );
- curve = new OpenLayers.Geometry.Curve(components);
- curve2 = curve.clone();
- t.ok( curve2 instanceof OpenLayers.Geometry.Curve, "curve.clone() returns curve object" );
- t.eq( curve2.components.length, 2, "curve2.components.length is set correctly");
- }
-
- function test_Curve_calculateBounds(t) {
- t.plan( 17 );
-
-
- var curve = new OpenLayers.Geometry.Curve();
- curve.calculateBounds();
- t.eq(curve.bounds, null, "bounds null when no components");
-
- var p1 = new OpenLayers.Geometry.Point(10,20);
- var p2 = new OpenLayers.Geometry.Point(30,40);
-
- var components = [p1, p2];
- var curve = new OpenLayers.Geometry.Curve(components);
-
- curve.calculateBounds();
-
- t.eq(curve.bounds.left, 10, "good left bounds");
- t.eq(curve.bounds.bottom, 20, "good bottom bounds");
- t.eq(curve.bounds.right, 30, "good right bounds");
- t.eq(curve.bounds.top, 40, "good top bounds");
-
- var newPoint = new OpenLayers.Geometry.Point(60,70);
- curve.addComponent(newPoint);
- curve.calculateBounds();
-
- t.eq(curve.bounds.left, 10, "good left bounds");
- t.eq(curve.bounds.bottom, 20, "good bottom bounds");
- t.eq(curve.bounds.right, 60, "good right bounds");
- t.eq(curve.bounds.top, 70, "good top bounds");
-
- //nullifying the bounds
-
- //before calculation
- curve = new OpenLayers.Geometry.Curve(components);
- curve.bounds = null;
- curve.calculateBounds();
-
- t.eq(curve.bounds.left, 10, "good left bounds");
- t.eq(curve.bounds.bottom, 20, "good bottom bounds");
- t.eq(curve.bounds.right, 30, "good right bounds");
- t.eq(curve.bounds.top, 40, "good top bounds");
-
- //before addComponent
- curve.bounds = null;
- curve.addComponent(newPoint);
- curve.calculateBounds();
-
- t.eq(curve.bounds.left, 10, "good left bounds");
- t.eq(curve.bounds.bottom, 20, "good bottom bounds");
- t.eq(curve.bounds.right, 60, "good right bounds");
- t.eq(curve.bounds.top, 70, "good top bounds");
-
- }
-
- function test_Curve_addComponent (t) {
- t.plan( 8 );
- curve = new OpenLayers.Geometry.Curve(components);
- curve.addComponent(new OpenLayers.Geometry.Point(20,30));
- bounds = curve.getBounds();
- t.eq( curve.components.length, 3, "new point added to array" );
- t.eq( bounds.top, 30, "top bound is 30 after addComponent" );
- t.eq( bounds.right, 20, "right bound is 20 after addComponent" );
- curve.addComponent(new OpenLayers.Geometry.Point(-20,-30), 1);
- bounds = curve.getBounds();
- t.eq( curve.components.length, 4, "new point added to array" );
- t.eq( bounds.bottom, -30, "bottom bound is -30 after 2nd addComponent" );
- t.eq( bounds.left, -20, "left bound is 20 after 2nd addComponent" );
- t.eq( curve.components[1].x, -20, "new point.lon is -20 (index worked)" );
- t.eq( curve.components[1].y, -30, "new point.lat is -30 (index worked)" );
- }
-
- function test_Curve_removeComponent (t) {
- t.plan( 4 );
- curve = new OpenLayers.Geometry.Curve(components);
- curve.removeComponent(curve.components[1]);
- t.eq( curve.components.length, 1, "curve.components.length is smaller after removeComponent" );
- t.eq( curve.bounds, null, "curve.bounds nullified after removeComponent (for recalculation)" );
- bounds = curve.getBounds();
- t.eq( bounds.left, 10, "left bound is 10 after removeComponent" );
- t.eq( bounds.bottom, 10, "bottom bound is 10 after removeComponent" );
- }
-
- function test_Curve_getLength (t) {
- t.plan( 4 );
-
- //no components
- curve = new OpenLayers.Geometry.Curve();
- curve.components = null;
- t.eq(curve.getLength(), 0, "curve with no components has length 0");
-
- //empty components
- curve.components = [];
- t.eq(curve.getLength(), 0, "curve with empty components has length 0");
-
- //single point curve
- curve.components = [ new OpenLayers.Geometry.Point(0,0) ];
- t.eq(curve.getLength(), 0, "curve with only one point has length 0");
-
- //multipoint
- var newcomponents = [ new OpenLayers.Geometry.Point(0,0),
- new OpenLayers.Geometry.Point(0,10),
- new OpenLayers.Geometry.Point(20,10),
- new OpenLayers.Geometry.Point(20,-10)
- ];
-
- curve = new OpenLayers.Geometry.Curve(newcomponents);
- t.eq(curve.getLength(), 50, "curve.getLength returns a reasonably accurate length" );
- }
-
- function test_Curve_destroy(t) {
- t.plan(1);
-
- var curve = new OpenLayers.Geometry.Curve();
- curve.components = {};
-
- curve.destroy();
-
- t.ok( curve.components == null, "components is cleared well in destruction");
- }
-
-
- </script>
-</head>
-<body>
-</body>
-</html>
diff --git a/misc/openlayers/tests/Geometry/LineString.html b/misc/openlayers/tests/Geometry/LineString.html
deleted file mode 100644
index 4b2ec0e..0000000
--- a/misc/openlayers/tests/Geometry/LineString.html
+++ /dev/null
@@ -1,443 +0,0 @@
-<html>
-<head>
- <script src="../OLLoader.js"></script>
- <script type="text/javascript">
- var line;
- var components = [new OpenLayers.Geometry.Point(10,15),
- new OpenLayers.Geometry.Point(0,0)];
-
- function test_LineString_constructor (t) {
- t.plan( 3 );
- line = new OpenLayers.Geometry.LineString();
- t.ok( line instanceof OpenLayers.Geometry.LineString, "new OpenLayers.Geometry.LineString returns line object" );
- t.eq( line.CLASS_NAME, "OpenLayers.Geometry.LineString", "line.CLASS_NAME is set correctly");
- t.eq( line.components, [], "line.components is set correctly");
- }
-
- function test_LineString_constructor (t) {
- t.plan( 3 );
- line = new OpenLayers.Geometry.LineString(components);
- t.ok( line instanceof OpenLayers.Geometry.LineString, "new OpenLayers.Geometry.LineString returns line object" );
- t.eq( line.CLASS_NAME, "OpenLayers.Geometry.LineString", "line.CLASS_NAME is set correctly");
- // TBD FIXME, recursion
- // t.eq( line.components, components, "line.components is set correctly");
- t.eq( line.components.length, 2, "line.components.length is set correctly");
- }
-
- function test_LineString_toString(t) {
- t.plan(1);
-
- line = new OpenLayers.Geometry.LineString(components);
- t.eq(line.toString(),
- "LINESTRING(10 15,0 0)",
- "toString() returns WKT");
- }
-
- function test_LineString_removeComponent(t) {
- t.plan(2);
-
- OpenLayers.Geometry.Collection.prototype._removeComponent =
- OpenLayers.Geometry.Collection.prototype.removeComponent;
- OpenLayers.Geometry.Collection.prototype.removeComponent =
- function(point) { g_removeComponent = point; };
-
- line = new OpenLayers.Geometry.LineString(components);
-
- g_removeComponent = null;
- line.removeComponent(components[0]);
- t.ok(g_removeComponent == null, "point not removed if only 2 points in components");
-
- line.components.push(new OpenLayers.Geometry.Point(4,4));
- line.removeComponent(components[0]);
- t.ok(g_removeComponent, components[0], "point removed if 3 points in components");
-
- OpenLayers.Geometry.Collection.prototype.removeComponent =
- OpenLayers.Geometry.Collection.prototype._removeComponent;
- }
-
- function test_LineString_move(t) {
- t.plan(4);
-
- var components = [new OpenLayers.Geometry.Point(10,15),
- new OpenLayers.Geometry.Point(0,0)];
- var line = new OpenLayers.Geometry.LineString(components);
-
- var x0 = components[0].x;
- var y0 = components[0].y;
- var x1 = components[1].x;
- var y1 = components[1].y;
-
- var dx = 10 * Math.random();
- var dy = 10 * Math.random();
- line.move(dx, dy);
-
- t.eq(line.components[0].x, x0 + dx, "move() correctly modifies first x");
- t.eq(line.components[0].y, y0 + dy, "move() correctly modifies first y");
- t.eq(line.components[1].x, x1 + dx, "move() correctly modifies second x");
- t.eq(line.components[1].y, y1 + dy, "move() correctly modifies second y");
- }
-
- function test_LineString_rotate(t) {
- t.plan(6);
-
- var components = [new OpenLayers.Geometry.Point(10,15),
- new OpenLayers.Geometry.Point(0,0)];
- var geometry = new OpenLayers.Geometry.LineString(components);
-
- var originals = [];
- var comp;
- var angle = 2 * Math.PI * Math.random();
- var origin = new OpenLayers.Geometry.Point(10 * Math.random(),
- 10 * Math.random());
- for(var i=0; i<geometry.components.length; ++i) {
- comp = geometry.components[i];
- originals[i] = comp.rotate;
- comp.rotate = function(a, o) {
- t.ok(true, "rotate called for component " + i);
- t.ok(a == angle, "rotate called with correct angle");
- t.ok(o == origin, "rotate called with correct origin");
- }
- }
- geometry.rotate(angle, origin);
-
- // restore the original rotate defs
- for(var i=0; i<geometry.components.length; ++i) {
- comp.rotate = originals[i];
- }
- }
-
- function test_LineString_resize(t) {
- t.plan(8);
-
- var tolerance = 1e-10;
-
- var components = [new OpenLayers.Geometry.Point(10 * Math.random(),
- 10 * Math.random()),
- new OpenLayers.Geometry.Point(10 * Math.random(),
- 10 * Math.random())];
- var geometry = new OpenLayers.Geometry.LineString(components);
-
- var origin = new OpenLayers.Geometry.Point(10 * Math.random(),
- 10 * Math.random());
-
- var scale = 10 * Math.random();
-
- var oldLength = geometry.getLength();
- var ret = geometry.resize(scale, origin);
- t.ok(ret === geometry, "resize returns geometry");
- var newLength = geometry.getLength();
- t.ok((((newLength / oldLength) - scale) / scale) < tolerance,
- "resize correctly changes the length of a linestring")
-
- var originals = [];
- var comp;
- for(var i=0; i<geometry.components.length; ++i) {
- comp = geometry.components[i];
- originals[i] = comp.resize;
- comp.resize = function(s, o) {
- t.ok(true, "resize called for component " + i);
- t.ok(s == scale, "resize called with correct scale");
- t.ok(o == origin, "resize called with correct origin");
- }
- }
- geometry.resize(scale, origin);
-
- // restore the original resize defs
- for(var i=0; i<geometry.components.length; ++i) {
- comp.resize = originals[i];
- }
-
- }
-
- function test_split(t) {
- var wkt = OpenLayers.Geometry.fromWKT;
-
- var cases = [{
- msg: "no intersection",
- g1: "LINESTRING(0 0, 0 1)",
- g2: "LINESTRING(1 0, 1 1)",
- exp: null
- } , {
- msg: "intersection at midpoint",
- g1: "LINESTRING(0 0, 1 1)",
- g2: "LINESTRING(1 0, 0 1)",
- exp: ["LINESTRING(1 0, 0.5 0.5)", "LINESTRING(0.5 0.5, 0 1)"]
- }, {
- msg: "intersection at midpoint (reverse source/target)",
- g1: "LINESTRING(1 0, 0 1)",
- g2: "LINESTRING(0 0, 1 1)",
- exp: ["LINESTRING(0 0, 0.5 0.5)", "LINESTRING(0.5 0.5, 1 1)"]
- }, {
- msg: "intersection at endpoint",
- g1: "LINESTRING(0 0, 1 1)",
- g2: "LINESTRING(1 0, 1 1)",
- exp: null
- }, {
- msg: "midpoint intersection, no options",
- g1: "LINESTRING(0 0, 2 2)",
- g2: "LINESTRING(0 2, 2 0)",
- exp: ["LINESTRING(0 2, 1 1)", "LINESTRING(1 1, 2 0)"]
- }, {
- msg: "midpoint intersection, edge false",
- opt: {edge: false},
- g1: "LINESTRING(0 0, 2 2)",
- g2: "LINESTRING(0 2, 2 0)",
- exp: null
- }, {
- msg: "midpoint intersection, mutual",
- opt: {mutual: true},
- g1: "LINESTRING(0 0, 2 2)",
- g2: "LINESTRING(0 2, 2 0)",
- exp: [["LINESTRING(0 0, 1 1)", "LINESTRING(1 1, 2 2)"], ["LINESTRING(0 2, 1 1)", "LINESTRING(1 1, 2 0)"]]
- }, {
- msg: "close intersection, no tolerance",
- g1: "LINESTRING(0 0, 0.9 0.9)",
- g2: "LINESTRING(0 2, 2 0)",
- exp: null
- }, {
- msg: "close intersection, within tolerance",
- opt: {tolerance: 0.2},
- g1: "LINESTRING(0 0, 0.9 0.9)",
- g2: "LINESTRING(0 2, 2 0)",
- exp: ["LINESTRING(0 2, 0.9 0.9)", "LINESTRING(0.9 0.9, 2 0)"]
- }];
-
- t.plan(cases.length);
- var c, parts, part, midparts;
- for(var i=0; i<cases.length; ++i) {
- c = cases[i];
- var g1 = wkt(c.g1);
- var g2 = wkt(c.g2);
- var got = g1.split(g2, c.opt);
- var exp = c.exp;
- if(got instanceof Array) {
- parts = [];
- for(var j=0; j<got.length; ++j) {
- part = got[j];
- if(part instanceof Array) {
- midparts = [];
- for(var k=0; k<part.length; ++k) {
- midparts.push(part[k].toString());
- }
- parts.push("[" + midparts.join(", ") + "]");
- } else {
- parts.push(got[j].toString());
- }
- }
- got = parts.join(", ");
- }
- if(exp instanceof Array) {
- parts = [];
- for(var j=0; j<exp.length; ++j) {
- part = exp[j];
- if(part instanceof Array) {
- midparts = [];
- for(var k=0; k<part.length; ++k) {
- midparts.push(wkt(part[k]).toString());
- }
- parts.push("[" + midparts.join(", ") + "]");
- } else {
- parts.push(wkt(exp[j]).toString());
- }
- }
- exp = parts.join(", ");
- }
- t.eq(got, exp, "case " + i + ": " + c.msg);
- }
-
- }
-
-
- function test_distanceTo(t) {
- var wkt = OpenLayers.Geometry.fromWKT;
- var geoms = [
- wkt("POINT(0 0)"),
- wkt("LINESTRING(-2 0, 0 -2, 2 -1, 2 0)")
- ];
-
- var cases = [{
- got: geoms[1].distanceTo(geoms[0]),
- expected: Math.sqrt(2)
- }, {
- got: geoms[1].distanceTo(geoms[0], {details: true}),
- expected: {
- distance: Math.sqrt(2),
- x0: -1, y0: -1,
- x1: 0, y1: 0
- }
- }];
-
- t.plan(cases.length);
- for(var i=0; i<cases.length; ++i) {
- t.eq(cases[i].got, cases[i].expected, "case " + i);
- }
-
- }
-
- function test_LineString_equals(t) {
- t.plan(3);
-
- var x0 = Math.random() * 100;
- var y0 = Math.random() * 100;
- var x1 = Math.random() * 100;
- var y1 = Math.random() * 100;
- var point0 = new OpenLayers.Geometry.Point(x0, y0);
- var point1 = new OpenLayers.Geometry.Point(x1, y1);
- var geometry = new OpenLayers.Geometry.LineString([point0, point1]);
- var equal = new OpenLayers.Geometry.LineString([point0, point1]);
- var offX = new OpenLayers.Geometry.LineString([
- new OpenLayers.Geometry.Point(x0 + 1, y0),
- new OpenLayers.Geometry.Point(x1 + 1, y1)]);
- var offY = new OpenLayers.Geometry.LineString([
- new OpenLayers.Geometry.Point(x0, y0 + 1),
- new OpenLayers.Geometry.Point(x1, y1 + 1)]);
- t.ok(geometry.equals(equal),
- "equals() returns true for a geometry with equivalent coordinates");
- t.ok(!geometry.equals(offX),
- "equals() returns false for a geometry with offset x");
- t.ok(!geometry.equals(offY),
- "equals() returns false for a geometry with offset y");
- }
-
-
- function test_getVertices(t) {
- t.plan(14);
-
- var points = [
- new OpenLayers.Geometry.Point(10, 20),
- new OpenLayers.Geometry.Point(20, 30),
- new OpenLayers.Geometry.Point(30, 40),
- new OpenLayers.Geometry.Point(40, 50)
- ];
- var line = new OpenLayers.Geometry.LineString(points);
-
- var verts = line.getVertices();
- t.ok(verts instanceof Array, "got back an array");
- t.eq(verts.length, points.length, "of correct length length");
- t.geom_eq(verts[0], points[0], "0: correct geometry");
- t.geom_eq(verts[1], points[1], "1: correct geometry");
- t.geom_eq(verts[2], points[2], "2: correct geometry");
- t.geom_eq(verts[3], points[3], "3: correct geometry");
-
- // get nodes only
- var nodes = line.getVertices(true);
- t.ok(nodes instanceof Array, "[nodes only] got back an array");
- t.eq(nodes.length, 2, "[nodes only] of correct length length");
- t.geom_eq(nodes[0], points[0], "[nodes only] first: correct geometry");
- t.geom_eq(nodes[1], points[points.length-1], "[nodes only] last: correct geometry");
-
- // no nodes
- var nodes = line.getVertices(false);
- t.ok(nodes instanceof Array, "[no nodes] got back an array");
- t.eq(nodes.length, 2, "[no nodes] of correct length length");
- t.geom_eq(nodes[0], points[1], "[no nodes] first: correct geometry");
- t.geom_eq(nodes[1], points[2], "[no nodes] last: correct geometry");
-
- }
-
-
- function test_LineString_clone(t) {
- t.plan(2);
-
- var x0 = Math.random() * 100;
- var y0 = Math.random() * 100;
- var x1 = Math.random() * 100;
- var y1 = Math.random() * 100;
- var point0 = new OpenLayers.Geometry.Point(x0, y0);
- var point1 = new OpenLayers.Geometry.Point(x1, y1);
- var geometry = new OpenLayers.Geometry.LineString([point0, point1]);
- var clone = geometry.clone();
- t.ok(clone instanceof OpenLayers.Geometry.LineString,
- "clone() creates an OpenLayers.Geometry.LineString");
- t.ok(geometry.equals(clone), "clone has equivalent coordinates");
- }
-
- function test_getGeodesicLength(t) {
-
- // expected values from http://www.movable-type.co.uk/scripts/latlong-vincenty.html
- var cases = [{
- wkt: "LINESTRING(0 0, -10 45)",
- exp: 5081689.690
- }, {
- wkt: "LINESTRING(-10 45, 0 0)",
- exp: 5081689.690
- }, {
- wkt: "LINESTRING(0 0, -10 45, -20 50)",
- exp: 5081689.690 + 935018.062
- }];
- t.plan(cases.length);
-
- var geom, got;
- for(var i=0; i<cases.length; ++i) {
- geom = new OpenLayers.Geometry.fromWKT(cases[i].wkt);
- got = geom.getGeodesicLength();
- t.eq(Math.round(got), Math.round(cases[i].exp), "[case " + i + "] length calculated");
- }
-
- }
-
- function test_LineString_simplify(t){
- t.plan(8);
- var ls1 = new OpenLayers.Geometry.LineString([
- new OpenLayers.Geometry.Point(0,0),
- new OpenLayers.Geometry.Point(1,2.1),
- new OpenLayers.Geometry.Point(1.8,3.8),
- new OpenLayers.Geometry.Point(2,4),
- new OpenLayers.Geometry.Point(3,4),
- new OpenLayers.Geometry.Point(4,4.5),
- new OpenLayers.Geometry.Point(5,5)
-
- ]);
- var ls2 = new OpenLayers.Geometry.LineString([
- new OpenLayers.Geometry.Point(0,0),
- new OpenLayers.Geometry.Point(1,2.1),
- new OpenLayers.Geometry.Point(1.8,3.8),
- new OpenLayers.Geometry.Point(2,4),
- new OpenLayers.Geometry.Point(3,4),
- new OpenLayers.Geometry.Point(4,4.5),
- new OpenLayers.Geometry.Point(5,5),
- new OpenLayers.Geometry.Point(0,0)
-
- ]);
- var ls3 = new OpenLayers.Geometry.LineString([
- new OpenLayers.Geometry.Point(0,0),
- new OpenLayers.Geometry.Point(1,1)
- ]);
- var ls5 = new OpenLayers.Geometry.LineString([
- new OpenLayers.Geometry.Point(0,0),
- new OpenLayers.Geometry.Point(1,1),
- new OpenLayers.Geometry.Point(2,2),
- new OpenLayers.Geometry.Point(3,3),
- new OpenLayers.Geometry.Point(4,4),
- new OpenLayers.Geometry.Point(5,5)
-
- ]);
- var ls6 = new OpenLayers.Geometry.LineString([
- new OpenLayers.Geometry.Point(0,0),
- new OpenLayers.Geometry.Point(1,1),
- new OpenLayers.Geometry.Point(1,1),
- new OpenLayers.Geometry.Point(3,2)
- ]);
-
- t.ok(ls1 instanceof OpenLayers.Geometry.LineString, 'LineString is instance of OpenLayers.Geometry.LineString');
- var simplified1 = ls1.simplify(0.5);
- t.ok(simplified1 instanceof OpenLayers.Geometry.LineString, 'Simplified LineString is instance of OpenLayers.Geometry.LineString');
- t.ok(simplified1.getVertices().length <= ls1.getVertices().length, 'Simplified LineString has less or equal number of vertices');
- // The simplified version is derived from PostGIS function ST_SIMPLIFY()
- t.ok(simplified1.toString() === 'LINESTRING(0 0,1.8 3.8,5 5)', 'LineString 1 was simplified correctly');
- var simplified2 = ls2.simplify(0.5);
- // The simplified version is derived from PostGIS function ST_SIMPLIFY()
- t.ok(simplified2.toString() === 'LINESTRING(0 0,1.8 3.8,5 5,0 0)', 'LineString 2 was simplified correctly');
- var simplified3 = ls3.simplify(0.5);
- t.ok(simplified3.toString() === ls3.toString(), 'LineString with 2 vertices is left untouched');
- var simplified5 = ls5.simplify(0.0);
- t.ok(simplified5.toString() === 'LINESTRING(0 0,5 5)', 'A tolerance of 0 returns the optimized version needless vertices');
- var simplified6 = ls6.simplify(0.0);
- t.ok(simplified6.toString() === 'LINESTRING(0 0,1 1,3 2)', 'A tolerance of 0 returns the optimized version without doubled vertices');
- }
-
- </script>
-</head>
-<body>
-</body>
-</html>
diff --git a/misc/openlayers/tests/Geometry/LinearRing.html b/misc/openlayers/tests/Geometry/LinearRing.html
deleted file mode 100644
index cbbba2a..0000000
--- a/misc/openlayers/tests/Geometry/LinearRing.html
+++ /dev/null
@@ -1,362 +0,0 @@
-<html>
-<head>
- <script src="../OLLoader.js"></script>
- <script type="text/javascript">
- var line;
- var components = [new OpenLayers.Geometry.Point(10,10),
- new OpenLayers.Geometry.Point(0,0)];
-
- function test_LinearRing_constructor (t) {
- t.plan( 6 );
-
- //null
- ring = new OpenLayers.Geometry.LinearRing();
- t.ok( ring instanceof OpenLayers.Geometry.LinearRing, "new OpenLayers.Geometry.LinearRing returns ring object" );
- t.eq( ring.CLASS_NAME, "OpenLayers.Geometry.LinearRing", "ring.CLASS_NAME is set correctly");
- t.eq( ring.components, [], "ring.components is set correctly");
-
- //valid components
- ring = new OpenLayers.Geometry.LinearRing(components);
- t.ok( ring instanceof OpenLayers.Geometry.LinearRing, "new OpenLayers.Geometry.LinearRing returns ring object" );
- t.eq( ring.CLASS_NAME, "OpenLayers.Geometry.LinearRing", "ring.CLASS_NAME is set correctly");
- t.eq( ring.components.length, 3, "ring.components.length is set correctly");
- }
-
- function test_LinearRing_addComponent(t) {
- t.plan(13);
-
- var ring = new OpenLayers.Geometry.LinearRing();
-
- var point = new OpenLayers.Geometry.Point(0,0);
- t.ok(ring.addComponent(point),
- "addComponent returns true for 1st point");
- t.eq(ring.components.length, 2, "add first point, correct length");
- t.ok(ring.components[0].equals(point), "point one correct");
- t.ok(ring.components[0] === ring.components[ring.components.length - 1],
- "first and last point are the same");
-
- newPoint = new OpenLayers.Geometry.Point(10,10);
- t.ok(ring.addComponent( newPoint ),
- "addComponent returns true for unique point");
- t.eq(ring.components.length, 3, "correctly adds 3rd point");
- t.ok(ring.components[0].equals(point), "point one correct");
- t.ok(ring.components[1].equals(newPoint), "point one correct");
- t.ok(ring.components[0] === ring.components[ring.components.length - 1],
- "first and last point are the same");
-
- var length = ring.components.length;
- var clone = ring.components[length - 1].clone();
- t.ok(!ring.addComponent(clone),
- "addComponent returns false for adding a duplicate last point");
- t.eq(ring.components.length, length,
- "components remains unchanged after trying to add duplicate point");
- t.ok(ring.addComponent(clone, length - 1),
- "addComponent returns true when adding a duplicate with an index");
- t.eq(ring.components.length, length + 1,
- "components increase in length after adding a duplicate point with index");
-
- }
-
- function test_LinearRing_removeComponent(t) {
- t.plan(10);
-
- var components = [new OpenLayers.Geometry.Point(0,0),
- new OpenLayers.Geometry.Point(0,10),
- new OpenLayers.Geometry.Point(15,15),
- new OpenLayers.Geometry.Point(10,0)
- ];
- var ring = new OpenLayers.Geometry.LinearRing(components);
-
- ring.removeComponent( ring.components[2] );
- t.eq(ring.components.length, 4, "removing from linear ring with 5 points: length ok");
- t.ok(ring.components[0].equals(components[0]), "point one correct");
- t.ok(ring.components[1].equals(components[1]), "point two correct");
- t.ok(ring.components[2].equals(components[3]), "point three correct");
- t.ok(ring.components[0] === ring.components[ring.components.length - 1],
- "first and last point are the same");
-
- var testBounds = new OpenLayers.Bounds(0,0,10,10);
- var ringBounds = ring.getBounds();
- t.ok(ringBounds.equals(testBounds), "bounds correctly recalculated");
-
- ring.removeComponent( ring.components[2] );
- ring.removeComponent( ring.components[1] );
- t.eq(ring.components.length, 3, "cant remove from linear ring with only 3 points. new length ok");
- t.ok(ring.components[0].equals(components[0]), "point one correct");
- t.ok(ring.components[1].equals(components[1]), "point two correct");
- t.ok(ring.components[0] === ring.components[ring.components.length - 1],
- "first and last point are the same");
-
- }
-
- function test_LinearRing_getArea(t) {
- t.plan(1);
- var components = [new OpenLayers.Geometry.Point(0,0),
- new OpenLayers.Geometry.Point(0,10),
- new OpenLayers.Geometry.Point(10,10),
- new OpenLayers.Geometry.Point(10,0)
- ];
- var ring = new OpenLayers.Geometry.LinearRing(components);
-
- t.eq(ring.getArea(), 100, "getArea works lovely");
- }
-
- function test_LinearRing_getLength(t) {
- t.plan(1);
- var components = [
- new OpenLayers.Geometry.Point(0,0),
- new OpenLayers.Geometry.Point(0,10),
- new OpenLayers.Geometry.Point(10,10),
- new OpenLayers.Geometry.Point(10,0)
- ];
- var ring = new OpenLayers.Geometry.LinearRing(components);
- t.eq(ring.getLength(), 40, "getLength returns the correct perimiter");
- }
-
- function test_LinearRing_getCentroid(t) {
- t.plan(2);
- var components = [
- new OpenLayers.Geometry.Point(0,0),
- new OpenLayers.Geometry.Point(0,10),
- new OpenLayers.Geometry.Point(10,10),
- new OpenLayers.Geometry.Point(10,0)
- ];
- var ring = new OpenLayers.Geometry.LinearRing(components);
- var centroid = ring.getCentroid();
- t.ok(centroid.x === 5 && centroid.y === 5, "getCentroid returns the correct centroid");
- ring.destroy();
-
- ring = new OpenLayers.Geometry.LinearRing();
- t.eq(ring.getCentroid(), null, "getCentroid returns null if no components");
- }
-
- function test_LinearRing_move(t) {
-
- var nvert = 4,
- x = new Array(nvert),
- y = new Array(nvert),
- components = new Array(nvert);
-
- t.plan(2 * (nvert + 1));
-
- for(var i=0; i<nvert; ++i) {
- x[i] = Math.random();
- y[i] = Math.random();
- components[i] = new OpenLayers.Geometry.Point(x[i], y[i]);
- }
- x.push(x[0]);
- y.push(y[0]);
-
- var ring = new OpenLayers.Geometry.LinearRing(components);
-
- var dx = Math.random();
- var dy = Math.random();
-
- ring.move(dx, dy);
-
- for(var j=0; j<nvert + 1; ++j) {
- t.eq(ring.components[j].x, x[j] + dx,
- "move correctly adjust x coord of " + j + " component");
- t.eq(ring.components[j].y, y[j] + dy,
- "move correctly adjust y coord of " + j + " component");
- }
- }
-
- function test_LinearRing_rotate(t) {
- t.plan(10);
-
- var components = [
- new OpenLayers.Geometry.Point(10,10),
- new OpenLayers.Geometry.Point(11,10),
- new OpenLayers.Geometry.Point(11,11),
- new OpenLayers.Geometry.Point(10,11)
- ];
-
- var ring = new OpenLayers.Geometry.LinearRing(components);
-
- // rotate a quarter turn around the origin
- var origin = new OpenLayers.Geometry.Point(0, 0);
- var angle = 90;
-
- ring.rotate(angle, origin);
-
- function withinTolerance(i, j) {
- return Math.abs(i - j) < 1e-9;
- }
-
- t.ok(withinTolerance(ring.components[0].x , -10),
- "rotate correctly adjusts x of component 0");
- t.ok(withinTolerance(ring.components[0].y, 10),
- "rotate correctly adjusts y of component 0");
- t.ok(withinTolerance(ring.components[1].x, -10),
- "rotate correctly adjusts x of component 1");
- t.ok(withinTolerance(ring.components[1].y, 11),
- "rotate correctly adjusts y of component 1");
- t.ok(withinTolerance(ring.components[2].x, -11),
- "rotate correctly adjusts x of component 2");
- t.ok(withinTolerance(ring.components[2].y, 11),
- "rotate correctly adjusts y of component 2");
- t.ok(withinTolerance(ring.components[3].x, -11),
- "rotate correctly adjusts x of component 3");
- t.ok(withinTolerance(ring.components[3].y, 10),
- "rotate correctly adjusts y of component 3");
- t.ok(withinTolerance(ring.components[4].x, -10),
- "rotate correctly adjusts x of component 4");
- t.ok(withinTolerance(ring.components[4].y, 10),
- "rotate correctly adjusts y of component 4");
- }
-
- function test_LinearRing_resize(t) {
- t.plan(10);
-
- var components = [
- new OpenLayers.Geometry.Point(10,10),
- new OpenLayers.Geometry.Point(11,10),
- new OpenLayers.Geometry.Point(11,11),
- new OpenLayers.Geometry.Point(10,11)
- ];
-
- var ring = new OpenLayers.Geometry.LinearRing(components);
-
- // rotate a quarter turn around the origin
- var origin = new OpenLayers.Geometry.Point(0, 0);
- var scale = Math.random();
-
- ring.resize(scale, origin);
-
- function withinTolerance(i, j) {
- return Math.abs(i - j) < 1e-9;
- }
-
- t.ok(withinTolerance(ring.components[0].x , 10 * scale),
- "resize correctly adjusts x of component 0");
- t.ok(withinTolerance(ring.components[0].y, 10 * scale),
- "resize correctly adjusts y of component 0");
- t.ok(withinTolerance(ring.components[1].x, 11 * scale),
- "resize correctly adjusts x of component 1");
- t.ok(withinTolerance(ring.components[1].y, 10 * scale),
- "resize correctly adjusts y of component 1");
- t.ok(withinTolerance(ring.components[2].x, 11 * scale),
- "resize correctly adjusts x of component 2");
- t.ok(withinTolerance(ring.components[2].y, 11 * scale),
- "resize correctly adjusts y of component 2");
- t.ok(withinTolerance(ring.components[3].x, 10 * scale),
- "resize correctly adjusts x of component 3");
- t.ok(withinTolerance(ring.components[3].y, 11 * scale),
- "resize correctly adjusts y of component 3");
- t.ok(withinTolerance(ring.components[4].x, 10 * scale),
- "resize correctly adjusts x of component 4");
- t.ok(withinTolerance(ring.components[4].y, 10 * scale),
- "resize correctly adjusts y of component 4");
- }
-
- function test_containsPoint(t) {
-
- /**
- * The ring:
- * edge 3
- * (5, 10) __________ (15, 10)
- * / /
- * edge 4 / / edge 2
- * / /
- * (0, 0) /_________/ (10, 0)
- * edge 1
- */
- var components = [
- new OpenLayers.Geometry.Point(0, 0),
- new OpenLayers.Geometry.Point(10, 0),
- new OpenLayers.Geometry.Point(15, 10),
- new OpenLayers.Geometry.Point(5, 10)
- ];
-
- var ring = new OpenLayers.Geometry.LinearRing(components);
-
- function p(x, y) {
- return new OpenLayers.Geometry.Point(x, y);
- }
-
- // contains: 1 (touches), true (within), false (outside)
- var cases = [{
- point: p(5, 5), contains: true
- }, {
- point: p(20, 20), contains: false
- }, {
- point: p(15, 15), contains: false
- }, {
- point: p(0, 0), contains: 1 // lower left corner
- }, {
- point: p(10, 0), contains: 1 // lower right corner
- }, {
- point: p(15, 10), contains: 1 // upper right corner
- }, {
- point: p(5, 10), contains: 1 // upper left corner
- }, {
- point: p(5, 0), contains: 1 // on edge 1
- }, {
- point: p(5, -0.1), contains: false // below edge 1
- }, {
- point: p(5, 0.1), contains: true // above edge 1
- }, {
- point: p(12.5, 5), contains: 1 // on edge 2
- }, {
- point: p(12.4, 5), contains: true // left of edge 2
- }, {
- point: p(12.6, 5), contains: false // right of edge 2
- }, {
- point: p(10, 10), contains: 1 // on edge 3
- }, {
- point: p(10, 9.9), contains: true // below edge 3
- }, {
- point: p(10, 10.1), contains: false // above edge 3
- }, {
- point: p(2.5, 5), contains: 1 // on edge 4
- }, {
- point: p(2.4, 5), contains: false // left of edge 4
- }, {
- point: p(2.6, 5), contains: true // right of edge 4
- }];
-
- var len = cases.length;
- t.plan(len);
- var c;
- for (var i=0; i<len; ++i) {
- c = cases[i];
- t.eq(ring.containsPoint(c.point), c.contains, "case " + i + ": " + c.point);
- }
- }
-
- function test_containsPoint_precision(t) {
-
- /**
- * The test for linear ring containment was sensitive to failure when
- * looking for ray crossings on nearly vertical edges. With a loss
- * of precision in calculating the x-coordinate for the crossing,
- * the method would erronously determine that the x-coordinate was
- * not within the (very narrow) x-range of the nearly vertical edge.
- *
- * The test below creates a polygon whose first vertical edge is
- * nearly horizontal. The test point lies "far" outside the polygon
- * and we expect the containsPoint method to return false.
- */
-
- t.plan(1);
-
- var components = [
- new OpenLayers.Geometry.Point(10000020.000001, 1000000),
- new OpenLayers.Geometry.Point(10000020.000002, 1000010), // nearly vertical
- new OpenLayers.Geometry.Point(10000030, 1000010),
- new OpenLayers.Geometry.Point(10000030, 1000000)
- ];
-
- var ring = new OpenLayers.Geometry.LinearRing(components);
- var point = new OpenLayers.Geometry.Point(10000000, 1000001);
-
- t.eq(ring.containsPoint(point), false, "false for point outside polygon with nearly vertical edge");
-
- }
-
- </script>
-</head>
-<body>
-</body>
-</html>
diff --git a/misc/openlayers/tests/Geometry/MultiLineString.html b/misc/openlayers/tests/Geometry/MultiLineString.html
deleted file mode 100644
index 34a6e65..0000000
--- a/misc/openlayers/tests/Geometry/MultiLineString.html
+++ /dev/null
@@ -1,267 +0,0 @@
-<html>
-<head>
- <script src="../OLLoader.js"></script>
- <script type="text/javascript">
- var line;
-
- function test_MultiLineString_constructor (t) {
- t.plan( 3 );
- mline = new OpenLayers.Geometry.MultiLineString();
- t.ok( mline instanceof OpenLayers.Geometry.MultiLineString, "new OpenLayers.Geometry.MultiLineString returns mline object" );
- t.eq( mline.CLASS_NAME, "OpenLayers.Geometry.MultiLineString", "mline.CLASS_NAME is set correctly");
- t.eq( mline.components, [], "line.components is set correctly");
- }
-
- function test_MultiLineString_constructor (t) {
- t.plan( 3 );
- line = new OpenLayers.Geometry.LineString();
- mline = new OpenLayers.Geometry.MultiLineString(line);
- t.ok( mline instanceof OpenLayers.Geometry.MultiLineString, "new OpenLayers.Geometry.MultiLineString returns mline object" );
- t.eq( mline.CLASS_NAME, "OpenLayers.Geometry.MultiLineString", "mline.CLASS_NAME is set correctly");
- t.eq( mline.components.length, 1, "mline.components.length is set correctly");
- }
-
- function test_split(t) {
- var wkt = OpenLayers.Geometry.fromWKT;
-
- var cases = [{
- msg: "no intersection",
- g1: "MULTILINESTRING((0 0, 0 1), (2 2, 3 3))",
- g2: "MULTILINESTRING((1 0, 1 1), (2 2, 3 2))",
- exp: null
- } , {
- msg: "intersection at midpoint",
- g1: "MULTILINESTRING((0 0, 1 1))",
- g2: "MULTILINESTRING((1 0, 0 1))",
- exp: ["MULTILINESTRING((1 0, 0.5 0.5))", "MULTILINESTRING((0.5 0.5, 0 1))"]
- }, {
- msg: "intersection at midpoint (reverse source/target)",
- g1: "MULTILINESTRING((1 0, 0 1))",
- g2: "MULTILINESTRING((0 0, 1 1))",
- exp: ["MULTILINESTRING((0 0, 0.5 0.5))", "MULTILINESTRING((0.5 0.5, 1 1))"]
- }, {
- msg: "intersection at endpoint",
- g1: "MULTILINESTRING((0 0, 1 1))",
- g2: "MULTILINESTRING((1 0, 1 1))",
- exp: null
- }, {
- msg: "midpoint intersection, no options",
- g1: "MULTILINESTRING((0 0, 2 2))",
- g2: "MULTILINESTRING((0 2, 2 0))",
- exp: ["MULTILINESTRING((0 2, 1 1))", "MULTILINESTRING((1 1, 2 0))"]
- }, {
- msg: "midpoint intersection, edge false",
- opt: {edge: false},
- g1: "MULTILINESTRING((0 0, 2 2))",
- g2: "MULTILINESTRING((0 2, 2 0))",
- exp: null
- }, {
- msg: "midpoint intersection, mutual",
- opt: {mutual: true},
- g1: "MULTILINESTRING((0 0, 2 2))",
- g2: "MULTILINESTRING((0 2, 2 0))",
- exp: [["MULTILINESTRING((0 0, 1 1))", "MULTILINESTRING((1 1, 2 2))"], ["MULTILINESTRING((0 2, 1 1))", "MULTILINESTRING((1 1, 2 0))"]]
- }, {
- msg: "close intersection, no tolerance",
- g1: "MULTILINESTRING((0 0, 0.9 0.9))",
- g2: "MULTILINESTRING((0 2, 2 0))",
- exp: null
- }, {
- msg: "close intersection, within tolerance",
- opt: {tolerance: 0.2},
- g1: "MULTILINESTRING((0 0, 0.9 0.9))",
- g2: "MULTILINESTRING((0 2, 2 0))",
- exp: ["MULTILINESTRING((0 2, 0.9 0.9))", "MULTILINESTRING((0.9 0.9, 2 0))"]
- }, {
- msg: "multi source, single target",
- g1: "MULTILINESTRING((0 0, 2 2))",
- g2: "LINESTRING(0 2, 2 0)",
- exp: ["LINESTRING(0 2, 1 1)", "LINESTRING(1 1, 2 0)"]
- }, {
- msg: "multi source, single target, mutual split",
- opt: {mutual: true},
- g1: "MULTILINESTRING((0 0, 2 2))",
- g2: "LINESTRING(0 2, 2 0)",
- exp: [["MULTILINESTRING((0 0, 1 1))", "MULTILINESTRING((1 1, 2 2))"], ["LINESTRING(0 2, 1 1)", "LINESTRING(1 1, 2 0)"]]
- }, {
- msg: "single source, multi target",
- g1: "LINESTRING(0 2, 2 0)",
- g2: "MULTILINESTRING((0 0, 2 2))",
- exp: ["MULTILINESTRING((0 0, 1 1))", "MULTILINESTRING((1 1, 2 2))"]
- }, {
- msg: "partial target split",
- g1: "MULTILINESTRING((2 0, 0 2))",
- g2: "MULTILINESTRING((0 0, 2 2), (3 3, 4 4))",
- exp: ["MULTILINESTRING((0 0, 1 1))", "MULTILINESTRING((1 1, 2 2), (3 3, 4 4))"]
- }, {
- msg: "partial target split, mutual true",
- opt: {mutual: true},
- g1: "MULTILINESTRING((2 0, 0 2))",
- g2: "MULTILINESTRING((0 0, 2 2), (3 3, 4 4))",
- exp: [["MULTILINESTRING((2 0, 1 1))", "MULTILINESTRING((1 1, 0 2))"], ["MULTILINESTRING((0 0, 1 1))", "MULTILINESTRING((1 1, 2 2), (3 3, 4 4))"]]
- }, {
- msg: "partial source split, mutual true",
- opt: {mutual: true},
- g1: "MULTILINESTRING((0 0, 2 2), (3 3, 4 4))",
- g2: "MULTILINESTRING((2 0, 0 2))",
- exp: [["MULTILINESTRING((0 0, 1 1))", "MULTILINESTRING((1 1, 2 2), (3 3, 4 4))"], ["MULTILINESTRING((2 0, 1 1))", "MULTILINESTRING((1 1, 0 2))"]]
- }, {
- msg: "partial target split with source endpoint",
- g1: "MULTILINESTRING((1 0, 1 1))",
- g2: "MULTILINESTRING((0 0, 2 2), (3 3, 4 4))",
- exp: ["MULTILINESTRING((0 0, 1 1))", "MULTILINESTRING((1 1, 2 2), (3 3, 4 4))"]
- }, {
- msg: "partial target split with source endpoint, mutual true",
- opt: {mutual: true},
- g1: "MULTILINESTRING((5 5, 6 6), (1 0, 1 1))",
- g2: "MULTILINESTRING((0 0, 2 2), (3 3, 4 4))",
- exp: [[], ["MULTILINESTRING((0 0, 1 1))", "MULTILINESTRING((1 1, 2 2), (3 3, 4 4))"]]
- }, {
- msg: "partial source split with target endpoint",
- g1: "MULTILINESTRING((0 0, 2 2), (3 3, 4 4))",
- g2: "MULTILINESTRING((1 0, 1 1))",
- exp: null
- }, {
- msg: "partial source split with target endpoint, mutual true",
- opt: {mutual: true},
- g1: "MULTILINESTRING((0 0, 2 2), (3 3, 4 4), (5 5, 6 6))",
- g2: "MULTILINESTRING((1 0, 1 1))",
- exp: [["MULTILINESTRING((0 0, 1 1))", "MULTILINESTRING((1 1, 2 2), (3 3, 4 4), (5 5, 6 6))"], []]
- }, {
- msg: "partial target and source split",
- g1: "MULTILINESTRING((0 5, 2 5), (4 5, 6 5), (8 5, 10 5))",
- g2: "MULTILINESTRING((5 0, 5 2), (5 4, 5 6), (5 8, 5 10))",
- exp: ["MULTILINESTRING((5 0, 5 2), (5 4, 5 5))", "MULTILINESTRING((5 5, 5 6), (5 8, 5 10))"]
- }, {
- msg: "partial target and source split, mutual true",
- opt: {mutual: true},
- g1: "MULTILINESTRING((0 5, 2 5), (4 5, 6 5), (8 5, 10 5))",
- g2: "MULTILINESTRING((5 0, 5 2), (5 4, 5 6), (5 8, 5 10))",
- exp: [["MULTILINESTRING((0 5, 2 5), (4 5, 5 5))", "MULTILINESTRING((5 5, 6 5), (8 5, 10 5))"],
- ["MULTILINESTRING((5 0, 5 2), (5 4, 5 5))", "MULTILINESTRING((5 5, 5 6), (5 8, 5 10))"]]
- }, {
- msg: "partial target and source split with source endpoint, mutual true",
- opt: {mutual: true},
- g1: "MULTILINESTRING((0 5, 2 5), (4 5, 6 5), (8 5, 10 5))",
- g2: "MULTILINESTRING((4 0, 4 2), (4 4, 4 6), (4 8, 4 10))",
- exp: [[], ["MULTILINESTRING((4 0, 4 2), (4 4, 4 5))", "MULTILINESTRING((4 5, 4 6), (4 8, 4 10))"]]
- }, {
- msg: "partial target and source split with target endpoint, mutual true",
- opt: {mutual: true},
- g1: "MULTILINESTRING((4 0, 4 2), (4 4, 4 6), (4 8, 4 10))",
- g2: "MULTILINESTRING((0 5, 2 5), (4 5, 6 5), (8 5, 10 5))",
- exp: [["MULTILINESTRING((4 0, 4 2), (4 4, 4 5))", "MULTILINESTRING((4 5, 4 6), (4 8, 4 10))"], []]
- }, {
- msg: "partial target and source split with source vertex, mutual true",
- opt: {mutual: true},
- g1: "MULTILINESTRING((0 5, 2 5), (4 5, 5 5, 6 5), (8 5, 10 5))",
- g2: "MULTILINESTRING((5 0, 5 2), (5 4, 5 6), (5 8, 5 10))",
- exp: [["MULTILINESTRING((0 5, 2 5), (4 5, 5 5))", "MULTILINESTRING((5 5, 6 5), (8 5, 10 5))"], ["MULTILINESTRING((5 0, 5 2), (5 4, 5 5))", "MULTILINESTRING((5 5, 5 6), (5 8, 5 10))"]]
- }, {
- msg: "partial target and source split with target vertex, mutual true",
- opt: {mutual: true},
- g1: "MULTILINESTRING((5 0, 5 2), (5 4, 5 6), (5 8, 5 10))",
- g2: "MULTILINESTRING((0 5, 2 5), (4 5, 5 5, 6 5), (8 5, 10 5))",
- exp: [["MULTILINESTRING((5 0, 5 2), (5 4, 5 5))", "MULTILINESTRING((5 5, 5 6), (5 8, 5 10))"], ["MULTILINESTRING((0 5, 2 5), (4 5, 5 5))", "MULTILINESTRING((5 5, 6 5), (8 5, 10 5))"]]
- }];
-
-
- t.plan(cases.length);
- var c, parts, part, midparts;
- for(var i=0; i<cases.length; ++i) {
- c = cases[i];
- var g1 = wkt(c.g1);
- var g2 = wkt(c.g2);
- var got = g1.split(g2, c.opt);
- var exp = c.exp;
- if(got instanceof Array) {
- parts = [];
- for(var j=0; j<got.length; ++j) {
- part = got[j];
- if(part instanceof Array) {
- midparts = [];
- for(var k=0; k<part.length; ++k) {
- midparts.push(part[k].toString());
- }
- parts.push("[" + midparts.join(", ") + "]");
- } else {
- parts.push(got[j].toString());
- }
- }
- got = parts.join(", ");
- }
- if(exp instanceof Array) {
- parts = [];
- for(var j=0; j<exp.length; ++j) {
- part = exp[j];
- if(part instanceof Array) {
- midparts = [];
- for(var k=0; k<part.length; ++k) {
- midparts.push(wkt(part[k]).toString());
- }
- parts.push("[" + midparts.join(", ") + "]");
- } else {
- parts.push(wkt(exp[j]).toString());
- }
- }
- exp = parts.join(", ");
- }
- t.eq(got, exp, "case " + i + ": " + c.msg);
- }
-
- }
-
- function test_getVertices(t) {
- t.plan(22);
-
- var points = [
- new OpenLayers.Geometry.Point(10, 20),
- new OpenLayers.Geometry.Point(20, 30),
- new OpenLayers.Geometry.Point(30, 40),
- new OpenLayers.Geometry.Point(40, 50)
- ];
-
- var multi = new OpenLayers.Geometry.MultiLineString([
- new OpenLayers.Geometry.LineString(points),
- new OpenLayers.Geometry.LineString(points)
- ]);
-
- var verts = multi.getVertices();
- t.ok(verts instanceof Array, "got back an array");
- t.eq(verts.length, 2 * points.length, "of correct length length");
- t.geom_eq(verts[0], points[0], "0: correct geometry");
- t.geom_eq(verts[1], points[1], "1: correct geometry");
- t.geom_eq(verts[2], points[2], "2: correct geometry");
- t.geom_eq(verts[3], points[3], "3: correct geometry");
- t.geom_eq(verts[4], points[0], "4: correct geometry");
- t.geom_eq(verts[5], points[1], "5: correct geometry");
- t.geom_eq(verts[6], points[2], "6: correct geometry");
- t.geom_eq(verts[7], points[3], "7: correct geometry");
-
- // nodes only
- var nodes = multi.getVertices(true);
- t.ok(nodes instanceof Array, "[nodes only] got back an array");
- t.eq(nodes.length, 4, "[nodes only] of correct length length");
- t.geom_eq(nodes[0], points[0], "[nodes only] 0: correct geometry");
- t.geom_eq(nodes[1], points[3], "[nodes only] 1: correct geometry");
- t.geom_eq(nodes[2], points[0], "[nodes only] 2: correct geometry");
- t.geom_eq(nodes[3], points[3], "[nodes only] 3: correct geometry");
-
- // no nodes
- var nodes = multi.getVertices(false);
- t.ok(nodes instanceof Array, "[no nodes] got back an array");
- t.eq(nodes.length, 4, "[no nodes] of correct length length");
- t.geom_eq(nodes[0], points[1], "[no nodes] 0: correct geometry");
- t.geom_eq(nodes[1], points[2], "[no nodes] 1: correct geometry");
- t.geom_eq(nodes[2], points[1], "[no nodes] 2: correct geometry");
- t.geom_eq(nodes[3], points[2], "[no nodes] 3: correct geometry");
-
-
- }
-
-
- </script>
-</head>
-<body>
-</body>
-</html>
diff --git a/misc/openlayers/tests/Geometry/MultiPoint.html b/misc/openlayers/tests/Geometry/MultiPoint.html
deleted file mode 100644
index 47ce430..0000000
--- a/misc/openlayers/tests/Geometry/MultiPoint.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<html>
-<head>
- <script src="../OLLoader.js"></script>
- <script type="text/javascript">
- var point = new OpenLayers.Geometry.Point(10, 15);
-
-
- function test_MultiPoint_constructor (t) {
- t.plan( 2 );
- var multipoint = new OpenLayers.Geometry.MultiPoint();
- t.ok( multipoint instanceof OpenLayers.Geometry.MultiPoint, "new OpenLayers.Geometry.MultiPoint returns multipoint object" );
- t.eq( multipoint.CLASS_NAME, "OpenLayers.Geometry.MultiPoint", "multipoint.CLASS_NAME is set correctly");
- }
-
- function test_MultiPoint_constructor (t) {
- t.plan( 3 );
- var multipoint = new OpenLayers.Geometry.MultiPoint([point]);
- t.ok( multipoint instanceof OpenLayers.Geometry.MultiPoint, "new OpenLayers.Geometry.MultiPoint returns multipoint object" );
- t.eq( multipoint.CLASS_NAME, "OpenLayers.Geometry.MultiPoint", "multipoint.CLASS_NAME is set correctly");
- t.eq( multipoint.components.length, 1, "multipolygon.components.length is set correctly");
- }
-
- function test_MultiPoint_move(t) {
- t.plan(2);
-
- var multipoint = new OpenLayers.Geometry.MultiPoint([point]);
- var x = point.x;
- var y = point.y;
-
- var dx = 10 * Math.random();
- var dy = 10 * Math.random();
- multipoint.move(dx, dy);
- t.eq(multipoint.components[0].x, x + dx, "move() correctly modifies x");
- t.eq(multipoint.components[0].y, y + dy, "move() correctly modifies y");
- }
-
- function test_distanceTo(t) {
- var points = [
- new OpenLayers.Geometry.Point(0, 0),
- new OpenLayers.Geometry.Point(10, 0),
- new OpenLayers.Geometry.Point(0, 9),
- new OpenLayers.Geometry.Point(-5, 0),
- new OpenLayers.Geometry.Point(-5, 4)
- ];
-
- var geoms = [
- new OpenLayers.Geometry.MultiPoint([points[0], points[1]]),
- new OpenLayers.Geometry.MultiPoint([points[2], points[3]]),
- points[4]
- ];
-
- var cases = [{
- got: geoms[0].distanceTo(geoms[0]),
- expected: 0
- }, {
- got: geoms[0].distanceTo(geoms[1]),
- expected: 5
- }, {
- got: geoms[1].distanceTo(geoms[2]),
- expected: 4
- }, {
- got: geoms[0].distanceTo(geoms[1], {details: true}),
- expected: {
- distance: 5,
- x0: 0, y0: 0,
- x1: -5, y1: 0
- }
- }, {
- got: geoms[1].distanceTo(geoms[0], {details: true}),
- expected: {
- distance: 5,
- x0: -5, y0: 0,
- x1: 0, y1: 0
- }
- }, {
- got: geoms[1].distanceTo(geoms[2], {details: true}),
- expected: {
- distance: 4,
- x0: -5, y0: 0,
- x1: -5, y1: 4
- }
- }];
-
- t.plan(cases.length);
- for(var i=0; i<cases.length; ++i) {
- t.eq(cases[i].got, cases[i].expected, "case " + i);
- }
-
- }
-
- function test_MultiPoint_equals(t) {
- t.plan(3);
-
- var x = Math.random() * 100;
- var y = Math.random() * 100;
- var geometry = new OpenLayers.Geometry.MultiPoint(
- [new OpenLayers.Geometry.Point(x, y)]);
- var equal = new OpenLayers.Geometry.MultiPoint(
- [new OpenLayers.Geometry.Point(x, y)]);
- var offX = new OpenLayers.Geometry.MultiPoint(
- [new OpenLayers.Geometry.Point(x + 1, y)]);
- var offY = new OpenLayers.Geometry.MultiPoint(
- [new OpenLayers.Geometry.Point(x, y + 1)]);
- t.ok(geometry.equals(equal),
- "equals() returns true for a geometry with equivalent coordinates");
- t.ok(!geometry.equals(offX),
- "equals() returns false for a geometry with offset x");
- t.ok(!geometry.equals(offY),
- "equals() returns false for a geometry with offset y");
- }
-
- function test_MultiPoint_clone(t) {
- t.plan(2);
-
- var x = Math.random() * 100;
- var y = Math.random() * 100;
- var geometry = new OpenLayers.Geometry.MultiPoint(
- [new OpenLayers.Geometry.Point(x, y)]);
- var clone = geometry.clone();
- t.ok(clone instanceof OpenLayers.Geometry.MultiPoint,
- "clone() creates an OpenLayers.Geometry.MultiPoint");
- t.ok(geometry.equals(clone), "clone has equivalent coordinates");
- }
-
-
- </script>
-</head>
-<body>
-</body>
-</html>
diff --git a/misc/openlayers/tests/Geometry/MultiPolygon.html b/misc/openlayers/tests/Geometry/MultiPolygon.html
deleted file mode 100644
index f44de93..0000000
--- a/misc/openlayers/tests/Geometry/MultiPolygon.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<html>
-<head>
- <script src="../OLLoader.js"></script>
- <script type="text/javascript">
- var polygon;
- var components = [new OpenLayers.Geometry.Point(10,10), new OpenLayers.Geometry.Point(0,0)];
- var components2 = [new OpenLayers.Geometry.Point(10,10), new OpenLayers.Geometry.Point(0,0), new OpenLayers.Geometry.Point(10,0), new OpenLayers.Geometry.Point(10,10)];
- var linearRing = new OpenLayers.Geometry.LinearRing(components);
- var linearRing2 = new OpenLayers.Geometry.LinearRing(components2);
-
- var polygon = new OpenLayers.Geometry.Polygon([linearRing]);
- var polygon2 = new OpenLayers.Geometry.Polygon([linearRing2]);
-
- function test_MultiPolygon_constructor (t) {
- t.plan( 2 );
- multipolygon = new OpenLayers.Geometry.MultiPolygon();
- t.ok( multipolygon instanceof OpenLayers.Geometry.MultiPolygon, "new OpenLayers.Geometry.MultiPolygon returns multipolygon object" );
- t.eq( multipolygon.CLASS_NAME, "OpenLayers.Geometry.MultiPolygon", "multipolygon.CLASS_NAME is set correctly");
- }
-
- function test_MultiPolygon_constructor (t) {
- t.plan( 3 );
- multipolygon = new OpenLayers.Geometry.MultiPolygon([polygon, polygon2]);
- t.ok( multipolygon instanceof OpenLayers.Geometry.MultiPolygon, "new OpenLayers.Geometry.MultiPolygon returns multipolygon object" );
- t.eq( multipolygon.CLASS_NAME, "OpenLayers.Geometry.MultiPolygon", "multipolygon.CLASS_NAME is set correctly");
- t.eq( multipolygon.components.length, 2, "multipolygon.components.length is set correctly");
- }
-
-
- </script>
-</head>
-<body>
-</body>
-</html>
diff --git a/misc/openlayers/tests/Geometry/Point.html b/misc/openlayers/tests/Geometry/Point.html
deleted file mode 100644
index e688250..0000000
--- a/misc/openlayers/tests/Geometry/Point.html
+++ /dev/null
@@ -1,244 +0,0 @@
-<html>
-<head>
- <script src="../OLLoader.js"></script>
- <script type="text/javascript">
- var point;
-
- function test_Point_constructor (t) {
- t.plan( 8 );
-
- //empty
- point = new OpenLayers.Geometry.Point();
- t.ok( point instanceof OpenLayers.Geometry.Point, "new OpenLayers.Geometry.Point returns point object" );
- t.eq( point.CLASS_NAME, "OpenLayers.Geometry.Point", "point.CLASS_NAME is set correctly");
-
- //valid
- var x = 10;
- var y = 20;
- point = new OpenLayers.Geometry.Point(x, y);
- t.ok( point instanceof OpenLayers.Geometry.Point, "new OpenLayers.Geometry.Point returns point object" );
- t.eq( point.CLASS_NAME, "OpenLayers.Geometry.Point", "point.CLASS_NAME is set correctly");
- t.eq( point.x, x, "point.x is set correctly");
- t.eq( point.y, y, "point.y is set correctly");
- t.eq( point.lon, null, "point.lon is not set");
- t.eq( point.lat, null, "point.lat is not set");
- }
-
- function test_Point_calculateBounds (t) {
- t.plan(4);
-
- var x = 10;
- var y = 20;
- point = new OpenLayers.Geometry.Point(x, y);
- point.calculateBounds();
- t.eq( point.bounds.left, x, "bounds.left is 10" );
- t.eq( point.bounds.right, x, "bounds.right is 10" );
- t.eq( point.bounds.top, y, "bounds.top is 20" );
- t.eq( point.bounds.bottom, y, "bounds.bottom is 20" );
- }
-
-
- function test_Point_transform_getBounds (t) {
- t.plan(2);
-
- var x = 10;
- var y = 20;
- point = new OpenLayers.Geometry.Point(x, y);
- point.calculateBounds();
- t.ok( point.bounds != null, "bounds calculated by calcBounds" );
- point.transform(new OpenLayers.Projection("EPSG:4326"),
- new OpenLayers.Projection("EPSG:900913"));
- t.eq(point.bounds, null, "Point bounds cleared after transform");
- }
-
- function test_Point_transform_string(t) {
- t.plan(4);
-
- var x = 10;
- var y = 20;
- point = new OpenLayers.Geometry.Point(x, y);
- point.calculateBounds();
- t.ok( point.bounds != null, "bounds calculated by calcBounds" );
- point.transform("EPSG:4326", "EPSG:900913");
- t.eq(point.bounds, null, "Point bounds cleared after transform");
- t.eq(point.x.toFixed(2), "1113194.91", "transformed x");
- t.eq(point.y.toFixed(2), "2273030.93", "transformed y");
-
- }
-
- function test_Point_distanceTo(t) {
- t.plan(7);
-
- var x1 = 10;
- var y1 = 20;
- point1 = new OpenLayers.Geometry.Point(x1, y1);
-
- var x2 = 100;
- var y2 = 200;
- point2 = new OpenLayers.Geometry.Point(x2, y2);
-
- var dist = point1.distanceTo(point2)
- t.eq( dist, 201.24611797498107267682563018581, "distances calculating correctly");
- t.eq( dist, Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)), "distance calculation correct");
-
- // test that details are returned (though trivial in this case)
- var result = point1.distanceTo(point2, {details: true});
- t.eq(result.distance, point1.distanceTo(point2), "[details] distance property is same as return without details");
- t.eq(result.x0, x1, "[details] x0 property is correct");
- t.eq(result.y0, y1, "[details] y0 property is correct");
- t.eq(result.x1, x2, "[details] x1 property is correct");
- t.eq(result.y1, y2, "[details] y1 property is correct");
-
- }
-
- function test_Point_toString(t) {
- t.plan(1);
-
- var x = 10;
- var y = 20;
- point = new OpenLayers.Geometry.Point(x, y);
- t.eq(point.toString(), "POINT(" + x + " " + y + ")",
- "toString() returns WKT" );
-
- }
-
- function test_Point_toString_no_wkt(t) {
- t.plan(1);
-
- var WKT = OpenLayers.Format.WKT;
- OpenLayers.Format.WKT = null;
-
- var x = 10;
- var y = 20;
- point = new OpenLayers.Geometry.Point(x, y);
- t.eq(point.toString(), "[object Object]", "default string representation");
-
- OpenLayers.Format.WKT = WKT;
-
- }
-
- function test_Point_move(t) {
- t.plan(3);
-
- var x = 10;
- var y = 20;
- point = new OpenLayers.Geometry.Point(x, y);
-
- var dx = 10 * Math.random();
- var dy = 10 * Math.random();
- point.bounds = "foo";
- point.move(dx, dy);
- t.eq(point.x, x + dx, "move() correctly modifies x");
- t.eq(point.y, y + dy, "move() correctly modifies y");
-
- t.ok(point.bounds == null, "bounds is cleared after a move()");
- }
-
- function test_Point_rotate(t) {
- t.plan(5);
-
- var tolerance = 1e-10;
- var x = 10;
- var y = 20;
- var point = new OpenLayers.Geometry.Point(x, y);
- var origin = new OpenLayers.Geometry.Point(5, 10);
-
- // rotate a full revolution
- point.bounds = "foo";
- point.rotate(360, origin);
- t.ok(((point.x - x) / x) < tolerance,
- "rotate by 360 returns to the same y");
- t.ok(((point.y - y) / y) < tolerance,
- "rotate by 360 returns to the same y");
-
- t.ok(point.bounds == null, "bounds is cleared after a rotate()");
-
- // rotate an 1/8 turn
- point.rotate(45, origin);
- t.ok(((point.x - 1.4644660940672636) / 1.4644660940672636) < tolerance,
- "rotate 1/8 turn correctly");
- t.ok(((point.y - 20.606601717798213) / 20.606601717798213) < tolerance,
- "rotate 1/8 turn correctly");
- }
-
- function test_Point_resize(t) {
- t.plan(6);
-
- var tolerance = 1e-10;
- var x = 100 * Math.random();
- var y = 100 * Math.random();
- var point = new OpenLayers.Geometry.Point(x, y);
- point.bounds = "foo";
-
- var i = 100 * Math.random();
- var j = 100 * Math.random();
- var origin = new OpenLayers.Geometry.Point(i, j);
-
- var scale = 10 * Math.random();
- var oldDistance = origin.distanceTo(point);
-
- var ret = point.resize(scale, origin);
- var newDistance = origin.distanceTo(point);
-
- t.ok(ret === point, "resize returns geometry");
- t.ok((origin.x == i) && (origin.y == j),
- "resize leaves the origin untouched");
- t.ok((((newDistance / oldDistance) - scale) / scale) < tolerance,
- "resize moves points the correct distance from the origin");
-
- t.ok(point.bounds == null, "bounds is correctly cleared after a resize()");
-
- // resize with non uniform scaling (ratio != 1)
- point = new OpenLayers.Geometry.Point(10, 10);
- origin = new OpenLayers.Geometry.Point(0, 0);
- point.resize(2, origin, 4);
- t.eq(point.x, 80, "non-uniform scaling correctly applied in x dim");
- t.eq(point.y, 20, "non-uniform scaling correctly applied in y dim");
-
- }
-
- function test_Point_equals(t) {
- t.plan(3);
-
- var x = Math.random() * 100;
- var y = Math.random() * 100;
- var geometry = new OpenLayers.Geometry.Point(x, y);
- var equal = new OpenLayers.Geometry.Point(x, y);
- var offX = new OpenLayers.Geometry.Point(x + 1, y);
- var offY = new OpenLayers.Geometry.Point(x, y + 1);
- t.ok(geometry.equals(equal),
- "equals() returns true for a geometry with equivalent coordinates");
- t.ok(!geometry.equals(offX),
- "equals() returns false for a geometry with offset x");
- t.ok(!geometry.equals(offY),
- "equals() returns false for a geometry with offset y");
- }
-
- function test_getVertices(t) {
- t.plan(3);
-
- var point = new OpenLayers.Geometry.Point(10, 20);
- var verts = point.getVertices();
- t.ok(verts instanceof Array, "got back an array");
- t.eq(verts.length, 1, "of length 1");
- t.geom_eq(verts[0], point, "with correct geometry");
- }
-
- function test_Point_clone(t) {
- t.plan(2);
-
- var x = Math.random() * 100;
- var y = Math.random() * 100;
- var geometry = new OpenLayers.Geometry.Point(x, y);
- var clone = geometry.clone();
- t.ok(clone instanceof OpenLayers.Geometry.Point,
- "clone() creates an OpenLayers.Geometry.Point");
- t.ok(geometry.equals(clone), "clone has equivalent coordinates");
- }
-
-
- </script>
-</head>
-<body>
-</body>
-</html>
diff --git a/misc/openlayers/tests/Geometry/Polygon.html b/misc/openlayers/tests/Geometry/Polygon.html
deleted file mode 100644
index 0df0295..0000000
--- a/misc/openlayers/tests/Geometry/Polygon.html
+++ /dev/null
@@ -1,420 +0,0 @@
-<html>
-<head>
- <script src="../OLLoader.js"></script>
- <script type="text/javascript">
- var polygon;
- var components = [new OpenLayers.Geometry.Point(10,14), new OpenLayers.Geometry.Point(5,3)];
- var components2 = [new OpenLayers.Geometry.Point(12,15), new OpenLayers.Geometry.Point(2,3), new OpenLayers.Geometry.Point(10,0), new OpenLayers.Geometry.Point(10,10)];
- var linearRing = new OpenLayers.Geometry.LinearRing(components);
- var linearRing2 = new OpenLayers.Geometry.LinearRing(components2);
-
- function test_Polygon_constructor (t) {
- t.plan( 3 );
- polygon = new OpenLayers.Geometry.Polygon();
- t.ok( polygon instanceof OpenLayers.Geometry.Polygon, "new OpenLayers.Geometry.Polygon returns polygon object" );
- t.eq( polygon.CLASS_NAME, "OpenLayers.Geometry.Polygon", "polygon.CLASS_NAME is set correctly");
- t.eq( polygon.components.length, 0, "polygon.components is set correctly");
- }
-
- function test_Polygon_constructor (t) {
- t.plan( 3 );
- polygon = new OpenLayers.Geometry.Polygon([linearRing]);
- t.ok( polygon instanceof OpenLayers.Geometry.Polygon, "new OpenLayers.Geometry.Polygon returns polygon object" );
- t.eq( polygon.CLASS_NAME, "OpenLayers.Geometry.Polygon", "polygon.CLASS_NAME is set correctly");
- t.eq( polygon.components.length, 1, "polygon.components.length is set correctly");
- }
-
- function test_Polygon_constructor (t) {
- t.plan( 3 );
- polygon = new OpenLayers.Geometry.Polygon([linearRing, linearRing2]);
- t.ok( polygon instanceof OpenLayers.Geometry.Polygon, "new OpenLayers.Geometry.Polygon returns polygon object" );
- t.eq( polygon.CLASS_NAME, "OpenLayers.Geometry.Polygon", "polygon.CLASS_NAME is set correctly");
- t.eq( polygon.components.length, 2, "polygon.components.length is set correctly");
- }
-
- function test_Polygon_transform_getBounds (t) {
- t.plan(3);
-
- var components = [new OpenLayers.Geometry.Point(10,14), new OpenLayers.Geometry.Point(5,3)];
- var linearRing = new OpenLayers.Geometry.LinearRing(components);
- polygon = new OpenLayers.Geometry.Polygon([linearRing.clone()]);
- polygon.calculateBounds();
- t.ok( polygon.bounds != null, "bounds calculated by calcBounds" );
- polygon.transform(new OpenLayers.Projection("EPSG:4326"),
- new OpenLayers.Projection("EPSG:900913"));
- t.eq(polygon.bounds, null, "Point bounds cleared after transform");
- t.eq(polygon.getBounds().toBBOX(), "556597.453889,334111.171355,1113194.907778,1574216.547942", "Bounds are correct")
- }
-
- function test_Polygon_transform_string (t) {
- t.plan(3);
-
- var components = [new OpenLayers.Geometry.Point(10,14), new OpenLayers.Geometry.Point(5,3)];
- var linearRing = new OpenLayers.Geometry.LinearRing(components);
- polygon = new OpenLayers.Geometry.Polygon([linearRing.clone()]);
- polygon.calculateBounds();
- t.ok( polygon.bounds != null, "bounds calculated by calcBounds" );
- polygon.transform("EPSG:4326", "EPSG:900913");
- t.eq(polygon.bounds, null, "Point bounds cleared after transform");
- t.eq(polygon.getBounds().toBBOX(), "556597.453889,334111.171355,1113194.907778,1574216.547942", "Bounds are correct")
- }
-
- function test_Polygon_getArea(t) {
- t.plan( 5 );
-
- //no components
- var polygon = new OpenLayers.Geometry.Polygon();
- t.eq(polygon.getArea(), 0, "getArea empty polygon is 0");
-
- var createSquareRing = function(area) {
- var points = [
- new OpenLayers.Geometry.Point(0, 0),
- new OpenLayers.Geometry.Point(0, area),
- new OpenLayers.Geometry.Point(area, area),
- new OpenLayers.Geometry.Point(area, 0)
- ];
- var ring = new OpenLayers.Geometry.LinearRing(points);
- return ring;
- };
-
-
- //simple polygon
- var comps = [ createSquareRing(2) ];
-
- var polygon = new OpenLayers.Geometry.Polygon(comps);
- t.eq(polygon.getArea(), 4, "getArea simple polygon works lovely");
-
- //polygon with holes
- comps = [ createSquareRing(10),
- createSquareRing(2),
- createSquareRing(3),
- createSquareRing(4)
- ];
-
- var polygon = new OpenLayers.Geometry.Polygon(comps);
- t.eq(polygon.getArea(), 71, "getArea polygon with holes works lovely");
-
- //simple polygon negative
- comps = [ createSquareRing(-2) ];
-
- var polygon = new OpenLayers.Geometry.Polygon(comps);
- t.eq(polygon.getArea(), 4, "getArea simple polygon negative works lovely");
-
- //polygon with holes negative
- comps = [ createSquareRing(-10),
- createSquareRing(-2),
- createSquareRing(-3),
- createSquareRing(-4)
- ];
-
- var polygon = new OpenLayers.Geometry.Polygon(comps);
- t.eq(polygon.getArea(), 71, "getArea negative polygon with holes works lovely");
-
- }
-
- function test_Polygon_move(t) {
- t.plan(4);
-
- polygon = new OpenLayers.Geometry.Polygon([linearRing, linearRing2]);
-
- var x = linearRing.components[0].x;
- var y = linearRing.components[0].y;
- var x2 = linearRing2.components[0].x;
- var y2 = linearRing2.components[0].y;
-
- var dx = 10 * Math.random();
- var dy = 10 * Math.random();
-
- polygon.move(dx, dy);
-
- t.eq(polygon.components[0].components[0].x, x + dx, "move() correctly modifies first x");
- t.eq(polygon.components[0].components[0].y, y + dy, "move() correctly modifies first y");
- t.eq(polygon.components[1].components[0].x, x2 + dx, "move() correctly modifies second x");
- t.eq(polygon.components[1].components[0].y, y2 + dy, "move() correctly modifies second y");
- }
-
- function test_Polygon_rotate(t) {
- t.plan(6);
-
- var geometry = new OpenLayers.Geometry.Polygon([linearRing, linearRing2]);
-
- var originals = [];
- var comp;
- var angle = 2 * Math.PI * Math.random();
- var origin = new OpenLayers.Geometry.Point(10 * Math.random(),
- 10 * Math.random());
- for(var i=0; i<geometry.components.length; ++i) {
- comp = geometry.components[i];
- originals[i] = comp.rotate;
- comp.rotate = function(a, o) {
- t.ok(true, "rotate called for component " + i);
- t.ok(a == angle, "rotate called with correct angle");
- t.ok(o == origin, "rotate called with correct origin");
- }
- }
- geometry.rotate(angle, origin);
-
- // restore the original rotate defs
- for(var i=0; i<geometry.components.length; ++i) {
- comp.rotate = originals[i];
- }
- }
-
- function test_Polygon_resize(t) {
- t.plan(8);
-
- var tolerance = 1e-10;
- var geometry = new OpenLayers.Geometry.Polygon([linearRing, linearRing2]);
- var origin = new OpenLayers.Geometry.Point(10 * Math.random(),
- 10 * Math.random());
- var scale = 10 * Math.random();
-
- var oldArea = geometry.getArea();
- var oldPerimeter = geometry.getLength();
- geometry.resize(scale, origin);
- var newArea = geometry.getArea();
- var newPerimeter = geometry.getLength();
-
- t.ok((((newArea / oldArea) - (scale * scale)) / (scale * scale)) < tolerance,
- "resize correctly changes the area of a polygon")
- t.ok((((newPerimeter / oldPerimeter) - scale) / scale) < tolerance,
- "resize correctly changes the perimeter of a polygon")
-
- var originals = [];
- var comp;
- for(var i=0; i<geometry.components.length; ++i) {
- comp = geometry.components[i];
- originals[i] = comp.resize;
- comp.resize = function(s, o) {
- t.ok(true, "resize called for component " + i);
- t.ok(s == scale, "resize called with correct scale");
- t.ok(o == origin, "resize called with correct origin");
- }
- }
- geometry.resize(scale, origin);
-
- // restore the original resize defs
- for(var i=0; i<geometry.components.length; ++i) {
- comp.resize = originals[i];
- }
-
- }
-
- function test_Polygon_createRegular(t) {
- t.plan(22);
- var sides = 40;
- var poly = OpenLayers.Geometry.Polygon.createRegularPolygon(new OpenLayers.Geometry.Point(5,0), 6, sides);
- var polyBounds = poly.getBounds();
- t.eq(polyBounds.toBBOX(), "-0.981504,-5.981504,10.981504,5.981504", sides + " sided figure generates correct bbox.");
- t.eq(poly.components.length, 1, "Poly has one linear ring");
- t.eq(poly.components[0].components.length, sides + 1, "ring has 41 components");
- t.eq(poly.components[0].components[0].id, poly.components[0].components[sides].id, "ring starts and ends with same geom");
- t.eq(Math.round(poly.getArea()), Math.round(Math.PI * 36), "area of "+sides+" sided poly rounds to same area as a circle.");
-
- var sides = 3;
- var poly = OpenLayers.Geometry.Polygon.createRegularPolygon(new OpenLayers.Geometry.Point(5,0), 6, sides);
- var polyBounds = poly.getBounds();
- t.eq(polyBounds.toBBOX(), "-0.196152,-3,10.196152,6", sides + " sided figure generates correct bbox.");
- t.eq(poly.components.length, 1, "Poly has one linear ring");
- t.eq(poly.components[0].components.length, sides + 1, "ring has correct count of components");
- t.eq(poly.components[0].components[0].id, poly.components[0].components[sides].id, "ring starts and ends with same geom");
- t.eq(Math.round(poly.getArea()), 47, "area of 3 sided poly is correct");
-
- var sides = 3;
- var poly3 = OpenLayers.Geometry.Polygon.createRegularPolygon(new OpenLayers.Geometry.Point(10,0), 15, sides);
- var polyBounds = poly3.getBounds();
- t.eq(polyBounds.toBBOX(), "-2.990381,-7.5,22.990381,15", sides + " sided figure generates correct bbox.");
- t.eq(Math.round(polyBounds.getCenterLonLat().lon), 10, "longitude of center of bounds is same as origin");
- t.eq(poly3.components.length, 1, "Poly has one linear ring");
- t.eq(poly3.components[0].components.length, sides + 1, "ring has correct count of components");
- t.eq(poly3.components[0].components[0].id, poly3.components[0].components[sides].id, "ring starts and ends with same geom");
- t.ok(poly3.getArea() > poly.getArea(), "area with radius 15 > poly with radius 6");
-
- var sides = 4;
- var poly4 = OpenLayers.Geometry.Polygon.createRegularPolygon(new OpenLayers.Geometry.Point(10,0), 15, sides);
- var polyBounds = poly4.getBounds();
- t.eq(polyBounds.toBBOX(), "-0.606602,-10.606602,20.606602,10.606602", sides + " sided figure generates correct bbox.");
- t.eq(Math.round(polyBounds.getCenterLonLat().lon), 10, "longitude of center of bounds is same as origin");
- t.eq(poly4.components.length, 1, "Poly has one linear ring");
- t.eq(poly4.components[0].components.length, sides + 1, "ring has correct count of components");
- t.eq(poly4.components[0].components[0].id, poly4.components[0].components[sides].id, "ring starts and ends with same geom");
- t.ok(poly4.getArea() > poly3.getArea(), "square with radius 15 > triangle with radius 15");
- }
-
- function test_Polygon_equals(t) {
- t.plan(3);
-
- var x0 = Math.random() * 100;
- var y0 = Math.random() * 100;
- var x1 = Math.random() * 100;
- var y1 = Math.random() * 100;
- var x2 = Math.random() * 100;
- var y2 = Math.random() * 100;
- var point0 = new OpenLayers.Geometry.Point(x0, y0);
- var point1 = new OpenLayers.Geometry.Point(x1, y1);
- var point2 = new OpenLayers.Geometry.Point(x2, y2);
- var pointX = new OpenLayers.Geometry.Point(x0 + 1, y0);
- var pointY = new OpenLayers.Geometry.Point(x0, y0 + 1);
- var geometry = new OpenLayers.Geometry.Polygon([
- new OpenLayers.Geometry.LinearRing([point0, point1, point2])]);
- var equal = new OpenLayers.Geometry.Polygon([
- new OpenLayers.Geometry.LinearRing([point0, point1, point2])]);
- var offX = new OpenLayers.Geometry.Polygon([
- new OpenLayers.Geometry.LinearRing([pointX, point1, point2])]);
- var offY = new OpenLayers.Geometry.Polygon([
- new OpenLayers.Geometry.LinearRing([pointY, point1, point2])]);
- t.ok(geometry.equals(equal),
- "equals() returns true for a geometry with equivalent coordinates");
- t.ok(!geometry.equals(offX),
- "equals() returns false for a geometry with offset x");
- t.ok(!geometry.equals(offY),
- "equals() returns false for a geometry with offset y");
- }
-
- function test_distanceTo(t) {
- var wkt = OpenLayers.Geometry.fromWKT;
- var geoms = [
- wkt("POLYGON((0 3, 1 4, 2 3, 1 2, 0 3))"),
- wkt("POINT(0 0)"),
- wkt("LINESTRING(-2 0, 0 -2, 2 -1, 2 0)"),
- wkt("LINESTRING(0 2, 1 3)"),
- wkt("POINT(1 3)")
- ];
-
- var cases = [{
- got: geoms[0].distanceTo(geoms[1]),
- expected: Math.sqrt(5)
- }, {
- got: geoms[0].distanceTo(geoms[1], {details: true}),
- expected: {
- distance: Math.sqrt(5),
- x0: 1, y0: 2,
- x1: 0, y1: 0
- }
- }, {
- got: geoms[0].distanceTo(geoms[2], {details: true}),
- expected: {
- distance: Math.sqrt(5),
- x0: 1, y0: 2,
- x1: 2, y1: 0
- }
- }, {
- got: geoms[0].distanceTo(geoms[3], {details: true}),
- expected: {
- distance: 0,
- x0: 0.5, y0: 2.5,
- x1: 0.5, y1: 2.5
- }
- }, {
- got: geoms[0].distanceTo(geoms[4]),
- expected: Math.sqrt(0.5)
- }, {
- got: geoms[0].distanceTo(geoms[4], {edge: false}),
- expected: 0
- }];
-
- t.plan(cases.length);
- for(var i=0; i<cases.length; ++i) {
- t.eq(cases[i].got, cases[i].expected, "case " + i);
- }
-
- }
-
- function test_getVertices(t) {
- t.plan(6);
-
- var points = [
- new OpenLayers.Geometry.Point(10, 20),
- new OpenLayers.Geometry.Point(20, 30),
- new OpenLayers.Geometry.Point(30, 40),
- new OpenLayers.Geometry.Point(40, 50)
- ];
- var polygon = new OpenLayers.Geometry.Polygon([
- new OpenLayers.Geometry.LinearRing(points)
- ]);
-
- var verts = polygon.getVertices();
- t.ok(verts instanceof Array, "got back an array");
- t.eq(verts.length, points.length, "of correct length length");
- t.geom_eq(verts[0], points[0], "0: correct geometry");
- t.geom_eq(verts[1], points[1], "1: correct geometry");
- t.geom_eq(verts[2], points[2], "2: correct geometry");
- t.geom_eq(verts[3], points[3], "3: correct geometry");
-
- }
-
- function test_Polygon_clone(t) {
- t.plan(2);
-
- var x0 = Math.random() * 100;
- var y0 = Math.random() * 100;
- var x1 = Math.random() * 100;
- var y1 = Math.random() * 100;
- var x2 = Math.random() * 100;
- var y2 = Math.random() * 100;
- var point0 = new OpenLayers.Geometry.Point(x0, y0);
- var point1 = new OpenLayers.Geometry.Point(x1, y1);
- var point2 = new OpenLayers.Geometry.Point(x2, y2);
- var geometry = new OpenLayers.Geometry.Polygon([
- new OpenLayers.Geometry.LinearRing([point0, point1, point2])]);
- var clone = geometry.clone();
- t.ok(clone instanceof OpenLayers.Geometry.Polygon,
- "clone() creates an OpenLayers.Geometry.Polygon");
- t.ok(geometry.equals(clone), "clone has equivalent coordinates");
- }
-
- function test_getGeodesicArea(t) {
-
- t.plan(1);
-
- // from the wfs-states.html example
- var illinois = OpenLayers.Geometry.fromWKT(
- "MULTIPOLYGON(((-88.071564 37.51099,-88.087883 37.476273,-88.311707 37.442852,-88.359177 37.409309,-88.419853 37.420292,-88.467644 37.400757,-88.511322 37.296852,-88.501427 37.257782,-88.450699 37.205669,-88.422516 37.15691,-88.45047 37.098671,-88.476799 37.072144,-88.4907 37.06818,-88.517273 37.06477,-88.559273 37.072815,-88.61422 37.109047,-88.68837 37.13541,-88.739113 37.141182,-88.746506 37.152107,-88.863289 37.202194,-88.932503 37.218407,-88.993172 37.220036,-89.065033 37.18586,-89.116821 37.112137,-89.146347 37.093185,-89.169548 37.064236,-89.174332 37.025711,-89.150246 36.99844,-89.12986 36.988113,-89.193512 36.986771,-89.210052 37.028973,-89.237679 37.041733,-89.264053 37.087124,-89.284233 37.091244,-89.303291 37.085384,-89.3097 37.060909,-89.264244 37.027733,-89.262001 37.008686,-89.282768 36.999207,-89.310982 37.009682,-89.38295 37.049213,-89.37999 37.099083,-89.423798 37.137203,-89.440521 37.165318,-89.468216 37.224266,-89.465309 37.253731,-89.489594 37.256001,-89.513885 37.276402,-89.513885 37.304962,-89.50058 37.329441,-89.468742 37.339409,-89.435738 37.355717,-89.427574 37.411018,-89.453621 37.453186,-89.494781 37.491726,-89.524971 37.571957,-89.513367 37.615929,-89.51918 37.650375,-89.513374 37.67984,-89.521523 37.694798,-89.581436 37.706104,-89.666458 37.745453,-89.675858 37.78397,-89.691055 37.804794,-89.728447 37.840992,-89.851715 37.905064,-89.861046 37.905487,-89.866814 37.891876,-89.900551 37.875904,-89.937874 37.878044,-89.978912 37.911884,-89.958229 37.963634,-90.010811 37.969318,-90.041924 37.993206,-90.119339 38.032272,-90.134712 38.053951,-90.207527 38.088905,-90.254059 38.122169,-90.289635 38.166817,-90.336716 38.188713,-90.364769 38.234299,-90.369347 38.323559,-90.358688 38.36533,-90.339607 38.390846,-90.301842 38.427357,-90.265785 38.518688,-90.26123 38.532768,-90.240944 38.562805,-90.183708 38.610271,-90.183578 38.658772,-90.20224 38.700363,-90.196571 38.723965,-90.163399 38.773098,-90.135178 38.785484,-90.121727 38.80051,-90.113121 38.830467,-90.132812 38.853031,-90.243927 38.914509,-90.278931 38.924717,-90.31974 38.924908,-90.413071 38.96233,-90.469841 38.959179,-90.530426 38.891609,-90.570328 38.871326,-90.627213 38.880795,-90.668877 38.935253,-90.70607 39.037792,-90.707588 39.058178,-90.690399 39.0937,-90.716736 39.144211,-90.718193 39.195873,-90.732338 39.224747,-90.738083 39.24781,-90.779343 39.296803,-90.850494 39.350452,-90.947891 39.400585,-91.036339 39.444412,-91.064384 39.473984,-91.093613 39.528927,-91.156189 39.552593,-91.203247 39.600021,-91.317665 39.685917,-91.367088 39.72464,-91.373421 39.761272,-91.381714 39.803772,-91.449188 39.863049,-91.450989 39.885242,-91.434052 39.901829,-91.430389 39.921837,-91.447243 39.946064,-91.487289 40.005753,-91.504005 40.066711,-91.516129 40.134544,-91.506546 40.200459,-91.498932 40.251377,-91.486694 40.309624,-91.448593 40.371902,-91.418816 40.386875,-91.385757 40.392361,-91.372757 40.402988,-91.385399 40.44725,-91.374794 40.503654,-91.382103 40.528496,-91.412872 40.547993,-91.411118 40.572971,-91.37561 40.603439,-91.262062 40.639545,-91.214912 40.643818,-91.162498 40.656311,-91.129158 40.682148,-91.119987 40.705402,-91.092751 40.761547,-91.088905 40.833729,-91.04921 40.879585,-90.983276 40.923927,-90.960709 40.950504,-90.954651 41.070362,-90.957787 41.104359,-90.990341 41.144371,-91.018257 41.165825,-91.05632 41.176258,-91.101524 41.231522,-91.102348 41.267818,-91.07328 41.334896,-91.055786 41.401379,-91.027489 41.423508,-91.000694 41.431084,-90.949654 41.421234,-90.844139 41.444622,-90.7799 41.449821,-90.708214 41.450062,-90.658791 41.462318,-90.6007 41.509586,-90.54084 41.52597,-90.454994 41.527546,-90.434967 41.543579,-90.423004 41.567272,-90.348366 41.586849,-90.339348 41.602798,-90.341133 41.64909,-90.326027 41.722736,-90.304886 41.756466,-90.25531 41.781738,-90.195839 41.806137,-90.154518 41.930775,-90.14267 41.983963,-90.150536 42.033428,-90.168098 42.061043,-90.166649 42.103745,-90.176086 42.120502,-90.191574 42.122688,-90.230934 42.159721,-90.323601 42.197319,-90.367729 42.210209,-90.407173 42.242645,-90.417984 42.263924,-90.427681 42.340633,-90.441597 42.360073,-90.491043 42.388783,-90.563583 42.421837,-90.605827 42.46056,-90.648346 42.475643,-90.651772 42.494698,-90.638329 42.509361,-90.419975 42.508362,-89.923569 42.504108,-89.834618 42.50346,-89.400497 42.49749,-89.359444 42.497906,-88.939079 42.490864,-88.764954 42.490906,-88.70652 42.489655,-88.297897 42.49197,-88.194702 42.489613,-87.79731 42.489132,-87.836945 42.314213,-87.760239 42.156456,-87.670547 42.059822,-87.612625 41.847332,-87.529861 41.723591,-87.532646 41.469715,-87.532448 41.301304,-87.531731 41.173756,-87.532021 41.00993,-87.532669 40.745411,-87.53717 40.49461,-87.535675 40.483246,-87.535339 40.166195,-87.535774 39.887302,-87.535576 39.609341,-87.538567 39.477448,-87.540215 39.350525,-87.597664 39.338268,-87.625237 39.307404,-87.610619 39.297661,-87.615799 39.281418,-87.606895 39.258163,-87.584564 39.248753,-87.588593 39.208466,-87.594208 39.198128,-87.607925 39.196068,-87.644257 39.168507,-87.670326 39.146679,-87.659454 39.130653,-87.662262 39.113468,-87.631668 39.103943,-87.630867 39.088974,-87.612007 39.084606,-87.58532 39.062435,-87.581749 38.995743,-87.591858 38.994083,-87.547905 38.977077,-87.53347 38.963703,-87.530182 38.931919,-87.5392 38.904861,-87.559059 38.869812,-87.550507 38.857891,-87.507889 38.795559,-87.519028 38.776699,-87.508003 38.769722,-87.508316 38.736633,-87.543892 38.685974,-87.588478 38.672169,-87.625191 38.642811,-87.628647 38.622917,-87.619827 38.599209,-87.640594 38.593178,-87.652855 38.573872,-87.672943 38.547424,-87.65139 38.515369,-87.653534 38.500443,-87.679909 38.504005,-87.692818 38.481533,-87.756096 38.466125,-87.758659 38.457096,-87.738953 38.44548,-87.748428 38.417965,-87.784019 38.378124,-87.834503 38.352524,-87.850082 38.286098,-87.863007 38.285362,-87.874039 38.316788,-87.883446 38.315552,-87.888466 38.300659,-87.914108 38.281048,-87.913651 38.302345,-87.925919 38.304771,-87.980019 38.241085,-87.986008 38.234814,-87.977928 38.200714,-87.932289 38.171131,-87.931992 38.157528,-87.950569 38.136913,-87.973503 38.13176,-88.018547 38.103302,-88.012329 38.092346,-87.964867 38.096748,-87.975296 38.073307,-88.034729 38.054085,-88.043091 38.04512,-88.041473 38.038303,-88.021698 38.033531,-88.029213 38.008236,-88.021706 37.975056,-88.042511 37.956264,-88.041771 37.934498,-88.064621 37.929783,-88.078941 37.944,-88.084 37.92366,-88.030441 37.917591,-88.026588 37.905758,-88.044868 37.896004,-88.100082 37.90617,-88.101456 37.895306,-88.075737 37.867809,-88.034241 37.843746,-88.042137 37.827522,-88.089264 37.831249,-88.086029 37.817612,-88.035576 37.805683,-88.072472 37.735401,-88.133636 37.700745,-88.15937 37.660686,-88.157631 37.628479,-88.134171 37.583572,-88.071564 37.51099)))"
- );
-
- // two calculations of the area (in square meters)
- var planar = illinois.getArea() * Math.pow(OpenLayers.INCHES_PER_UNIT['dd'] / OpenLayers.INCHES_PER_UNIT['m'], 2);
- var geodesic = illinois.getGeodesicArea();
-
- // from http://en.wikipedia.org/wiki/Illinois
- var expected = 1.40998e11; // square meters
-
- var planarErr = Math.abs(planar - expected) / expected;
- var geodesicErr = Math.abs(geodesic - expected) / expected;
-
- t.ok(geodesicErr < planarErr, "geodesic measure is better (" + geodesicErr.toFixed(3) + " vs. " + planarErr.toFixed(3) + ")");
-
- }
-
- function test_getCentroid(t) {
- t.plan(5);
- var bounds = new OpenLayers.Bounds(5, 10, 5, 10);
- var geometry = bounds.toGeometry();
- var centroid = geometry.getCentroid();
- t.eq(geometry.components[0].components.length, 2, "only two vertices since the box has left=right and bottom=top");
- t.ok(centroid && centroid.x === 5 && centroid.y === 10, "getCentroid returns a point geometry even if the ring of the polygon has only 2 vertices");
- bounds = new OpenLayers.Bounds(123456789.0, 123456789.0, 123456789.1, 123456789.1);
- geometry = bounds.toGeometry();
- centroid = geometry.getCentroid();
- t.eq(geometry.components[0].components.length, 5, "five vertices expected");
- var dX = Math.abs(centroid.x - 123456789.05);
- var dY = Math.abs(centroid.y - 123456789.05);
- t.ok(centroid && dX < 0.0001 && dY < 0.0001, " getCentroid returns the correct point geometry dX = " + dX + ", dY = " + dY);
-
- var components = [
- new OpenLayers.Geometry.Point(0,0), new OpenLayers.Geometry.Point(1,1),
- new OpenLayers.Geometry.Point(0,1), new OpenLayers.Geometry.Point(1,0)];
- var linearRing = new OpenLayers.Geometry.LinearRing(components);
- polygon = new OpenLayers.Geometry.Polygon([linearRing.clone()]);
- centroid = polygon.getCentroid();
- var tX = centroid.x;
- var tY = centroid.y;
- t.ok( !isNaN(tX) && !isNaN(tY) && tX !== Infinity && tY !== Infinity, " getCentroid for wrong polygon works x = " + tX + ", y = " + tY);
- }
-
-
- </script>
-</head>
-<body>
-</body>
-</html>