diff --git a/tests/Geometry/Polygon.html b/tests/Geometry/Polygon.html
index e28484d36e..0df0295d4b 100644
--- a/tests/Geometry/Polygon.html
+++ b/tests/Geometry/Polygon.html
@@ -386,18 +386,30 @@
}
- function testGetCentroid(t) {
- t.plan(4);
+ 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(0, 0, 10, 10);
+ 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");
- t.ok(centroid && centroid.x === 5 && centroid.y === 5, "getCentroid returns the correct point geometry");
+ 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);
}