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
|
/**
* Basic test coverage for the $anyElementTrue expression.
*/
(function() {
const coll = db.any_element_true;
coll.drop();
assert.commandWorked(coll.insert({
_id: 0,
allTrue: [true, true],
someTrue: [true, false],
noneTrue: [0, false],
nonArray: 1,
nullInput: [null],
undefinedInput: [undefined],
undefinedTrue: [undefined, true],
nullTrue: [null, true],
empty: []
}));
function testOp(expression, expected) {
const results = coll.aggregate([{$project: {_id: 0, result: expression}}]).toArray();
assert.eq(results.length, 1, results);
const loneResult = results[0];
assert(loneResult.hasOwnProperty("result"));
assert.eq(loneResult.result, expected, loneResult);
}
function assertThrows(expression) {
const error =
assert.throws(() => coll.aggregate([{$project: {_id: 0, result: expression}}]).toArray());
assert.commandFailedWithCode(error, 5159200);
}
testOp({$anyElementTrue: {$literal: [true, true]}}, true);
testOp({$anyElementTrue: {$literal: [1, true]}}, true);
testOp({$anyElementTrue: {$literal: [true, 0]}}, true);
testOp({$anyElementTrue: {$literal: [true, 1, false]}}, true);
testOp({$anyElementTrue: {$literal: [false, 0, false]}}, false);
testOp({$anyElementTrue: "$allTrue"}, true);
testOp({$anyElementTrue: "$someTrue"}, true);
testOp({$anyElementTrue: "$noneTrue"}, false);
testOp({$anyElementTrue: ["$noneTrue"]}, false);
testOp({$anyElementTrue: [["$non_existent_field"]]}, false);
testOp({$anyElementTrue: [["$non_existent_field", true]]}, true);
testOp({$anyElementTrue: "$nullInput"}, false);
testOp({$anyElementTrue: "$undefinedInput"}, false);
testOp({$anyElementTrue: "$undefinedTrue"}, true);
testOp({$anyElementTrue: "$nullTrue"}, true);
testOp({$anyElementTrue: "$empty"}, false);
assertThrows({$anyElementTrue: "$nonArray"});
assertThrows({$anyElementTrue: ["$non_existent_field"]});
}());
|