summaryrefslogtreecommitdiff
path: root/jstests/aggregation/expressions/any_element_true.js
blob: 05c40d0ef39beef81fef8f8e1fa50ddca672a01f (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
/**
 * 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"]});
}());