From 5595b945603b0712c537787e31e6da661c424fee Mon Sep 17 00:00:00 2001 From: Randolph Tan Date: Tue, 14 Jan 2014 14:09:42 -0500 Subject: 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 --- jstests/core/geo_s2polywithholes.js | 46 +++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 jstests/core/geo_s2polywithholes.js (limited to 'jstests/core/geo_s2polywithholes.js') 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})); -- cgit v1.2.1