summaryrefslogtreecommitdiff
path: root/jstests/core/geo_s2edgecases.js
blob: 3dabfdf0bcb975ee4b92b40f8a50c7829be2884e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
t = db.geo_s2edgecases;
t.drop();

roundworldpoint = {
    "type": "Point",
    "coordinates": [180, 0]
};

// Opposite the equator
roundworld = {
    "type": "Polygon",
    "coordinates": [[[179, 1], [-179, 1], [-179, -1], [179, -1], [179, 1]]]
};
t.insert({geo: roundworld});

roundworld2 = {
    "type": "Polygon",
    "coordinates": [[[179, 1], [179, -1], [-179, -1], [-179, 1], [179, 1]]]
};
t.insert({geo: roundworld2});

// North pole
santapoint = {
    "type": "Point",
    "coordinates": [180, 90]
};
santa = {
    "type": "Polygon",
    "coordinates": [[[179, 89], [179, 90], [-179, 90], [-179, 89], [179, 89]]]
};
t.insert({geo: santa});
santa2 = {
    "type": "Polygon",
    "coordinates": [[[179, 89], [-179, 89], [-179, 90], [179, 90], [179, 89]]]
};
t.insert({geo: santa2});

// South pole
penguinpoint = {
    "type": "Point",
    "coordinates": [0, -90]
};
penguin1 = {
    "type": "Polygon",
    "coordinates": [[[0, -89], [0, -90], [179, -90], [179, -89], [0, -89]]]
};
t.insert({geo: penguin1});
penguin2 = {
    "type": "Polygon",
    "coordinates": [[[0, -89], [179, -89], [179, -90], [0, -90], [0, -89]]]
};
t.insert({geo: penguin2});

t.ensureIndex({geo: "2dsphere", nonGeo: 1});

res = t.find({"geo": {"$geoIntersects": {"$geometry": roundworldpoint}}});
assert.eq(res.count(), 2);
res = t.find({"geo": {"$geoIntersects": {"$geometry": santapoint}}});
assert.eq(res.count(), 2);
res = t.find({"geo": {"$geoIntersects": {"$geometry": penguinpoint}}});
assert.eq(res.count(), 2);