summaryrefslogtreecommitdiff
path: root/jstests/core/geo_s2polywithholes.js
diff options
context:
space:
mode:
authorRandolph Tan <randolph@10gen.com>2014-01-14 14:09:42 -0500
committerRandolph Tan <randolph@10gen.com>2014-02-28 16:26:33 -0500
commit5595b945603b0712c537787e31e6da661c424fee (patch)
tree90945ee3fe4931032f3af2d397bb755fbf5d30ef /jstests/core/geo_s2polywithholes.js
parentcd62080dcb036e83f8fca6d68d9bcab67bf7a21c (diff)
downloadmongo-5595b945603b0712c537787e31e6da661c424fee.tar.gz
SERVER-12127 migrate js tests to jscore suite when not related to writes
Moved test jstest/[a-i].js -> jstests/core/ and made changes to comply with write command api
Diffstat (limited to 'jstests/core/geo_s2polywithholes.js')
-rwxr-xr-xjstests/core/geo_s2polywithholes.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/jstests/core/geo_s2polywithholes.js b/jstests/core/geo_s2polywithholes.js
new file mode 100755
index 00000000000..f396f6b9a4f
--- /dev/null
+++ b/jstests/core/geo_s2polywithholes.js
@@ -0,0 +1,46 @@
+var t = db.geo_s2weirdpolys;
+t.drop();
+t.ensureIndex({geo: "2dsphere"});
+
+var centerPoint = {"type": "Point", "coordinates": [0.5, 0.5]};
+var edgePoint = {"type": "Point", "coordinates": [0, 0.5]};
+var cornerPoint = {"type": "Point", "coordinates": [0, 0]};
+
+t.insert({geo : centerPoint});
+t.insert({geo : edgePoint});
+t.insert({geo : cornerPoint});
+
+var polygonWithNoHole = {"type" : "Polygon", "coordinates": [
+ [[0,0], [0,1], [1, 1], [1, 0], [0, 0]]
+ ]
+};
+
+// Test 1: Sanity check. Expect all three points.
+var sanityResult = t.find({geo: {$within: {$geometry: polygonWithNoHole}}});
+assert.eq(sanityResult.itcount(), 3);
+
+// Test 2: Polygon with a hole that isn't contained byt the poly shell.
+var polygonWithProtrudingHole = {"type" : "Polygon", "coordinates": [
+ [[0,0], [0,1], [1, 1], [1, 0], [0, 0]],
+ [[0.4,0.9], [0.4,1.1], [0.5, 1.1], [0.5, 0.9], [0.4, 0.9]]
+ ]
+};
+
+// Bad shell, should error.
+assert.writeError(t.insert({geo: polygonWithProtrudingHole}));
+
+// Can't search with bogus poly.
+assert.throws(function() {
+ return t.find({geo: {$within: {$geometry: polygonWithProtrudingHole}}}).itcount()
+})
+
+// Test 3: This test will confirm that a polygon with overlapping holes throws
+// an error.
+var polyWithOverlappingHoles = {"type" : "Polygon", "coordinates": [
+ [[0,0], [0,1], [1, 1], [1, 0], [0, 0]],
+ [[0.2,0.6], [0.2,0.9], [0.6, 0.9], [0.6, 0.6], [0.2, 0.6]],
+ [[0.5,0.4], [0.5,0.7], [0.8, 0.7], [0.8, 0.4], [0.5, 0.4]]
+ ]
+};
+
+assert.writeError(t.insert({geo: polyWithOverlappingHoles}));