File: server6120.js

package info (click to toggle)
mongodb 1%3A2.4.10-5
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 82,464 kB
  • sloc: cpp: 740,225; ansic: 152,098; sh: 13,820; python: 11,864; makefile: 1,012; perl: 922; pascal: 617; java: 452; lisp: 222; asm: 174
file content (43 lines) | stat: -rw-r--r-- 1,173 bytes parent folder | download | duplicates (3)
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
// Value::coerceToBool() is consistent with BSONElement::trueValue().  SERVER-6120

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

t.save( {object: {a:1}} );

function coerceToBool( value ) {
    return t.aggregate( { $project:{ boolValue:{ $and:[ value ] } } } ).result[ 0 ].boolValue;
}

function assertBoolValue( expectedBool, value ) {
    assert.eq( expectedBool, coerceToBool( value ) );
}

// Bool type.
assertBoolValue( false, false );
assertBoolValue( true, true );

// Numeric types.
assertBoolValue( false, NumberLong( 0 ) );
assertBoolValue( true, NumberLong( 1 ) );
assertBoolValue( false, NumberInt( 0 ) );
assertBoolValue( true, NumberInt( 1 ) );
assertBoolValue( false, 0.0 );
assertBoolValue( true, 1.0 );

// Always false types.
assertBoolValue( false, null );

// Always true types.
assertBoolValue( true, '' );
assertBoolValue( true, 'a' );
assertBoolValue( true, "$object" );
assertBoolValue( true, [] );
assertBoolValue( true, [ 1 ] );
assertBoolValue( true, new ObjectId() );
assertBoolValue( true, new Date() );
assertBoolValue( true, /a/ );
assertBoolValue( true, new Timestamp() );

// Missing field.
assertBoolValue( false, '$missingField' );