var SECTION = "11.6.2-1";
var VERSION = "ECMA_1";
startTest();
var testcases = getTestCases();
writeHeaderToLog( SECTION + " The subtraction operator ( - )");
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 getTestCases() {
var array = new Array();
var item = 0;
array[item++] = new TestCase( SECTION,
"var EXP_1 = true; var EXP_2 = false; EXP_1 - EXP_2",
1,
eval("var EXP_1 = true; var EXP_2 = false; EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = new Boolean(true); var EXP_2 = new Boolean(false); EXP_1 - EXP_2",
1,
eval("var EXP_1 = new Boolean(true); var EXP_2 = new Boolean(false); EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = new Object(true); var EXP_2 = new Object(false); EXP_1 - EXP_2",
1,
eval("var EXP_1 = new Object(true); var EXP_2 = new Object(false); EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = new Object(new Boolean(true)); var EXP_2 = new Object(new Boolean(false)); EXP_1 - EXP_2",
1,
eval("var EXP_1 = new Object(new Boolean(true)); var EXP_2 = new Object(new Boolean(false)); EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = new MyObject(true); var EXP_2 = new MyObject(false); EXP_1 - EXP_2",
1,
eval("var EXP_1 = new MyObject(true); var EXP_2 = new MyObject(false); EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = new MyObject(new Boolean(true)); var EXP_2 = new MyObject(new Boolean(false)); EXP_1 - EXP_2",
Number.NaN,
eval("var EXP_1 = new MyObject(new Boolean(true)); var EXP_2 = new MyObject(new Boolean(false)); EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = new MyOtherObject(new Boolean(true)); var EXP_2 = new MyOtherObject(new Boolean(false)); EXP_1 - EXP_2",
Number.NaN,
eval("var EXP_1 = new MyOtherObject(new Boolean(true)); var EXP_2 = new MyOtherObject(new Boolean(false)); EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = new MyValuelessObject(true); var EXP_2 = new MyValuelessObject(false); EXP_1 - EXP_2",
1,
eval("var EXP_1 = new MyValuelessObject(true); var EXP_2 = new MyValuelessObject(false); EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = new MyValuelessObject(new Boolean(true)); var EXP_2 = new MyValuelessObject(new Boolean(false)); EXP_1 - EXP_2",
Number.NaN,
eval("var EXP_1 = new MyValuelessObject(new Boolean(true)); var EXP_2 = new MyValuelessObject(new Boolean(false)); EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = 100; var EXP_2 = 1; EXP_1 - EXP_2",
99,
eval("var EXP_1 = 100; var EXP_2 = 1; EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = new Number(100); var EXP_2 = new Number(1); EXP_1 - EXP_2",
99,
eval("var EXP_1 = new Number(100); var EXP_2 = new Number(1); EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = new Object(100); var EXP_2 = new Object(1); EXP_1 - EXP_2",
99,
eval("var EXP_1 = new Object(100); var EXP_2 = new Object(1); EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = new Object(new Number(100)); var EXP_2 = new Object(new Number(1)); EXP_1 - EXP_2",
99,
eval("var EXP_1 = new Object(new Number(100)); var EXP_2 = new Object(new Number(1)); EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = new MyObject(100); var EXP_2 = new MyObject(1); EXP_1 - EXP_2",
99,
eval("var EXP_1 = new MyObject(100); var EXP_2 = new MyObject(1); EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = new MyObject(new Number(100)); var EXP_2 = new MyObject(new Number(1)); EXP_1 - EXP_2",
Number.NaN,
eval("var EXP_1 = new MyObject(new Number(100)); var EXP_2 = new MyObject(new Number(1)); EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = new MyOtherObject(new Number(100)); var EXP_2 = new MyOtherObject(new Number(1)); EXP_1 - EXP_2",
99,
eval("var EXP_1 = new MyOtherObject(new Number(100)); var EXP_2 = new MyOtherObject(new Number(1)); EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = new MyValuelessObject(100); var EXP_2 = new MyValuelessObject(1); EXP_1 - EXP_2",
99,
eval("var EXP_1 = new MyValuelessObject(100); var EXP_2 = new MyValuelessObject(1); EXP_1 - EXP_2") );
array[item++] = new TestCase( SECTION,
"var EXP_1 = new MyOtherObject(new String('0xff')); var EXP_2 = new MyOtherObject(new String('1'); EXP_1 - EXP_2",
254,
eval("var EXP_1 = new MyOtherObject(new String('0xff')); var EXP_2 = new MyOtherObject(new String('1')); EXP_1 - EXP_2") );
return ( array );
}
function MyProtoValuelessObject() {
this.valueOf = new Function ( "" );
this.__proto__ = null;
}
function MyProtolessObject( value ) {
this.valueOf = new Function( "return this.value" );
this.__proto__ = null;
this.value = value;
}
function MyValuelessObject(value) {
this.__proto__ = new MyPrototypeObject(value);
}
function MyPrototypeObject(value) {
this.valueOf = new Function( "return this.value;" );
this.toString = new Function( "return (this.value + '');" );
this.value = value;
}
function MyObject( value ) {
this.valueOf = new Function( "return this.value" );
this.value = value;
}
function MyOtherObject( value ) {
this.valueOf = new Function( "return this.value" );
this.toString = new Function ( "return this.value + ''" );
this.value = value;
}