summaryrefslogtreecommitdiff
path: root/jstests/core/push.js
blob: 2e2827945e769a1ed2c05968e0c40eb22fd824a2 (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
var res;

t = db.push;
t.drop();

t.save({_id: 2, a: [1]});
t.update({_id: 2}, {$push: {a: 2}});
assert.eq("1,2", t.findOne().a.toString(), "A");
t.update({_id: 2}, {$push: {a: 3}});
assert.eq("1,2,3", t.findOne().a.toString(), "B");

t.update({_id: 2}, {$pop: {a: 1}});
assert.eq("1,2", t.findOne().a.toString(), "C");
t.update({_id: 2}, {$pop: {a: -1}});
assert.eq("2", t.findOne().a.toString(), "D");

t.update({_id: 2}, {$push: {a: 3}});
t.update({_id: 2}, {$push: {a: 4}});
t.update({_id: 2}, {$push: {a: 5}});
assert.eq("2,3,4,5", t.findOne().a.toString(), "E1");

t.update({_id: 2}, {$pop: {a: -1}});
assert.eq("3,4,5", t.findOne().a.toString(), "E2");

t.update({_id: 2}, {$pop: {a: -1}});
assert.eq("4,5", t.findOne().a.toString(), "E3");

res = t.update({_id: 2}, {$pop: {a: -1}});
assert.commandWorked(res);
assert.eq("5", t.findOne().a.toString(), "E4");

res = t.update({_id: 2}, {$pop: {a: -1}});
assert.commandWorked(res);
assert.eq("", t.findOne().a.toString(), "E5");

res = t.update({_id: 2}, {$pop: {a: -1}});
assert.commandWorked(res);
assert.eq("", t.findOne().a.toString(), "E6");

res = t.update({_id: 2}, {$pop: {a: -1}});
assert.commandWorked(res);
assert.eq("", t.findOne().a.toString(), "E7");

res = t.update({_id: 2}, {$pop: {a: 1}});
assert.commandWorked(res);
assert.eq("", t.findOne().a.toString(), "E8");

res = t.update({_id: 2}, {$pop: {b: -1}});
assert.commandWorked(res);

res = t.update({_id: 2}, {$pop: {b: 1}});
assert.commandWorked(res);