void run(){ Scope * s = globalScriptEngine->newScope(); s->invoke( "x=5;" , BSONObj() ); ASSERT( 5 == s->getNumber( "x" ) ); s->invoke( "return 17;" , BSONObj() ); ASSERT( 17 == s->getNumber( "return" ) ); s->invoke( "function(){ return 17; }" , BSONObj() ); ASSERT( 17 == s->getNumber( "return" ) ); s->setNumber( "x" , 1.76 ); s->invoke( "return x == 1.76; " , BSONObj() ); ASSERT( s->getBoolean( "return" ) ); s->setNumber( "x" , 1.76 ); s->invoke( "return x == 1.79; " , BSONObj() ); ASSERT( ! s->getBoolean( "return" ) ); s->invoke( "function( z ){ return 5 + z; }" , BSON( "" << 11 ) ); ASSERT_EQUALS( 16 , s->getNumber( "return" ) ); delete s; }
void run(){ Scope * s = globalScriptEngine->createScope(); ASSERT( ! s->getBoolean( "x" ) ); s->setString( "z" , "" ); ASSERT( ! s->getBoolean( "z" ) ); delete s ; }
void run(){ Scope * s = globalScriptEngine->createScope(); { // date BSONObj o; { BSONObjBuilder b; b.appendDate( "d" , 123456789 ); o = b.obj(); } s->setObject( "x" , o ); s->invoke( "return x.d.getTime() != 12;" , BSONObj() ); ASSERT_EQUALS( true, s->getBoolean( "return" ) ); s->invoke( "z = x.d.getTime();" , BSONObj() ); ASSERT_EQUALS( 123456789 , s->getNumber( "z" ) ); s->invoke( "z = { z : x.d }" , BSONObj() ); BSONObj out = s->getObject( "z" ); ASSERT( out["z"].type() == Date ); } { // regex BSONObj o; { BSONObjBuilder b; b.appendRegex( "r" , "^a" , "i" ); o = b.obj(); } s->setObject( "x" , o ); s->invoke( "z = x.r.test( 'b' );" , BSONObj() ); ASSERT_EQUALS( false , s->getBoolean( "z" ) ); s->invoke( "z = x.r.test( 'a' );" , BSONObj() ); ASSERT_EQUALS( true , s->getBoolean( "z" ) ); s->invoke( "z = x.r.test( 'ba' );" , BSONObj() ); ASSERT_EQUALS( false , s->getBoolean( "z" ) ); s->invoke( "z = { a : x.r };" , BSONObj() ); BSONObj out = s->getObject("z"); ASSERT_EQUALS( (string)"^a" , out["a"].regex() ); ASSERT_EQUALS( (string)"i" , out["a"].regexFlags() ); } delete s; }
void run(){ Scope * s = globalScriptEngine->createScope(); s->invoke( "x=5;" , BSONObj() ); ASSERT( 5 == s->getNumber( "x" ) ); s->invoke( "return 17;" , BSONObj() ); ASSERT( 17 == s->getNumber( "return" ) ); s->invoke( "function(){ return 17; }" , BSONObj() ); ASSERT( 17 == s->getNumber( "return" ) ); s->setNumber( "x" , 1.76 ); s->invoke( "return x == 1.76; " , BSONObj() ); ASSERT( s->getBoolean( "return" ) ); s->setNumber( "x" , 1.76 ); s->invoke( "return x == 1.79; " , BSONObj() ); ASSERT( ! s->getBoolean( "return" ) ); delete s; }
void run(){ Scope * s = globalScriptEngine->createScope(); s->setNumber( "x" , 5 ); ASSERT( 5 == s->getNumber( "x" ) ); s->setNumber( "x" , 1.67 ); ASSERT( 1.67 == s->getNumber( "x" ) ); s->setString( "s" , "eliot was here" ); ASSERT( "eliot was here" == s->getString( "s" ) ); s->setBoolean( "b" , true ); ASSERT( s->getBoolean( "b" ) ); if ( 0 ){ s->setBoolean( "b" , false ); ASSERT( ! s->getBoolean( "b" ) ); } delete s; }
void run(){ Scope * s = globalScriptEngine->createScope(); BSONObj o = BSON( "x" << 17 << "y" << "eliot" << "z" << "sara" ); s->setObject( "blah" , o ); s->invoke( "return blah.x;" , BSONObj() ); ASSERT_EQUALS( 17 , s->getNumber( "return" ) ); s->invoke( "return blah.y;" , BSONObj() ); ASSERT_EQUALS( "eliot" , s->getString( "return" ) ); s->setThis( & o ); s->invoke( "return this.z;" , BSONObj() ); ASSERT_EQUALS( "sara" , s->getString( "return" ) ); s->invoke( "this.z == 'sara';" , BSONObj() ); ASSERT_EQUALS( true , s->getBoolean( "return" ) ); s->invoke( "this.z == 'asara';" , BSONObj() ); ASSERT_EQUALS( false , s->getBoolean( "return" ) ); s->invoke( "return this.x == 17;" , BSONObj() ); ASSERT_EQUALS( true , s->getBoolean( "return" ) ); s->invoke( "return this.x == 18;" , BSONObj() ); ASSERT_EQUALS( false , s->getBoolean( "return" ) ); s->invoke( "function(){ return this.x == 17; }" , BSONObj() ); ASSERT_EQUALS( true , s->getBoolean( "return" ) ); s->invoke( "function(){ return this.x == 18; }" , BSONObj() ); ASSERT_EQUALS( false , s->getBoolean( "return" ) ); s->invoke( "function (){ return this.x == 17; }" , BSONObj() ); ASSERT_EQUALS( true , s->getBoolean( "return" ) ); s->invoke( "function z(){ return this.x == 18; }" , BSONObj() ); ASSERT_EQUALS( false , s->getBoolean( "return" ) ); s->invoke( "x = 5; for( ; x <10; x++){ a = 1; }" , BSONObj() ); ASSERT_EQUALS( 10 , s->getNumber( "x" ) ); delete s; }