var SECTION = "10.2.2-2";
var VERSION = "ECMA_1";
startTest();
var TITLE = "Eval Code";
writeHeaderToLog( SECTION + " "+ TITLE);
var testcases = new Array();
var OBJECT = new MyObject( "hello" );
var GLOBAL_PROPERTIES = new Array();
var i = 0;
for ( p in this ) {
GLOBAL_PROPERTIES[i++] = p;
}
with ( OBJECT ) {
var THIS = this;
testcases[tc++] = new TestCase( SECTION, "eval( 'this == THIS' )", true, eval("this == THIS") );
testcases[tc++] = new TestCase( SECTION, "this in a with() block", GLOBAL, this+"" );
testcases[tc++] = new TestCase( SECTION, "new MyObject('hello').value", "hello", value );
testcases[tc++] = new TestCase( SECTION, "eval(new MyObject('hello').value)", "hello", eval("value") );
testcases[tc++] = new TestCase( SECTION, "new MyObject('hello').getClass()", "[object Object]", getClass() );
testcases[tc++] = new TestCase( SECTION, "eval(new MyObject('hello').getClass())", "[object Object]", eval("getClass()") );
testcases[tc++] = new TestCase( SECTION, "eval(new MyObject('hello').toString())", "hello", eval("toString()") );
testcases[tc++] = new TestCase( SECTION, "eval('getClass') == Object.prototype.toString", true, eval("getClass") == Object.prototype.toString );
for ( i = 0; i < GLOBAL_PROPERTIES.length; i++ ) {
testcases[tc++] = new TestCase( SECTION, GLOBAL_PROPERTIES[i] +
" == THIS["+GLOBAL_PROPERTIES[i]+"]", true,
eval(GLOBAL_PROPERTIES[i]) == eval( "THIS[GLOBAL_PROPERTIES[i]]") );
}
}
test();
function test() {
for ( tc=0; tc < testcases.length; tc++ ) {
testcases[tc].passed = writeTestCaseResult(
testcases[tc].expect,
testcases[tc].actual,
testcases[tc].description +" = "+
testcases[tc].actual );
testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value ";
}
stopTest();
return ( testcases );
}
function MyObject( value ) {
this.value = value;
this.getClass = Object.prototype.toString;
this.toString = new Function( "return this.value+''" );
return this;
}