diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/StrictEquality_001/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/StrictEquality_001/Test.as
new file mode 100644
index 000000000..0d11ba5a2
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/StrictEquality_001/Test.as
@@ -0,0 +1,71 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "StrictEquality_001 - 11.9.6";
+// var VERSION = "ECMA_2";
+// var TITLE = "The strict equality operator ( === )";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+
+ // 1. If Type(x) is different from Type(y) return false
+
+ // see bug 103471 for details
+ StrictEquality( true, new Boolean(true), true, array, item++);
+ StrictEquality( new Boolean(), false, true, array, item++);
+ StrictEquality( "", new String(), true, array, item++);
+ StrictEquality( new String("hi"), "hi", true, array, item++);
+
+ // 2. If Type(x) is not Number go to step 9.
+
+ // 3. If x is NaN, return false
+ StrictEquality( NaN, NaN, false, array, item++ );
+ StrictEquality( NaN, 0, false, array, item++ );
+
+ // 4. If y is NaN, return false.
+ StrictEquality( 0, NaN, false, array, item++ );
+
+ // 5. if x is the same number value as y, return true
+
+ // 6. If x is +0 and y is -0, return true
+
+ // 7. If x is -0 and y is +0, return true
+
+ // 8. Return false.
+
+
+ // 9. If Type(x) is String, then return true if x and y are exactly
+ // the same sequence of characters ( same length and same characters
+ // in corresponding positions.) Otherwise return false.
+
+ // 10. If Type(x) is Boolean, return true if x and y are both true or
+ // both false. otherwise return false.
+
+
+ // Return true if x and y refer to the same object. Otherwise return
+ // false.
+
+ // Return false.
+ return array;
+}
+
+function StrictEquality( x, y, expect, array, item ) {
+ result = ( x === y );
+
+ array[item] = Assert.expectEq(
+
+ x +" === " + y,
+ expect,
+ result );
+}
+
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/StrictEquality_001/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/StrictEquality_001/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/StrictEquality_001/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/StrictEquality_001/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/StrictEquality_001/output.txt
new file mode 100644
index 000000000..a5c721397
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/StrictEquality_001/output.txt
@@ -0,0 +1,7 @@
+true === true PASSED!
+false === false PASSED!
+ === PASSED!
+hi === hi PASSED!
+NaN === NaN PASSED!
+NaN === 0 PASSED!
+0 === NaN PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/StrictEquality_001/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/StrictEquality_001/test.swf
new file mode 100644
index 000000000..66b4ff5c1
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/StrictEquality_001/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/StrictEquality_001/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/StrictEquality_001/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/StrictEquality_001/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_1/Test.as
new file mode 100644
index 000000000..5e7d5f08d
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_1/Test.as
@@ -0,0 +1,223 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_10_1";
+// var VERSION = "ECMA_1";
+
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+ var shiftexp = 0;
+ var addexp = 0;
+
+// for ( shiftpow = 0; shiftpow < 33; shiftpow++ ) {
+ for ( shiftpow = 0; shiftpow < 1; shiftpow++ ) {
+ shiftexp += Math.pow( 2, shiftpow );
+
+ // changing from 31 to 33... ecma3 only requires that we
+ // support up to the max signed 32-bit int... this was
+ // testing the max unsigned 32-bit int which we will not
+ // support
+ for ( addpow = 0; addpow < 31; addpow++ ) {
+ addexp += Math.pow(2, addpow);
+
+ array[item++] = Assert.expectEq(
+ shiftexp + " & " + addexp,
+ And( shiftexp, addexp ),
+ shiftexp & addexp );
+ }
+ }
+
+ return ( array );
+}
+function ToInteger( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( n != n ) {
+ return 0;
+ }
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY ) {
+ return n;
+ }
+ return ( sign * Math.floor(Math.abs(n)) );
+}
+function ToInt32( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+
+ n = (sign * Math.floor( Math.abs(n) )) % Math.pow(2,32);
+ n = ( n >= Math.pow(2,31) ) ? n - Math.pow(2,32) : n;
+
+ return ( n );
+}
+function ToUint32( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+ n = sign * Math.floor( Math.abs(n) )
+
+ n = n % Math.pow(2,32);
+
+ if ( n < 0 ){
+ n += Math.pow(2,32);
+ }
+
+ return ( n );
+}
+function ToUint16( n ) {
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+
+ n = ( sign * Math.floor( Math.abs(n) ) ) % Math.pow(2,16);
+
+ if (n <0) {
+ n += Math.pow(2,16);
+ }
+
+ return ( n );
+}
+function Mask( b, n ) {
+ b = ToUint32BitString( b );
+ b = b.substring( b.length - n );
+ b = ToUint32Decimal( b );
+ return ( b );
+}
+function ToUint32BitString( n ) {
+ var b = "";
+ for ( p = 31; p >=0; p-- ) {
+ if ( n >= Math.pow(2,p) ) {
+ b += "1";
+ n -= Math.pow(2,p);
+ } else {
+ b += "0";
+ }
+ }
+ return b;
+}
+function ToInt32BitString( n ) {
+ var b = "";
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ b += ( sign == 1 ) ? "0" : "1";
+
+ for ( p = 30; p >=0; p-- ) {
+ if ( (sign == 1 ) ? sign * n >= Math.pow(2,p) : sign * n > Math.pow(2,p) ) {
+ b += ( sign == 1 ) ? "1" : "0";
+ n -= sign * Math.pow( 2, p );
+ } else {
+ b += ( sign == 1 ) ? "0" : "1";
+ }
+ }
+
+ return b;
+}
+function ToInt32Decimal( bin ) {
+ var r = 0;
+ var sign;
+
+ if ( Number(bin.charAt(0)) == 0 ) {
+ sign = 1;
+ r = 0;
+ } else {
+ sign = -1;
+ r = -(Math.pow(2,31));
+ }
+
+ for ( var j = 0; j < 31; j++ ) {
+ r += Math.pow( 2, j ) * Number(bin.charAt(31-j));
+ }
+
+ return r;
+}
+function ToUint32Decimal( bin ) {
+ var r = 0;
+
+
+ for ( l = bin.length; l < 32; l++ ) {
+ bin = "0" + bin;
+ }
+
+ for ( j = 0; j < 31; j++ ) {
+ r += Math.pow( 2, j ) * Number(bin.charAt(31-j));
+
+ }
+
+ return r;
+}
+function And( s, a ) {
+ s = ToInt32( s );
+ a = ToInt32( a );
+
+ var bs = ToInt32BitString( s );
+ var ba = ToInt32BitString( a );
+
+ var result = "";
+
+ for ( var bit = 0; bit < bs.length; bit++ ) {
+ if ( bs.charAt(bit) == "1" && ba.charAt(bit) == "1" ) {
+ result += "1";
+ } else {
+ result += "0";
+ }
+ }
+ return ToInt32Decimal(result);
+}
+function Xor( s, a ) {
+ s = ToInt32( s );
+ a = ToInt32( a );
+
+ var bs = ToInt32BitString( s );
+ var ba = ToInt32BitString( a );
+
+ var result = "";
+
+ for ( var bit = 0; bit < bs.length; bit++ ) {
+ if ( (bs.charAt(bit) == "1" && ba.charAt(bit) == "0") ||
+ (bs.charAt(bit) == "0" && ba.charAt(bit) == "1")
+ ) {
+ result += "1";
+ } else {
+ result += "0";
+ }
+ }
+
+ return ToInt32Decimal(result);
+}
+function Or( s, a ) {
+ s = ToInt32( s );
+ a = ToInt32( a );
+
+ var bs = ToInt32BitString( s );
+ var ba = ToInt32BitString( a );
+
+ var result = "";
+
+ for ( var bit = 0; bit < bs.length; bit++ ) {
+ if ( bs.charAt(bit) == "1" || ba.charAt(bit) == "1" ) {
+ result += "1";
+ } else {
+ result += "0";
+ }
+ }
+
+ return ToInt32Decimal(result);
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_1/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_1/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_1/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_1/output.txt
new file mode 100644
index 000000000..e9781fa60
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_1/output.txt
@@ -0,0 +1,31 @@
+1 & 1 PASSED!
+1 & 3 PASSED!
+1 & 7 PASSED!
+1 & 15 PASSED!
+1 & 31 PASSED!
+1 & 63 PASSED!
+1 & 127 PASSED!
+1 & 255 PASSED!
+1 & 511 PASSED!
+1 & 1023 PASSED!
+1 & 2047 PASSED!
+1 & 4095 PASSED!
+1 & 8191 PASSED!
+1 & 16383 PASSED!
+1 & 32767 PASSED!
+1 & 65535 PASSED!
+1 & 131071 PASSED!
+1 & 262143 PASSED!
+1 & 524287 PASSED!
+1 & 1048575 PASSED!
+1 & 2097151 PASSED!
+1 & 4194303 PASSED!
+1 & 8388607 PASSED!
+1 & 16777215 PASSED!
+1 & 33554431 PASSED!
+1 & 67108863 PASSED!
+1 & 134217727 PASSED!
+1 & 268435455 PASSED!
+1 & 536870911 PASSED!
+1 & 1073741823 PASSED!
+1 & 2147483647 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_1/test.swf
new file mode 100644
index 000000000..88625e26c
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_1/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_1/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_2/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_2/Test.as
new file mode 100644
index 000000000..ce2871fba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_2/Test.as
@@ -0,0 +1,218 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_10_2";
+// var VERSION = "ECMA_1";
+
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+ var shiftexp = 0;
+ var addexp = 0;
+
+ for ( shiftpow = 0; shiftpow < 33; shiftpow++ ) {
+ shiftexp += Math.pow( 2, shiftpow );
+
+ for ( addpow = 0; addpow < 33; addpow++ ) {
+ addexp += Math.pow(2, addpow);
+
+ array[item++] = Assert.expectEq(
+ shiftexp + " | " + addexp,
+ Or( shiftexp, addexp ),
+ shiftexp | addexp );
+ }
+ }
+
+ return ( array );
+}
+function ToInteger( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( n != n ) {
+ return 0;
+ }
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY ) {
+ return n;
+ }
+ return ( sign * Math.floor(Math.abs(n)) );
+}
+function ToInt32( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+
+ n = (sign * Math.floor( Math.abs(n) )) % Math.pow(2,32);
+ n = ( n >= Math.pow(2,31) ) ? n - Math.pow(2,32) : n;
+
+ return ( n );
+}
+function ToUint32( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+ n = sign * Math.floor( Math.abs(n) )
+
+ n = n % Math.pow(2,32);
+
+ if ( n < 0 ){
+ n += Math.pow(2,32);
+ }
+
+ return ( n );
+}
+function ToUint16( n ) {
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+
+ n = ( sign * Math.floor( Math.abs(n) ) ) % Math.pow(2,16);
+
+ if (n <0) {
+ n += Math.pow(2,16);
+ }
+
+ return ( n );
+}
+function Mask( b, n ) {
+ b = ToUint32BitString( b );
+ b = b.substring( b.length - n );
+ b = ToUint32Decimal( b );
+ return ( b );
+}
+function ToUint32BitString( n ) {
+ var b = "";
+ for ( p = 31; p >=0; p-- ) {
+ if ( n >= Math.pow(2,p) ) {
+ b += "1";
+ n -= Math.pow(2,p);
+ } else {
+ b += "0";
+ }
+ }
+ return b;
+}
+function ToInt32BitString( n ) {
+ var b = "";
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ b += ( sign == 1 ) ? "0" : "1";
+
+ for ( p = 30; p >=0; p-- ) {
+ if ( (sign == 1 ) ? sign * n >= Math.pow(2,p) : sign * n > Math.pow(2,p) ) {
+ b += ( sign == 1 ) ? "1" : "0";
+ n -= sign * Math.pow( 2, p );
+ } else {
+ b += ( sign == 1 ) ? "0" : "1";
+ }
+ }
+
+ return b;
+}
+function ToInt32Decimal( bin ) {
+ var r = 0;
+ var sign;
+
+ if ( Number(bin.charAt(0)) == 0 ) {
+ sign = 1;
+ r = 0;
+ } else {
+ sign = -1;
+ r = -(Math.pow(2,31));
+ }
+
+ for ( var j = 0; j < 31; j++ ) {
+ r += Math.pow( 2, j ) * Number(bin.charAt(31-j));
+ }
+
+ return r;
+}
+function ToUint32Decimal( bin ) {
+ var r = 0;
+
+
+ for ( l = bin.length; l < 32; l++ ) {
+ bin = "0" + bin;
+ }
+
+ for ( j = 0; j < 31; j++ ) {
+ r += Math.pow( 2, j ) * Number(bin.charAt(31-j));
+
+ }
+
+ return r;
+}
+function And( s, a ) {
+ s = ToInt32( s );
+ a = ToInt32( a );
+
+ var bs = ToInt32BitString( s );
+ var ba = ToInt32BitString( a );
+
+ var result = "";
+
+ for ( var bit = 0; bit < bs.length; bit++ ) {
+ if ( bs.charAt(bit) == "1" && ba.charAt(bit) == "1" ) {
+ result += "1";
+ } else {
+ result += "0";
+ }
+ }
+ return ToInt32Decimal(result);
+}
+function Xor( s, a ) {
+ s = ToInt32( s );
+ a = ToInt32( a );
+
+ var bs = ToInt32BitString( s );
+ var ba = ToInt32BitString( a );
+
+ var result = "";
+
+ for ( var bit = 0; bit < bs.length; bit++ ) {
+ if ( (bs.charAt(bit) == "1" && ba.charAt(bit) == "0") ||
+ (bs.charAt(bit) == "0" && ba.charAt(bit) == "1")
+ ) {
+ result += "1";
+ } else {
+ result += "0";
+ }
+ }
+
+ return ToInt32Decimal(result);
+}
+function Or( s, a ) {
+ s = ToInt32( s );
+ a = ToInt32( a );
+
+ var bs = ToInt32BitString( s );
+ var ba = ToInt32BitString( a );
+
+ var result = "";
+
+ for ( var bit = 0; bit < bs.length; bit++ ) {
+ if ( bs.charAt(bit) == "1" || ba.charAt(bit) == "1" ) {
+ result += "1";
+ } else {
+ result += "0";
+ }
+ }
+
+ return ToInt32Decimal(result);
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_2/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_2/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_2/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_2/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_2/output.txt
new file mode 100644
index 000000000..0d427eec7
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_2/output.txt
@@ -0,0 +1,1089 @@
+1 | 1 PASSED!
+1 | 3 PASSED!
+1 | 7 PASSED!
+1 | 15 PASSED!
+1 | 31 PASSED!
+1 | 63 PASSED!
+1 | 127 PASSED!
+1 | 255 PASSED!
+1 | 511 PASSED!
+1 | 1023 PASSED!
+1 | 2047 PASSED!
+1 | 4095 PASSED!
+1 | 8191 PASSED!
+1 | 16383 PASSED!
+1 | 32767 PASSED!
+1 | 65535 PASSED!
+1 | 131071 PASSED!
+1 | 262143 PASSED!
+1 | 524287 PASSED!
+1 | 1048575 PASSED!
+1 | 2097151 PASSED!
+1 | 4194303 PASSED!
+1 | 8388607 PASSED!
+1 | 16777215 PASSED!
+1 | 33554431 PASSED!
+1 | 67108863 PASSED!
+1 | 134217727 PASSED!
+1 | 268435455 PASSED!
+1 | 536870911 PASSED!
+1 | 1073741823 PASSED!
+1 | 2147483647 PASSED!
+1 | 4294967295 PASSED!
+1 | 8589934591 PASSED!
+3 | 8589934592 PASSED!
+3 | 8589934594 PASSED!
+3 | 8589934598 PASSED!
+3 | 8589934606 PASSED!
+3 | 8589934622 PASSED!
+3 | 8589934654 PASSED!
+3 | 8589934718 PASSED!
+3 | 8589934846 PASSED!
+3 | 8589935102 PASSED!
+3 | 8589935614 PASSED!
+3 | 8589936638 PASSED!
+3 | 8589938686 PASSED!
+3 | 8589942782 PASSED!
+3 | 8589950974 PASSED!
+3 | 8589967358 PASSED!
+3 | 8590000126 PASSED!
+3 | 8590065662 PASSED!
+3 | 8590196734 PASSED!
+3 | 8590458878 PASSED!
+3 | 8590983166 PASSED!
+3 | 8592031742 PASSED!
+3 | 8594128894 PASSED!
+3 | 8598323198 PASSED!
+3 | 8606711806 PASSED!
+3 | 8623489022 PASSED!
+3 | 8657043454 PASSED!
+3 | 8724152318 PASSED!
+3 | 8858370046 PASSED!
+3 | 9126805502 PASSED!
+3 | 9663676414 PASSED!
+3 | 10737418238 PASSED!
+3 | 12884901886 PASSED!
+3 | 17179869182 PASSED!
+7 | 17179869183 PASSED!
+7 | 17179869185 PASSED!
+7 | 17179869189 PASSED!
+7 | 17179869197 PASSED!
+7 | 17179869213 PASSED!
+7 | 17179869245 PASSED!
+7 | 17179869309 PASSED!
+7 | 17179869437 PASSED!
+7 | 17179869693 PASSED!
+7 | 17179870205 PASSED!
+7 | 17179871229 PASSED!
+7 | 17179873277 PASSED!
+7 | 17179877373 PASSED!
+7 | 17179885565 PASSED!
+7 | 17179901949 PASSED!
+7 | 17179934717 PASSED!
+7 | 17180000253 PASSED!
+7 | 17180131325 PASSED!
+7 | 17180393469 PASSED!
+7 | 17180917757 PASSED!
+7 | 17181966333 PASSED!
+7 | 17184063485 PASSED!
+7 | 17188257789 PASSED!
+7 | 17196646397 PASSED!
+7 | 17213423613 PASSED!
+7 | 17246978045 PASSED!
+7 | 17314086909 PASSED!
+7 | 17448304637 PASSED!
+7 | 17716740093 PASSED!
+7 | 18253611005 PASSED!
+7 | 19327352829 PASSED!
+7 | 21474836477 PASSED!
+7 | 25769803773 PASSED!
+15 | 25769803774 PASSED!
+15 | 25769803776 PASSED!
+15 | 25769803780 PASSED!
+15 | 25769803788 PASSED!
+15 | 25769803804 PASSED!
+15 | 25769803836 PASSED!
+15 | 25769803900 PASSED!
+15 | 25769804028 PASSED!
+15 | 25769804284 PASSED!
+15 | 25769804796 PASSED!
+15 | 25769805820 PASSED!
+15 | 25769807868 PASSED!
+15 | 25769811964 PASSED!
+15 | 25769820156 PASSED!
+15 | 25769836540 PASSED!
+15 | 25769869308 PASSED!
+15 | 25769934844 PASSED!
+15 | 25770065916 PASSED!
+15 | 25770328060 PASSED!
+15 | 25770852348 PASSED!
+15 | 25771900924 PASSED!
+15 | 25773998076 PASSED!
+15 | 25778192380 PASSED!
+15 | 25786580988 PASSED!
+15 | 25803358204 PASSED!
+15 | 25836912636 PASSED!
+15 | 25904021500 PASSED!
+15 | 26038239228 PASSED!
+15 | 26306674684 PASSED!
+15 | 26843545596 PASSED!
+15 | 27917287420 PASSED!
+15 | 30064771068 PASSED!
+15 | 34359738364 PASSED!
+31 | 34359738365 PASSED!
+31 | 34359738367 PASSED!
+31 | 34359738371 PASSED!
+31 | 34359738379 PASSED!
+31 | 34359738395 PASSED!
+31 | 34359738427 PASSED!
+31 | 34359738491 PASSED!
+31 | 34359738619 PASSED!
+31 | 34359738875 PASSED!
+31 | 34359739387 PASSED!
+31 | 34359740411 PASSED!
+31 | 34359742459 PASSED!
+31 | 34359746555 PASSED!
+31 | 34359754747 PASSED!
+31 | 34359771131 PASSED!
+31 | 34359803899 PASSED!
+31 | 34359869435 PASSED!
+31 | 34360000507 PASSED!
+31 | 34360262651 PASSED!
+31 | 34360786939 PASSED!
+31 | 34361835515 PASSED!
+31 | 34363932667 PASSED!
+31 | 34368126971 PASSED!
+31 | 34376515579 PASSED!
+31 | 34393292795 PASSED!
+31 | 34426847227 PASSED!
+31 | 34493956091 PASSED!
+31 | 34628173819 PASSED!
+31 | 34896609275 PASSED!
+31 | 35433480187 PASSED!
+31 | 36507222011 PASSED!
+31 | 38654705659 PASSED!
+31 | 42949672955 PASSED!
+63 | 42949672956 PASSED!
+63 | 42949672958 PASSED!
+63 | 42949672962 PASSED!
+63 | 42949672970 PASSED!
+63 | 42949672986 PASSED!
+63 | 42949673018 PASSED!
+63 | 42949673082 PASSED!
+63 | 42949673210 PASSED!
+63 | 42949673466 PASSED!
+63 | 42949673978 PASSED!
+63 | 42949675002 PASSED!
+63 | 42949677050 PASSED!
+63 | 42949681146 PASSED!
+63 | 42949689338 PASSED!
+63 | 42949705722 PASSED!
+63 | 42949738490 PASSED!
+63 | 42949804026 PASSED!
+63 | 42949935098 PASSED!
+63 | 42950197242 PASSED!
+63 | 42950721530 PASSED!
+63 | 42951770106 PASSED!
+63 | 42953867258 PASSED!
+63 | 42958061562 PASSED!
+63 | 42966450170 PASSED!
+63 | 42983227386 PASSED!
+63 | 43016781818 PASSED!
+63 | 43083890682 PASSED!
+63 | 43218108410 PASSED!
+63 | 43486543866 PASSED!
+63 | 44023414778 PASSED!
+63 | 45097156602 PASSED!
+63 | 47244640250 PASSED!
+63 | 51539607546 PASSED!
+127 | 51539607547 PASSED!
+127 | 51539607549 PASSED!
+127 | 51539607553 PASSED!
+127 | 51539607561 PASSED!
+127 | 51539607577 PASSED!
+127 | 51539607609 PASSED!
+127 | 51539607673 PASSED!
+127 | 51539607801 PASSED!
+127 | 51539608057 PASSED!
+127 | 51539608569 PASSED!
+127 | 51539609593 PASSED!
+127 | 51539611641 PASSED!
+127 | 51539615737 PASSED!
+127 | 51539623929 PASSED!
+127 | 51539640313 PASSED!
+127 | 51539673081 PASSED!
+127 | 51539738617 PASSED!
+127 | 51539869689 PASSED!
+127 | 51540131833 PASSED!
+127 | 51540656121 PASSED!
+127 | 51541704697 PASSED!
+127 | 51543801849 PASSED!
+127 | 51547996153 PASSED!
+127 | 51556384761 PASSED!
+127 | 51573161977 PASSED!
+127 | 51606716409 PASSED!
+127 | 51673825273 PASSED!
+127 | 51808043001 PASSED!
+127 | 52076478457 PASSED!
+127 | 52613349369 PASSED!
+127 | 53687091193 PASSED!
+127 | 55834574841 PASSED!
+127 | 60129542137 PASSED!
+255 | 60129542138 PASSED!
+255 | 60129542140 PASSED!
+255 | 60129542144 PASSED!
+255 | 60129542152 PASSED!
+255 | 60129542168 PASSED!
+255 | 60129542200 PASSED!
+255 | 60129542264 PASSED!
+255 | 60129542392 PASSED!
+255 | 60129542648 PASSED!
+255 | 60129543160 PASSED!
+255 | 60129544184 PASSED!
+255 | 60129546232 PASSED!
+255 | 60129550328 PASSED!
+255 | 60129558520 PASSED!
+255 | 60129574904 PASSED!
+255 | 60129607672 PASSED!
+255 | 60129673208 PASSED!
+255 | 60129804280 PASSED!
+255 | 60130066424 PASSED!
+255 | 60130590712 PASSED!
+255 | 60131639288 PASSED!
+255 | 60133736440 PASSED!
+255 | 60137930744 PASSED!
+255 | 60146319352 PASSED!
+255 | 60163096568 PASSED!
+255 | 60196651000 PASSED!
+255 | 60263759864 PASSED!
+255 | 60397977592 PASSED!
+255 | 60666413048 PASSED!
+255 | 61203283960 PASSED!
+255 | 62277025784 PASSED!
+255 | 64424509432 PASSED!
+255 | 68719476728 PASSED!
+511 | 68719476729 PASSED!
+511 | 68719476731 PASSED!
+511 | 68719476735 PASSED!
+511 | 68719476743 PASSED!
+511 | 68719476759 PASSED!
+511 | 68719476791 PASSED!
+511 | 68719476855 PASSED!
+511 | 68719476983 PASSED!
+511 | 68719477239 PASSED!
+511 | 68719477751 PASSED!
+511 | 68719478775 PASSED!
+511 | 68719480823 PASSED!
+511 | 68719484919 PASSED!
+511 | 68719493111 PASSED!
+511 | 68719509495 PASSED!
+511 | 68719542263 PASSED!
+511 | 68719607799 PASSED!
+511 | 68719738871 PASSED!
+511 | 68720001015 PASSED!
+511 | 68720525303 PASSED!
+511 | 68721573879 PASSED!
+511 | 68723671031 PASSED!
+511 | 68727865335 PASSED!
+511 | 68736253943 PASSED!
+511 | 68753031159 PASSED!
+511 | 68786585591 PASSED!
+511 | 68853694455 PASSED!
+511 | 68987912183 PASSED!
+511 | 69256347639 PASSED!
+511 | 69793218551 PASSED!
+511 | 70866960375 PASSED!
+511 | 73014444023 PASSED!
+511 | 77309411319 PASSED!
+1023 | 77309411320 PASSED!
+1023 | 77309411322 PASSED!
+1023 | 77309411326 PASSED!
+1023 | 77309411334 PASSED!
+1023 | 77309411350 PASSED!
+1023 | 77309411382 PASSED!
+1023 | 77309411446 PASSED!
+1023 | 77309411574 PASSED!
+1023 | 77309411830 PASSED!
+1023 | 77309412342 PASSED!
+1023 | 77309413366 PASSED!
+1023 | 77309415414 PASSED!
+1023 | 77309419510 PASSED!
+1023 | 77309427702 PASSED!
+1023 | 77309444086 PASSED!
+1023 | 77309476854 PASSED!
+1023 | 77309542390 PASSED!
+1023 | 77309673462 PASSED!
+1023 | 77309935606 PASSED!
+1023 | 77310459894 PASSED!
+1023 | 77311508470 PASSED!
+1023 | 77313605622 PASSED!
+1023 | 77317799926 PASSED!
+1023 | 77326188534 PASSED!
+1023 | 77342965750 PASSED!
+1023 | 77376520182 PASSED!
+1023 | 77443629046 PASSED!
+1023 | 77577846774 PASSED!
+1023 | 77846282230 PASSED!
+1023 | 78383153142 PASSED!
+1023 | 79456894966 PASSED!
+1023 | 81604378614 PASSED!
+1023 | 85899345910 PASSED!
+2047 | 85899345911 PASSED!
+2047 | 85899345913 PASSED!
+2047 | 85899345917 PASSED!
+2047 | 85899345925 PASSED!
+2047 | 85899345941 PASSED!
+2047 | 85899345973 PASSED!
+2047 | 85899346037 PASSED!
+2047 | 85899346165 PASSED!
+2047 | 85899346421 PASSED!
+2047 | 85899346933 PASSED!
+2047 | 85899347957 PASSED!
+2047 | 85899350005 PASSED!
+2047 | 85899354101 PASSED!
+2047 | 85899362293 PASSED!
+2047 | 85899378677 PASSED!
+2047 | 85899411445 PASSED!
+2047 | 85899476981 PASSED!
+2047 | 85899608053 PASSED!
+2047 | 85899870197 PASSED!
+2047 | 85900394485 PASSED!
+2047 | 85901443061 PASSED!
+2047 | 85903540213 PASSED!
+2047 | 85907734517 PASSED!
+2047 | 85916123125 PASSED!
+2047 | 85932900341 PASSED!
+2047 | 85966454773 PASSED!
+2047 | 86033563637 PASSED!
+2047 | 86167781365 PASSED!
+2047 | 86436216821 PASSED!
+2047 | 86973087733 PASSED!
+2047 | 88046829557 PASSED!
+2047 | 90194313205 PASSED!
+2047 | 94489280501 PASSED!
+4095 | 94489280502 PASSED!
+4095 | 94489280504 PASSED!
+4095 | 94489280508 PASSED!
+4095 | 94489280516 PASSED!
+4095 | 94489280532 PASSED!
+4095 | 94489280564 PASSED!
+4095 | 94489280628 PASSED!
+4095 | 94489280756 PASSED!
+4095 | 94489281012 PASSED!
+4095 | 94489281524 PASSED!
+4095 | 94489282548 PASSED!
+4095 | 94489284596 PASSED!
+4095 | 94489288692 PASSED!
+4095 | 94489296884 PASSED!
+4095 | 94489313268 PASSED!
+4095 | 94489346036 PASSED!
+4095 | 94489411572 PASSED!
+4095 | 94489542644 PASSED!
+4095 | 94489804788 PASSED!
+4095 | 94490329076 PASSED!
+4095 | 94491377652 PASSED!
+4095 | 94493474804 PASSED!
+4095 | 94497669108 PASSED!
+4095 | 94506057716 PASSED!
+4095 | 94522834932 PASSED!
+4095 | 94556389364 PASSED!
+4095 | 94623498228 PASSED!
+4095 | 94757715956 PASSED!
+4095 | 95026151412 PASSED!
+4095 | 95563022324 PASSED!
+4095 | 96636764148 PASSED!
+4095 | 98784247796 PASSED!
+4095 | 103079215092 PASSED!
+8191 | 103079215093 PASSED!
+8191 | 103079215095 PASSED!
+8191 | 103079215099 PASSED!
+8191 | 103079215107 PASSED!
+8191 | 103079215123 PASSED!
+8191 | 103079215155 PASSED!
+8191 | 103079215219 PASSED!
+8191 | 103079215347 PASSED!
+8191 | 103079215603 PASSED!
+8191 | 103079216115 PASSED!
+8191 | 103079217139 PASSED!
+8191 | 103079219187 PASSED!
+8191 | 103079223283 PASSED!
+8191 | 103079231475 PASSED!
+8191 | 103079247859 PASSED!
+8191 | 103079280627 PASSED!
+8191 | 103079346163 PASSED!
+8191 | 103079477235 PASSED!
+8191 | 103079739379 PASSED!
+8191 | 103080263667 PASSED!
+8191 | 103081312243 PASSED!
+8191 | 103083409395 PASSED!
+8191 | 103087603699 PASSED!
+8191 | 103095992307 PASSED!
+8191 | 103112769523 PASSED!
+8191 | 103146323955 PASSED!
+8191 | 103213432819 PASSED!
+8191 | 103347650547 PASSED!
+8191 | 103616086003 PASSED!
+8191 | 104152956915 PASSED!
+8191 | 105226698739 PASSED!
+8191 | 107374182387 PASSED!
+8191 | 111669149683 PASSED!
+16383 | 111669149684 PASSED!
+16383 | 111669149686 PASSED!
+16383 | 111669149690 PASSED!
+16383 | 111669149698 PASSED!
+16383 | 111669149714 PASSED!
+16383 | 111669149746 PASSED!
+16383 | 111669149810 PASSED!
+16383 | 111669149938 PASSED!
+16383 | 111669150194 PASSED!
+16383 | 111669150706 PASSED!
+16383 | 111669151730 PASSED!
+16383 | 111669153778 PASSED!
+16383 | 111669157874 PASSED!
+16383 | 111669166066 PASSED!
+16383 | 111669182450 PASSED!
+16383 | 111669215218 PASSED!
+16383 | 111669280754 PASSED!
+16383 | 111669411826 PASSED!
+16383 | 111669673970 PASSED!
+16383 | 111670198258 PASSED!
+16383 | 111671246834 PASSED!
+16383 | 111673343986 PASSED!
+16383 | 111677538290 PASSED!
+16383 | 111685926898 PASSED!
+16383 | 111702704114 PASSED!
+16383 | 111736258546 PASSED!
+16383 | 111803367410 PASSED!
+16383 | 111937585138 PASSED!
+16383 | 112206020594 PASSED!
+16383 | 112742891506 PASSED!
+16383 | 113816633330 PASSED!
+16383 | 115964116978 PASSED!
+16383 | 120259084274 PASSED!
+32767 | 120259084275 PASSED!
+32767 | 120259084277 PASSED!
+32767 | 120259084281 PASSED!
+32767 | 120259084289 PASSED!
+32767 | 120259084305 PASSED!
+32767 | 120259084337 PASSED!
+32767 | 120259084401 PASSED!
+32767 | 120259084529 PASSED!
+32767 | 120259084785 PASSED!
+32767 | 120259085297 PASSED!
+32767 | 120259086321 PASSED!
+32767 | 120259088369 PASSED!
+32767 | 120259092465 PASSED!
+32767 | 120259100657 PASSED!
+32767 | 120259117041 PASSED!
+32767 | 120259149809 PASSED!
+32767 | 120259215345 PASSED!
+32767 | 120259346417 PASSED!
+32767 | 120259608561 PASSED!
+32767 | 120260132849 PASSED!
+32767 | 120261181425 PASSED!
+32767 | 120263278577 PASSED!
+32767 | 120267472881 PASSED!
+32767 | 120275861489 PASSED!
+32767 | 120292638705 PASSED!
+32767 | 120326193137 PASSED!
+32767 | 120393302001 PASSED!
+32767 | 120527519729 PASSED!
+32767 | 120795955185 PASSED!
+32767 | 121332826097 PASSED!
+32767 | 122406567921 PASSED!
+32767 | 124554051569 PASSED!
+32767 | 128849018865 PASSED!
+65535 | 128849018866 PASSED!
+65535 | 128849018868 PASSED!
+65535 | 128849018872 PASSED!
+65535 | 128849018880 PASSED!
+65535 | 128849018896 PASSED!
+65535 | 128849018928 PASSED!
+65535 | 128849018992 PASSED!
+65535 | 128849019120 PASSED!
+65535 | 128849019376 PASSED!
+65535 | 128849019888 PASSED!
+65535 | 128849020912 PASSED!
+65535 | 128849022960 PASSED!
+65535 | 128849027056 PASSED!
+65535 | 128849035248 PASSED!
+65535 | 128849051632 PASSED!
+65535 | 128849084400 PASSED!
+65535 | 128849149936 PASSED!
+65535 | 128849281008 PASSED!
+65535 | 128849543152 PASSED!
+65535 | 128850067440 PASSED!
+65535 | 128851116016 PASSED!
+65535 | 128853213168 PASSED!
+65535 | 128857407472 PASSED!
+65535 | 128865796080 PASSED!
+65535 | 128882573296 PASSED!
+65535 | 128916127728 PASSED!
+65535 | 128983236592 PASSED!
+65535 | 129117454320 PASSED!
+65535 | 129385889776 PASSED!
+65535 | 129922760688 PASSED!
+65535 | 130996502512 PASSED!
+65535 | 133143986160 PASSED!
+65535 | 137438953456 PASSED!
+131071 | 137438953457 PASSED!
+131071 | 137438953459 PASSED!
+131071 | 137438953463 PASSED!
+131071 | 137438953471 PASSED!
+131071 | 137438953487 PASSED!
+131071 | 137438953519 PASSED!
+131071 | 137438953583 PASSED!
+131071 | 137438953711 PASSED!
+131071 | 137438953967 PASSED!
+131071 | 137438954479 PASSED!
+131071 | 137438955503 PASSED!
+131071 | 137438957551 PASSED!
+131071 | 137438961647 PASSED!
+131071 | 137438969839 PASSED!
+131071 | 137438986223 PASSED!
+131071 | 137439018991 PASSED!
+131071 | 137439084527 PASSED!
+131071 | 137439215599 PASSED!
+131071 | 137439477743 PASSED!
+131071 | 137440002031 PASSED!
+131071 | 137441050607 PASSED!
+131071 | 137443147759 PASSED!
+131071 | 137447342063 PASSED!
+131071 | 137455730671 PASSED!
+131071 | 137472507887 PASSED!
+131071 | 137506062319 PASSED!
+131071 | 137573171183 PASSED!
+131071 | 137707388911 PASSED!
+131071 | 137975824367 PASSED!
+131071 | 138512695279 PASSED!
+131071 | 139586437103 PASSED!
+131071 | 141733920751 PASSED!
+131071 | 146028888047 PASSED!
+262143 | 146028888048 PASSED!
+262143 | 146028888050 PASSED!
+262143 | 146028888054 PASSED!
+262143 | 146028888062 PASSED!
+262143 | 146028888078 PASSED!
+262143 | 146028888110 PASSED!
+262143 | 146028888174 PASSED!
+262143 | 146028888302 PASSED!
+262143 | 146028888558 PASSED!
+262143 | 146028889070 PASSED!
+262143 | 146028890094 PASSED!
+262143 | 146028892142 PASSED!
+262143 | 146028896238 PASSED!
+262143 | 146028904430 PASSED!
+262143 | 146028920814 PASSED!
+262143 | 146028953582 PASSED!
+262143 | 146029019118 PASSED!
+262143 | 146029150190 PASSED!
+262143 | 146029412334 PASSED!
+262143 | 146029936622 PASSED!
+262143 | 146030985198 PASSED!
+262143 | 146033082350 PASSED!
+262143 | 146037276654 PASSED!
+262143 | 146045665262 PASSED!
+262143 | 146062442478 PASSED!
+262143 | 146095996910 PASSED!
+262143 | 146163105774 PASSED!
+262143 | 146297323502 PASSED!
+262143 | 146565758958 PASSED!
+262143 | 147102629870 PASSED!
+262143 | 148176371694 PASSED!
+262143 | 150323855342 PASSED!
+262143 | 154618822638 PASSED!
+524287 | 154618822639 PASSED!
+524287 | 154618822641 PASSED!
+524287 | 154618822645 PASSED!
+524287 | 154618822653 PASSED!
+524287 | 154618822669 PASSED!
+524287 | 154618822701 PASSED!
+524287 | 154618822765 PASSED!
+524287 | 154618822893 PASSED!
+524287 | 154618823149 PASSED!
+524287 | 154618823661 PASSED!
+524287 | 154618824685 PASSED!
+524287 | 154618826733 PASSED!
+524287 | 154618830829 PASSED!
+524287 | 154618839021 PASSED!
+524287 | 154618855405 PASSED!
+524287 | 154618888173 PASSED!
+524287 | 154618953709 PASSED!
+524287 | 154619084781 PASSED!
+524287 | 154619346925 PASSED!
+524287 | 154619871213 PASSED!
+524287 | 154620919789 PASSED!
+524287 | 154623016941 PASSED!
+524287 | 154627211245 PASSED!
+524287 | 154635599853 PASSED!
+524287 | 154652377069 PASSED!
+524287 | 154685931501 PASSED!
+524287 | 154753040365 PASSED!
+524287 | 154887258093 PASSED!
+524287 | 155155693549 PASSED!
+524287 | 155692564461 PASSED!
+524287 | 156766306285 PASSED!
+524287 | 158913789933 PASSED!
+524287 | 163208757229 PASSED!
+1048575 | 163208757230 PASSED!
+1048575 | 163208757232 PASSED!
+1048575 | 163208757236 PASSED!
+1048575 | 163208757244 PASSED!
+1048575 | 163208757260 PASSED!
+1048575 | 163208757292 PASSED!
+1048575 | 163208757356 PASSED!
+1048575 | 163208757484 PASSED!
+1048575 | 163208757740 PASSED!
+1048575 | 163208758252 PASSED!
+1048575 | 163208759276 PASSED!
+1048575 | 163208761324 PASSED!
+1048575 | 163208765420 PASSED!
+1048575 | 163208773612 PASSED!
+1048575 | 163208789996 PASSED!
+1048575 | 163208822764 PASSED!
+1048575 | 163208888300 PASSED!
+1048575 | 163209019372 PASSED!
+1048575 | 163209281516 PASSED!
+1048575 | 163209805804 PASSED!
+1048575 | 163210854380 PASSED!
+1048575 | 163212951532 PASSED!
+1048575 | 163217145836 PASSED!
+1048575 | 163225534444 PASSED!
+1048575 | 163242311660 PASSED!
+1048575 | 163275866092 PASSED!
+1048575 | 163342974956 PASSED!
+1048575 | 163477192684 PASSED!
+1048575 | 163745628140 PASSED!
+1048575 | 164282499052 PASSED!
+1048575 | 165356240876 PASSED!
+1048575 | 167503724524 PASSED!
+1048575 | 171798691820 PASSED!
+2097151 | 171798691821 PASSED!
+2097151 | 171798691823 PASSED!
+2097151 | 171798691827 PASSED!
+2097151 | 171798691835 PASSED!
+2097151 | 171798691851 PASSED!
+2097151 | 171798691883 PASSED!
+2097151 | 171798691947 PASSED!
+2097151 | 171798692075 PASSED!
+2097151 | 171798692331 PASSED!
+2097151 | 171798692843 PASSED!
+2097151 | 171798693867 PASSED!
+2097151 | 171798695915 PASSED!
+2097151 | 171798700011 PASSED!
+2097151 | 171798708203 PASSED!
+2097151 | 171798724587 PASSED!
+2097151 | 171798757355 PASSED!
+2097151 | 171798822891 PASSED!
+2097151 | 171798953963 PASSED!
+2097151 | 171799216107 PASSED!
+2097151 | 171799740395 PASSED!
+2097151 | 171800788971 PASSED!
+2097151 | 171802886123 PASSED!
+2097151 | 171807080427 PASSED!
+2097151 | 171815469035 PASSED!
+2097151 | 171832246251 PASSED!
+2097151 | 171865800683 PASSED!
+2097151 | 171932909547 PASSED!
+2097151 | 172067127275 PASSED!
+2097151 | 172335562731 PASSED!
+2097151 | 172872433643 PASSED!
+2097151 | 173946175467 PASSED!
+2097151 | 176093659115 PASSED!
+2097151 | 180388626411 PASSED!
+4194303 | 180388626412 PASSED!
+4194303 | 180388626414 PASSED!
+4194303 | 180388626418 PASSED!
+4194303 | 180388626426 PASSED!
+4194303 | 180388626442 PASSED!
+4194303 | 180388626474 PASSED!
+4194303 | 180388626538 PASSED!
+4194303 | 180388626666 PASSED!
+4194303 | 180388626922 PASSED!
+4194303 | 180388627434 PASSED!
+4194303 | 180388628458 PASSED!
+4194303 | 180388630506 PASSED!
+4194303 | 180388634602 PASSED!
+4194303 | 180388642794 PASSED!
+4194303 | 180388659178 PASSED!
+4194303 | 180388691946 PASSED!
+4194303 | 180388757482 PASSED!
+4194303 | 180388888554 PASSED!
+4194303 | 180389150698 PASSED!
+4194303 | 180389674986 PASSED!
+4194303 | 180390723562 PASSED!
+4194303 | 180392820714 PASSED!
+4194303 | 180397015018 PASSED!
+4194303 | 180405403626 PASSED!
+4194303 | 180422180842 PASSED!
+4194303 | 180455735274 PASSED!
+4194303 | 180522844138 PASSED!
+4194303 | 180657061866 PASSED!
+4194303 | 180925497322 PASSED!
+4194303 | 181462368234 PASSED!
+4194303 | 182536110058 PASSED!
+4194303 | 184683593706 PASSED!
+4194303 | 188978561002 PASSED!
+8388607 | 188978561003 PASSED!
+8388607 | 188978561005 PASSED!
+8388607 | 188978561009 PASSED!
+8388607 | 188978561017 PASSED!
+8388607 | 188978561033 PASSED!
+8388607 | 188978561065 PASSED!
+8388607 | 188978561129 PASSED!
+8388607 | 188978561257 PASSED!
+8388607 | 188978561513 PASSED!
+8388607 | 188978562025 PASSED!
+8388607 | 188978563049 PASSED!
+8388607 | 188978565097 PASSED!
+8388607 | 188978569193 PASSED!
+8388607 | 188978577385 PASSED!
+8388607 | 188978593769 PASSED!
+8388607 | 188978626537 PASSED!
+8388607 | 188978692073 PASSED!
+8388607 | 188978823145 PASSED!
+8388607 | 188979085289 PASSED!
+8388607 | 188979609577 PASSED!
+8388607 | 188980658153 PASSED!
+8388607 | 188982755305 PASSED!
+8388607 | 188986949609 PASSED!
+8388607 | 188995338217 PASSED!
+8388607 | 189012115433 PASSED!
+8388607 | 189045669865 PASSED!
+8388607 | 189112778729 PASSED!
+8388607 | 189246996457 PASSED!
+8388607 | 189515431913 PASSED!
+8388607 | 190052302825 PASSED!
+8388607 | 191126044649 PASSED!
+8388607 | 193273528297 PASSED!
+8388607 | 197568495593 PASSED!
+16777215 | 197568495594 PASSED!
+16777215 | 197568495596 PASSED!
+16777215 | 197568495600 PASSED!
+16777215 | 197568495608 PASSED!
+16777215 | 197568495624 PASSED!
+16777215 | 197568495656 PASSED!
+16777215 | 197568495720 PASSED!
+16777215 | 197568495848 PASSED!
+16777215 | 197568496104 PASSED!
+16777215 | 197568496616 PASSED!
+16777215 | 197568497640 PASSED!
+16777215 | 197568499688 PASSED!
+16777215 | 197568503784 PASSED!
+16777215 | 197568511976 PASSED!
+16777215 | 197568528360 PASSED!
+16777215 | 197568561128 PASSED!
+16777215 | 197568626664 PASSED!
+16777215 | 197568757736 PASSED!
+16777215 | 197569019880 PASSED!
+16777215 | 197569544168 PASSED!
+16777215 | 197570592744 PASSED!
+16777215 | 197572689896 PASSED!
+16777215 | 197576884200 PASSED!
+16777215 | 197585272808 PASSED!
+16777215 | 197602050024 PASSED!
+16777215 | 197635604456 PASSED!
+16777215 | 197702713320 PASSED!
+16777215 | 197836931048 PASSED!
+16777215 | 198105366504 PASSED!
+16777215 | 198642237416 PASSED!
+16777215 | 199715979240 PASSED!
+16777215 | 201863462888 PASSED!
+16777215 | 206158430184 PASSED!
+33554431 | 206158430185 PASSED!
+33554431 | 206158430187 PASSED!
+33554431 | 206158430191 PASSED!
+33554431 | 206158430199 PASSED!
+33554431 | 206158430215 PASSED!
+33554431 | 206158430247 PASSED!
+33554431 | 206158430311 PASSED!
+33554431 | 206158430439 PASSED!
+33554431 | 206158430695 PASSED!
+33554431 | 206158431207 PASSED!
+33554431 | 206158432231 PASSED!
+33554431 | 206158434279 PASSED!
+33554431 | 206158438375 PASSED!
+33554431 | 206158446567 PASSED!
+33554431 | 206158462951 PASSED!
+33554431 | 206158495719 PASSED!
+33554431 | 206158561255 PASSED!
+33554431 | 206158692327 PASSED!
+33554431 | 206158954471 PASSED!
+33554431 | 206159478759 PASSED!
+33554431 | 206160527335 PASSED!
+33554431 | 206162624487 PASSED!
+33554431 | 206166818791 PASSED!
+33554431 | 206175207399 PASSED!
+33554431 | 206191984615 PASSED!
+33554431 | 206225539047 PASSED!
+33554431 | 206292647911 PASSED!
+33554431 | 206426865639 PASSED!
+33554431 | 206695301095 PASSED!
+33554431 | 207232172007 PASSED!
+33554431 | 208305913831 PASSED!
+33554431 | 210453397479 PASSED!
+33554431 | 214748364775 PASSED!
+67108863 | 214748364776 PASSED!
+67108863 | 214748364778 PASSED!
+67108863 | 214748364782 PASSED!
+67108863 | 214748364790 PASSED!
+67108863 | 214748364806 PASSED!
+67108863 | 214748364838 PASSED!
+67108863 | 214748364902 PASSED!
+67108863 | 214748365030 PASSED!
+67108863 | 214748365286 PASSED!
+67108863 | 214748365798 PASSED!
+67108863 | 214748366822 PASSED!
+67108863 | 214748368870 PASSED!
+67108863 | 214748372966 PASSED!
+67108863 | 214748381158 PASSED!
+67108863 | 214748397542 PASSED!
+67108863 | 214748430310 PASSED!
+67108863 | 214748495846 PASSED!
+67108863 | 214748626918 PASSED!
+67108863 | 214748889062 PASSED!
+67108863 | 214749413350 PASSED!
+67108863 | 214750461926 PASSED!
+67108863 | 214752559078 PASSED!
+67108863 | 214756753382 PASSED!
+67108863 | 214765141990 PASSED!
+67108863 | 214781919206 PASSED!
+67108863 | 214815473638 PASSED!
+67108863 | 214882582502 PASSED!
+67108863 | 215016800230 PASSED!
+67108863 | 215285235686 PASSED!
+67108863 | 215822106598 PASSED!
+67108863 | 216895848422 PASSED!
+67108863 | 219043332070 PASSED!
+67108863 | 223338299366 PASSED!
+134217727 | 223338299367 PASSED!
+134217727 | 223338299369 PASSED!
+134217727 | 223338299373 PASSED!
+134217727 | 223338299381 PASSED!
+134217727 | 223338299397 PASSED!
+134217727 | 223338299429 PASSED!
+134217727 | 223338299493 PASSED!
+134217727 | 223338299621 PASSED!
+134217727 | 223338299877 PASSED!
+134217727 | 223338300389 PASSED!
+134217727 | 223338301413 PASSED!
+134217727 | 223338303461 PASSED!
+134217727 | 223338307557 PASSED!
+134217727 | 223338315749 PASSED!
+134217727 | 223338332133 PASSED!
+134217727 | 223338364901 PASSED!
+134217727 | 223338430437 PASSED!
+134217727 | 223338561509 PASSED!
+134217727 | 223338823653 PASSED!
+134217727 | 223339347941 PASSED!
+134217727 | 223340396517 PASSED!
+134217727 | 223342493669 PASSED!
+134217727 | 223346687973 PASSED!
+134217727 | 223355076581 PASSED!
+134217727 | 223371853797 PASSED!
+134217727 | 223405408229 PASSED!
+134217727 | 223472517093 PASSED!
+134217727 | 223606734821 PASSED!
+134217727 | 223875170277 PASSED!
+134217727 | 224412041189 PASSED!
+134217727 | 225485783013 PASSED!
+134217727 | 227633266661 PASSED!
+134217727 | 231928233957 PASSED!
+268435455 | 231928233958 PASSED!
+268435455 | 231928233960 PASSED!
+268435455 | 231928233964 PASSED!
+268435455 | 231928233972 PASSED!
+268435455 | 231928233988 PASSED!
+268435455 | 231928234020 PASSED!
+268435455 | 231928234084 PASSED!
+268435455 | 231928234212 PASSED!
+268435455 | 231928234468 PASSED!
+268435455 | 231928234980 PASSED!
+268435455 | 231928236004 PASSED!
+268435455 | 231928238052 PASSED!
+268435455 | 231928242148 PASSED!
+268435455 | 231928250340 PASSED!
+268435455 | 231928266724 PASSED!
+268435455 | 231928299492 PASSED!
+268435455 | 231928365028 PASSED!
+268435455 | 231928496100 PASSED!
+268435455 | 231928758244 PASSED!
+268435455 | 231929282532 PASSED!
+268435455 | 231930331108 PASSED!
+268435455 | 231932428260 PASSED!
+268435455 | 231936622564 PASSED!
+268435455 | 231945011172 PASSED!
+268435455 | 231961788388 PASSED!
+268435455 | 231995342820 PASSED!
+268435455 | 232062451684 PASSED!
+268435455 | 232196669412 PASSED!
+268435455 | 232465104868 PASSED!
+268435455 | 233001975780 PASSED!
+268435455 | 234075717604 PASSED!
+268435455 | 236223201252 PASSED!
+268435455 | 240518168548 PASSED!
+536870911 | 240518168549 PASSED!
+536870911 | 240518168551 PASSED!
+536870911 | 240518168555 PASSED!
+536870911 | 240518168563 PASSED!
+536870911 | 240518168579 PASSED!
+536870911 | 240518168611 PASSED!
+536870911 | 240518168675 PASSED!
+536870911 | 240518168803 PASSED!
+536870911 | 240518169059 PASSED!
+536870911 | 240518169571 PASSED!
+536870911 | 240518170595 PASSED!
+536870911 | 240518172643 PASSED!
+536870911 | 240518176739 PASSED!
+536870911 | 240518184931 PASSED!
+536870911 | 240518201315 PASSED!
+536870911 | 240518234083 PASSED!
+536870911 | 240518299619 PASSED!
+536870911 | 240518430691 PASSED!
+536870911 | 240518692835 PASSED!
+536870911 | 240519217123 PASSED!
+536870911 | 240520265699 PASSED!
+536870911 | 240522362851 PASSED!
+536870911 | 240526557155 PASSED!
+536870911 | 240534945763 PASSED!
+536870911 | 240551722979 PASSED!
+536870911 | 240585277411 PASSED!
+536870911 | 240652386275 PASSED!
+536870911 | 240786604003 PASSED!
+536870911 | 241055039459 PASSED!
+536870911 | 241591910371 PASSED!
+536870911 | 242665652195 PASSED!
+536870911 | 244813135843 PASSED!
+536870911 | 249108103139 PASSED!
+1073741823 | 249108103140 PASSED!
+1073741823 | 249108103142 PASSED!
+1073741823 | 249108103146 PASSED!
+1073741823 | 249108103154 PASSED!
+1073741823 | 249108103170 PASSED!
+1073741823 | 249108103202 PASSED!
+1073741823 | 249108103266 PASSED!
+1073741823 | 249108103394 PASSED!
+1073741823 | 249108103650 PASSED!
+1073741823 | 249108104162 PASSED!
+1073741823 | 249108105186 PASSED!
+1073741823 | 249108107234 PASSED!
+1073741823 | 249108111330 PASSED!
+1073741823 | 249108119522 PASSED!
+1073741823 | 249108135906 PASSED!
+1073741823 | 249108168674 PASSED!
+1073741823 | 249108234210 PASSED!
+1073741823 | 249108365282 PASSED!
+1073741823 | 249108627426 PASSED!
+1073741823 | 249109151714 PASSED!
+1073741823 | 249110200290 PASSED!
+1073741823 | 249112297442 PASSED!
+1073741823 | 249116491746 PASSED!
+1073741823 | 249124880354 PASSED!
+1073741823 | 249141657570 PASSED!
+1073741823 | 249175212002 PASSED!
+1073741823 | 249242320866 PASSED!
+1073741823 | 249376538594 PASSED!
+1073741823 | 249644974050 PASSED!
+1073741823 | 250181844962 PASSED!
+1073741823 | 251255586786 PASSED!
+1073741823 | 253403070434 PASSED!
+1073741823 | 257698037730 PASSED!
+2147483647 | 257698037731 PASSED!
+2147483647 | 257698037733 PASSED!
+2147483647 | 257698037737 PASSED!
+2147483647 | 257698037745 PASSED!
+2147483647 | 257698037761 PASSED!
+2147483647 | 257698037793 PASSED!
+2147483647 | 257698037857 PASSED!
+2147483647 | 257698037985 PASSED!
+2147483647 | 257698038241 PASSED!
+2147483647 | 257698038753 PASSED!
+2147483647 | 257698039777 PASSED!
+2147483647 | 257698041825 PASSED!
+2147483647 | 257698045921 PASSED!
+2147483647 | 257698054113 PASSED!
+2147483647 | 257698070497 PASSED!
+2147483647 | 257698103265 PASSED!
+2147483647 | 257698168801 PASSED!
+2147483647 | 257698299873 PASSED!
+2147483647 | 257698562017 PASSED!
+2147483647 | 257699086305 PASSED!
+2147483647 | 257700134881 PASSED!
+2147483647 | 257702232033 PASSED!
+2147483647 | 257706426337 PASSED!
+2147483647 | 257714814945 PASSED!
+2147483647 | 257731592161 PASSED!
+2147483647 | 257765146593 PASSED!
+2147483647 | 257832255457 PASSED!
+2147483647 | 257966473185 PASSED!
+2147483647 | 258234908641 PASSED!
+2147483647 | 258771779553 PASSED!
+2147483647 | 259845521377 PASSED!
+2147483647 | 261993005025 PASSED!
+2147483647 | 266287972321 PASSED!
+4294967295 | 266287972322 PASSED!
+4294967295 | 266287972324 PASSED!
+4294967295 | 266287972328 PASSED!
+4294967295 | 266287972336 PASSED!
+4294967295 | 266287972352 PASSED!
+4294967295 | 266287972384 PASSED!
+4294967295 | 266287972448 PASSED!
+4294967295 | 266287972576 PASSED!
+4294967295 | 266287972832 PASSED!
+4294967295 | 266287973344 PASSED!
+4294967295 | 266287974368 PASSED!
+4294967295 | 266287976416 PASSED!
+4294967295 | 266287980512 PASSED!
+4294967295 | 266287988704 PASSED!
+4294967295 | 266288005088 PASSED!
+4294967295 | 266288037856 PASSED!
+4294967295 | 266288103392 PASSED!
+4294967295 | 266288234464 PASSED!
+4294967295 | 266288496608 PASSED!
+4294967295 | 266289020896 PASSED!
+4294967295 | 266290069472 PASSED!
+4294967295 | 266292166624 PASSED!
+4294967295 | 266296360928 PASSED!
+4294967295 | 266304749536 PASSED!
+4294967295 | 266321526752 PASSED!
+4294967295 | 266355081184 PASSED!
+4294967295 | 266422190048 PASSED!
+4294967295 | 266556407776 PASSED!
+4294967295 | 266824843232 PASSED!
+4294967295 | 267361714144 PASSED!
+4294967295 | 268435455968 PASSED!
+4294967295 | 270582939616 PASSED!
+4294967295 | 274877906912 PASSED!
+8589934591 | 274877906913 PASSED!
+8589934591 | 274877906915 PASSED!
+8589934591 | 274877906919 PASSED!
+8589934591 | 274877906927 PASSED!
+8589934591 | 274877906943 PASSED!
+8589934591 | 274877906975 PASSED!
+8589934591 | 274877907039 PASSED!
+8589934591 | 274877907167 PASSED!
+8589934591 | 274877907423 PASSED!
+8589934591 | 274877907935 PASSED!
+8589934591 | 274877908959 PASSED!
+8589934591 | 274877911007 PASSED!
+8589934591 | 274877915103 PASSED!
+8589934591 | 274877923295 PASSED!
+8589934591 | 274877939679 PASSED!
+8589934591 | 274877972447 PASSED!
+8589934591 | 274878037983 PASSED!
+8589934591 | 274878169055 PASSED!
+8589934591 | 274878431199 PASSED!
+8589934591 | 274878955487 PASSED!
+8589934591 | 274880004063 PASSED!
+8589934591 | 274882101215 PASSED!
+8589934591 | 274886295519 PASSED!
+8589934591 | 274894684127 PASSED!
+8589934591 | 274911461343 PASSED!
+8589934591 | 274945015775 PASSED!
+8589934591 | 275012124639 PASSED!
+8589934591 | 275146342367 PASSED!
+8589934591 | 275414777823 PASSED!
+8589934591 | 275951648735 PASSED!
+8589934591 | 277025390559 PASSED!
+8589934591 | 279172874207 PASSED!
+8589934591 | 283467841503 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_2/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_2/test.swf
new file mode 100644
index 000000000..2ae1ffadb
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_2/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_2/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_2/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_2/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_3/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_3/Test.as
new file mode 100644
index 000000000..8ff6aba8b
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_3/Test.as
@@ -0,0 +1,217 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_10_3";
+// var VERSION = "ECMA_1";
+
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+ var shiftexp = 0;
+ var addexp = 0;
+
+ for ( shiftpow = 0; shiftpow < 33; shiftpow++ ) {
+ shiftexp += Math.pow( 2, shiftpow );
+
+ for ( addpow = 0; addpow < 33; addpow++ ) {
+ addexp += Math.pow(2, addpow);
+
+ array[item++] = Assert.expectEq(
+ shiftexp + " ^ " + addexp,
+ Xor( shiftexp, addexp ),
+ shiftexp ^ addexp );
+ }
+ }
+
+ return ( array );
+}
+function ToInteger( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( n != n ) {
+ return 0;
+ }
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY ) {
+ return n;
+ }
+ return ( sign * Math.floor(Math.abs(n)) );
+}
+function ToInt32( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+
+ n = (sign * Math.floor( Math.abs(n) )) % Math.pow(2,32);
+ n = ( n >= Math.pow(2,31) ) ? n - Math.pow(2,32) : n;
+
+ return ( n );
+}
+function ToUint32( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+ n = sign * Math.floor( Math.abs(n) )
+
+ n = n % Math.pow(2,32);
+
+ if ( n < 0 ){
+ n += Math.pow(2,32);
+ }
+
+ return ( n );
+}
+function ToUint16( n ) {
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+
+ n = ( sign * Math.floor( Math.abs(n) ) ) % Math.pow(2,16);
+
+ if (n <0) {
+ n += Math.pow(2,16);
+ }
+
+ return ( n );
+}
+function Mask( b, n ) {
+ b = ToUint32BitString( b );
+ b = b.substring( b.length - n );
+ b = ToUint32Decimal( b );
+ return ( b );
+}
+function ToUint32BitString( n ) {
+ var b = "";
+ for ( p = 31; p >=0; p-- ) {
+ if ( n >= Math.pow(2,p) ) {
+ b += "1";
+ n -= Math.pow(2,p);
+ } else {
+ b += "0";
+ }
+ }
+ return b;
+}
+function ToInt32BitString( n ) {
+ var b = "";
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ b += ( sign == 1 ) ? "0" : "1";
+
+ for ( p = 30; p >=0; p-- ) {
+ if ( (sign == 1 ) ? sign * n >= Math.pow(2,p) : sign * n > Math.pow(2,p) ) {
+ b += ( sign == 1 ) ? "1" : "0";
+ n -= sign * Math.pow( 2, p );
+ } else {
+ b += ( sign == 1 ) ? "0" : "1";
+ }
+ }
+
+ return b;
+}
+function ToInt32Decimal( bin ) {
+ var r = 0;
+ var sign;
+
+ if ( Number(bin.charAt(0)) == 0 ) {
+ sign = 1;
+ r = 0;
+ } else {
+ sign = -1;
+ r = -(Math.pow(2,31));
+ }
+
+ for ( var j = 0; j < 31; j++ ) {
+ r += Math.pow( 2, j ) * Number(bin.charAt(31-j));
+ }
+
+ return r;
+}
+function ToUint32Decimal( bin ) {
+ var r = 0;
+
+ for ( l = bin.length; l < 32; l++ ) {
+ bin = "0" + bin;
+ }
+
+ for ( j = 0; j < 31; j++ ) {
+ r += Math.pow( 2, j ) * Number(bin.charAt(31-j));
+
+ }
+
+ return r;
+}
+function And( s, a ) {
+ s = ToInt32( s );
+ a = ToInt32( a );
+
+ var bs = ToInt32BitString( s );
+ var ba = ToInt32BitString( a );
+
+ var result = "";
+
+ for ( var bit = 0; bit < bs.length; bit++ ) {
+ if ( bs.charAt(bit) == "1" && ba.charAt(bit) == "1" ) {
+ result += "1";
+ } else {
+ result += "0";
+ }
+ }
+ return ToInt32Decimal(result);
+}
+function Xor( s, a ) {
+ s = ToInt32( s );
+ a = ToInt32( a );
+
+ var bs = ToInt32BitString( s );
+ var ba = ToInt32BitString( a );
+
+ var result = "";
+
+ for ( var bit = 0; bit < bs.length; bit++ ) {
+ if ( (bs.charAt(bit) == "1" && ba.charAt(bit) == "0") ||
+ (bs.charAt(bit) == "0" && ba.charAt(bit) == "1")
+ ) {
+ result += "1";
+ } else {
+ result += "0";
+ }
+ }
+
+ return ToInt32Decimal(result);
+}
+function Or( s, a ) {
+ s = ToInt32( s );
+ a = ToInt32( a );
+
+ var bs = ToInt32BitString( s );
+ var ba = ToInt32BitString( a );
+
+ var result = "";
+
+ for ( var bit = 0; bit < bs.length; bit++ ) {
+ if ( bs.charAt(bit) == "1" || ba.charAt(bit) == "1" ) {
+ result += "1";
+ } else {
+ result += "0";
+ }
+ }
+
+ return ToInt32Decimal(result);
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_3/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_3/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_3/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_3/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_3/output.txt
new file mode 100644
index 000000000..6ee478765
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_3/output.txt
@@ -0,0 +1,1089 @@
+1 ^ 1 PASSED!
+1 ^ 3 PASSED!
+1 ^ 7 PASSED!
+1 ^ 15 PASSED!
+1 ^ 31 PASSED!
+1 ^ 63 PASSED!
+1 ^ 127 PASSED!
+1 ^ 255 PASSED!
+1 ^ 511 PASSED!
+1 ^ 1023 PASSED!
+1 ^ 2047 PASSED!
+1 ^ 4095 PASSED!
+1 ^ 8191 PASSED!
+1 ^ 16383 PASSED!
+1 ^ 32767 PASSED!
+1 ^ 65535 PASSED!
+1 ^ 131071 PASSED!
+1 ^ 262143 PASSED!
+1 ^ 524287 PASSED!
+1 ^ 1048575 PASSED!
+1 ^ 2097151 PASSED!
+1 ^ 4194303 PASSED!
+1 ^ 8388607 PASSED!
+1 ^ 16777215 PASSED!
+1 ^ 33554431 PASSED!
+1 ^ 67108863 PASSED!
+1 ^ 134217727 PASSED!
+1 ^ 268435455 PASSED!
+1 ^ 536870911 PASSED!
+1 ^ 1073741823 PASSED!
+1 ^ 2147483647 PASSED!
+1 ^ 4294967295 PASSED!
+1 ^ 8589934591 PASSED!
+3 ^ 8589934592 PASSED!
+3 ^ 8589934594 PASSED!
+3 ^ 8589934598 PASSED!
+3 ^ 8589934606 PASSED!
+3 ^ 8589934622 PASSED!
+3 ^ 8589934654 PASSED!
+3 ^ 8589934718 PASSED!
+3 ^ 8589934846 PASSED!
+3 ^ 8589935102 PASSED!
+3 ^ 8589935614 PASSED!
+3 ^ 8589936638 PASSED!
+3 ^ 8589938686 PASSED!
+3 ^ 8589942782 PASSED!
+3 ^ 8589950974 PASSED!
+3 ^ 8589967358 PASSED!
+3 ^ 8590000126 PASSED!
+3 ^ 8590065662 PASSED!
+3 ^ 8590196734 PASSED!
+3 ^ 8590458878 PASSED!
+3 ^ 8590983166 PASSED!
+3 ^ 8592031742 PASSED!
+3 ^ 8594128894 PASSED!
+3 ^ 8598323198 PASSED!
+3 ^ 8606711806 PASSED!
+3 ^ 8623489022 PASSED!
+3 ^ 8657043454 PASSED!
+3 ^ 8724152318 PASSED!
+3 ^ 8858370046 PASSED!
+3 ^ 9126805502 PASSED!
+3 ^ 9663676414 PASSED!
+3 ^ 10737418238 PASSED!
+3 ^ 12884901886 PASSED!
+3 ^ 17179869182 PASSED!
+7 ^ 17179869183 PASSED!
+7 ^ 17179869185 PASSED!
+7 ^ 17179869189 PASSED!
+7 ^ 17179869197 PASSED!
+7 ^ 17179869213 PASSED!
+7 ^ 17179869245 PASSED!
+7 ^ 17179869309 PASSED!
+7 ^ 17179869437 PASSED!
+7 ^ 17179869693 PASSED!
+7 ^ 17179870205 PASSED!
+7 ^ 17179871229 PASSED!
+7 ^ 17179873277 PASSED!
+7 ^ 17179877373 PASSED!
+7 ^ 17179885565 PASSED!
+7 ^ 17179901949 PASSED!
+7 ^ 17179934717 PASSED!
+7 ^ 17180000253 PASSED!
+7 ^ 17180131325 PASSED!
+7 ^ 17180393469 PASSED!
+7 ^ 17180917757 PASSED!
+7 ^ 17181966333 PASSED!
+7 ^ 17184063485 PASSED!
+7 ^ 17188257789 PASSED!
+7 ^ 17196646397 PASSED!
+7 ^ 17213423613 PASSED!
+7 ^ 17246978045 PASSED!
+7 ^ 17314086909 PASSED!
+7 ^ 17448304637 PASSED!
+7 ^ 17716740093 PASSED!
+7 ^ 18253611005 PASSED!
+7 ^ 19327352829 PASSED!
+7 ^ 21474836477 PASSED!
+7 ^ 25769803773 PASSED!
+15 ^ 25769803774 PASSED!
+15 ^ 25769803776 PASSED!
+15 ^ 25769803780 PASSED!
+15 ^ 25769803788 PASSED!
+15 ^ 25769803804 PASSED!
+15 ^ 25769803836 PASSED!
+15 ^ 25769803900 PASSED!
+15 ^ 25769804028 PASSED!
+15 ^ 25769804284 PASSED!
+15 ^ 25769804796 PASSED!
+15 ^ 25769805820 PASSED!
+15 ^ 25769807868 PASSED!
+15 ^ 25769811964 PASSED!
+15 ^ 25769820156 PASSED!
+15 ^ 25769836540 PASSED!
+15 ^ 25769869308 PASSED!
+15 ^ 25769934844 PASSED!
+15 ^ 25770065916 PASSED!
+15 ^ 25770328060 PASSED!
+15 ^ 25770852348 PASSED!
+15 ^ 25771900924 PASSED!
+15 ^ 25773998076 PASSED!
+15 ^ 25778192380 PASSED!
+15 ^ 25786580988 PASSED!
+15 ^ 25803358204 PASSED!
+15 ^ 25836912636 PASSED!
+15 ^ 25904021500 PASSED!
+15 ^ 26038239228 PASSED!
+15 ^ 26306674684 PASSED!
+15 ^ 26843545596 PASSED!
+15 ^ 27917287420 PASSED!
+15 ^ 30064771068 PASSED!
+15 ^ 34359738364 PASSED!
+31 ^ 34359738365 PASSED!
+31 ^ 34359738367 PASSED!
+31 ^ 34359738371 PASSED!
+31 ^ 34359738379 PASSED!
+31 ^ 34359738395 PASSED!
+31 ^ 34359738427 PASSED!
+31 ^ 34359738491 PASSED!
+31 ^ 34359738619 PASSED!
+31 ^ 34359738875 PASSED!
+31 ^ 34359739387 PASSED!
+31 ^ 34359740411 PASSED!
+31 ^ 34359742459 PASSED!
+31 ^ 34359746555 PASSED!
+31 ^ 34359754747 PASSED!
+31 ^ 34359771131 PASSED!
+31 ^ 34359803899 PASSED!
+31 ^ 34359869435 PASSED!
+31 ^ 34360000507 PASSED!
+31 ^ 34360262651 PASSED!
+31 ^ 34360786939 PASSED!
+31 ^ 34361835515 PASSED!
+31 ^ 34363932667 PASSED!
+31 ^ 34368126971 PASSED!
+31 ^ 34376515579 PASSED!
+31 ^ 34393292795 PASSED!
+31 ^ 34426847227 PASSED!
+31 ^ 34493956091 PASSED!
+31 ^ 34628173819 PASSED!
+31 ^ 34896609275 PASSED!
+31 ^ 35433480187 PASSED!
+31 ^ 36507222011 PASSED!
+31 ^ 38654705659 PASSED!
+31 ^ 42949672955 PASSED!
+63 ^ 42949672956 PASSED!
+63 ^ 42949672958 PASSED!
+63 ^ 42949672962 PASSED!
+63 ^ 42949672970 PASSED!
+63 ^ 42949672986 PASSED!
+63 ^ 42949673018 PASSED!
+63 ^ 42949673082 PASSED!
+63 ^ 42949673210 PASSED!
+63 ^ 42949673466 PASSED!
+63 ^ 42949673978 PASSED!
+63 ^ 42949675002 PASSED!
+63 ^ 42949677050 PASSED!
+63 ^ 42949681146 PASSED!
+63 ^ 42949689338 PASSED!
+63 ^ 42949705722 PASSED!
+63 ^ 42949738490 PASSED!
+63 ^ 42949804026 PASSED!
+63 ^ 42949935098 PASSED!
+63 ^ 42950197242 PASSED!
+63 ^ 42950721530 PASSED!
+63 ^ 42951770106 PASSED!
+63 ^ 42953867258 PASSED!
+63 ^ 42958061562 PASSED!
+63 ^ 42966450170 PASSED!
+63 ^ 42983227386 PASSED!
+63 ^ 43016781818 PASSED!
+63 ^ 43083890682 PASSED!
+63 ^ 43218108410 PASSED!
+63 ^ 43486543866 PASSED!
+63 ^ 44023414778 PASSED!
+63 ^ 45097156602 PASSED!
+63 ^ 47244640250 PASSED!
+63 ^ 51539607546 PASSED!
+127 ^ 51539607547 PASSED!
+127 ^ 51539607549 PASSED!
+127 ^ 51539607553 PASSED!
+127 ^ 51539607561 PASSED!
+127 ^ 51539607577 PASSED!
+127 ^ 51539607609 PASSED!
+127 ^ 51539607673 PASSED!
+127 ^ 51539607801 PASSED!
+127 ^ 51539608057 PASSED!
+127 ^ 51539608569 PASSED!
+127 ^ 51539609593 PASSED!
+127 ^ 51539611641 PASSED!
+127 ^ 51539615737 PASSED!
+127 ^ 51539623929 PASSED!
+127 ^ 51539640313 PASSED!
+127 ^ 51539673081 PASSED!
+127 ^ 51539738617 PASSED!
+127 ^ 51539869689 PASSED!
+127 ^ 51540131833 PASSED!
+127 ^ 51540656121 PASSED!
+127 ^ 51541704697 PASSED!
+127 ^ 51543801849 PASSED!
+127 ^ 51547996153 PASSED!
+127 ^ 51556384761 PASSED!
+127 ^ 51573161977 PASSED!
+127 ^ 51606716409 PASSED!
+127 ^ 51673825273 PASSED!
+127 ^ 51808043001 PASSED!
+127 ^ 52076478457 PASSED!
+127 ^ 52613349369 PASSED!
+127 ^ 53687091193 PASSED!
+127 ^ 55834574841 PASSED!
+127 ^ 60129542137 PASSED!
+255 ^ 60129542138 PASSED!
+255 ^ 60129542140 PASSED!
+255 ^ 60129542144 PASSED!
+255 ^ 60129542152 PASSED!
+255 ^ 60129542168 PASSED!
+255 ^ 60129542200 PASSED!
+255 ^ 60129542264 PASSED!
+255 ^ 60129542392 PASSED!
+255 ^ 60129542648 PASSED!
+255 ^ 60129543160 PASSED!
+255 ^ 60129544184 PASSED!
+255 ^ 60129546232 PASSED!
+255 ^ 60129550328 PASSED!
+255 ^ 60129558520 PASSED!
+255 ^ 60129574904 PASSED!
+255 ^ 60129607672 PASSED!
+255 ^ 60129673208 PASSED!
+255 ^ 60129804280 PASSED!
+255 ^ 60130066424 PASSED!
+255 ^ 60130590712 PASSED!
+255 ^ 60131639288 PASSED!
+255 ^ 60133736440 PASSED!
+255 ^ 60137930744 PASSED!
+255 ^ 60146319352 PASSED!
+255 ^ 60163096568 PASSED!
+255 ^ 60196651000 PASSED!
+255 ^ 60263759864 PASSED!
+255 ^ 60397977592 PASSED!
+255 ^ 60666413048 PASSED!
+255 ^ 61203283960 PASSED!
+255 ^ 62277025784 PASSED!
+255 ^ 64424509432 PASSED!
+255 ^ 68719476728 PASSED!
+511 ^ 68719476729 PASSED!
+511 ^ 68719476731 PASSED!
+511 ^ 68719476735 PASSED!
+511 ^ 68719476743 PASSED!
+511 ^ 68719476759 PASSED!
+511 ^ 68719476791 PASSED!
+511 ^ 68719476855 PASSED!
+511 ^ 68719476983 PASSED!
+511 ^ 68719477239 PASSED!
+511 ^ 68719477751 PASSED!
+511 ^ 68719478775 PASSED!
+511 ^ 68719480823 PASSED!
+511 ^ 68719484919 PASSED!
+511 ^ 68719493111 PASSED!
+511 ^ 68719509495 PASSED!
+511 ^ 68719542263 PASSED!
+511 ^ 68719607799 PASSED!
+511 ^ 68719738871 PASSED!
+511 ^ 68720001015 PASSED!
+511 ^ 68720525303 PASSED!
+511 ^ 68721573879 PASSED!
+511 ^ 68723671031 PASSED!
+511 ^ 68727865335 PASSED!
+511 ^ 68736253943 PASSED!
+511 ^ 68753031159 PASSED!
+511 ^ 68786585591 PASSED!
+511 ^ 68853694455 PASSED!
+511 ^ 68987912183 PASSED!
+511 ^ 69256347639 PASSED!
+511 ^ 69793218551 PASSED!
+511 ^ 70866960375 PASSED!
+511 ^ 73014444023 PASSED!
+511 ^ 77309411319 PASSED!
+1023 ^ 77309411320 PASSED!
+1023 ^ 77309411322 PASSED!
+1023 ^ 77309411326 PASSED!
+1023 ^ 77309411334 PASSED!
+1023 ^ 77309411350 PASSED!
+1023 ^ 77309411382 PASSED!
+1023 ^ 77309411446 PASSED!
+1023 ^ 77309411574 PASSED!
+1023 ^ 77309411830 PASSED!
+1023 ^ 77309412342 PASSED!
+1023 ^ 77309413366 PASSED!
+1023 ^ 77309415414 PASSED!
+1023 ^ 77309419510 PASSED!
+1023 ^ 77309427702 PASSED!
+1023 ^ 77309444086 PASSED!
+1023 ^ 77309476854 PASSED!
+1023 ^ 77309542390 PASSED!
+1023 ^ 77309673462 PASSED!
+1023 ^ 77309935606 PASSED!
+1023 ^ 77310459894 PASSED!
+1023 ^ 77311508470 PASSED!
+1023 ^ 77313605622 PASSED!
+1023 ^ 77317799926 PASSED!
+1023 ^ 77326188534 PASSED!
+1023 ^ 77342965750 PASSED!
+1023 ^ 77376520182 PASSED!
+1023 ^ 77443629046 PASSED!
+1023 ^ 77577846774 PASSED!
+1023 ^ 77846282230 PASSED!
+1023 ^ 78383153142 PASSED!
+1023 ^ 79456894966 PASSED!
+1023 ^ 81604378614 PASSED!
+1023 ^ 85899345910 PASSED!
+2047 ^ 85899345911 PASSED!
+2047 ^ 85899345913 PASSED!
+2047 ^ 85899345917 PASSED!
+2047 ^ 85899345925 PASSED!
+2047 ^ 85899345941 PASSED!
+2047 ^ 85899345973 PASSED!
+2047 ^ 85899346037 PASSED!
+2047 ^ 85899346165 PASSED!
+2047 ^ 85899346421 PASSED!
+2047 ^ 85899346933 PASSED!
+2047 ^ 85899347957 PASSED!
+2047 ^ 85899350005 PASSED!
+2047 ^ 85899354101 PASSED!
+2047 ^ 85899362293 PASSED!
+2047 ^ 85899378677 PASSED!
+2047 ^ 85899411445 PASSED!
+2047 ^ 85899476981 PASSED!
+2047 ^ 85899608053 PASSED!
+2047 ^ 85899870197 PASSED!
+2047 ^ 85900394485 PASSED!
+2047 ^ 85901443061 PASSED!
+2047 ^ 85903540213 PASSED!
+2047 ^ 85907734517 PASSED!
+2047 ^ 85916123125 PASSED!
+2047 ^ 85932900341 PASSED!
+2047 ^ 85966454773 PASSED!
+2047 ^ 86033563637 PASSED!
+2047 ^ 86167781365 PASSED!
+2047 ^ 86436216821 PASSED!
+2047 ^ 86973087733 PASSED!
+2047 ^ 88046829557 PASSED!
+2047 ^ 90194313205 PASSED!
+2047 ^ 94489280501 PASSED!
+4095 ^ 94489280502 PASSED!
+4095 ^ 94489280504 PASSED!
+4095 ^ 94489280508 PASSED!
+4095 ^ 94489280516 PASSED!
+4095 ^ 94489280532 PASSED!
+4095 ^ 94489280564 PASSED!
+4095 ^ 94489280628 PASSED!
+4095 ^ 94489280756 PASSED!
+4095 ^ 94489281012 PASSED!
+4095 ^ 94489281524 PASSED!
+4095 ^ 94489282548 PASSED!
+4095 ^ 94489284596 PASSED!
+4095 ^ 94489288692 PASSED!
+4095 ^ 94489296884 PASSED!
+4095 ^ 94489313268 PASSED!
+4095 ^ 94489346036 PASSED!
+4095 ^ 94489411572 PASSED!
+4095 ^ 94489542644 PASSED!
+4095 ^ 94489804788 PASSED!
+4095 ^ 94490329076 PASSED!
+4095 ^ 94491377652 PASSED!
+4095 ^ 94493474804 PASSED!
+4095 ^ 94497669108 PASSED!
+4095 ^ 94506057716 PASSED!
+4095 ^ 94522834932 PASSED!
+4095 ^ 94556389364 PASSED!
+4095 ^ 94623498228 PASSED!
+4095 ^ 94757715956 PASSED!
+4095 ^ 95026151412 PASSED!
+4095 ^ 95563022324 PASSED!
+4095 ^ 96636764148 PASSED!
+4095 ^ 98784247796 PASSED!
+4095 ^ 103079215092 PASSED!
+8191 ^ 103079215093 PASSED!
+8191 ^ 103079215095 PASSED!
+8191 ^ 103079215099 PASSED!
+8191 ^ 103079215107 PASSED!
+8191 ^ 103079215123 PASSED!
+8191 ^ 103079215155 PASSED!
+8191 ^ 103079215219 PASSED!
+8191 ^ 103079215347 PASSED!
+8191 ^ 103079215603 PASSED!
+8191 ^ 103079216115 PASSED!
+8191 ^ 103079217139 PASSED!
+8191 ^ 103079219187 PASSED!
+8191 ^ 103079223283 PASSED!
+8191 ^ 103079231475 PASSED!
+8191 ^ 103079247859 PASSED!
+8191 ^ 103079280627 PASSED!
+8191 ^ 103079346163 PASSED!
+8191 ^ 103079477235 PASSED!
+8191 ^ 103079739379 PASSED!
+8191 ^ 103080263667 PASSED!
+8191 ^ 103081312243 PASSED!
+8191 ^ 103083409395 PASSED!
+8191 ^ 103087603699 PASSED!
+8191 ^ 103095992307 PASSED!
+8191 ^ 103112769523 PASSED!
+8191 ^ 103146323955 PASSED!
+8191 ^ 103213432819 PASSED!
+8191 ^ 103347650547 PASSED!
+8191 ^ 103616086003 PASSED!
+8191 ^ 104152956915 PASSED!
+8191 ^ 105226698739 PASSED!
+8191 ^ 107374182387 PASSED!
+8191 ^ 111669149683 PASSED!
+16383 ^ 111669149684 PASSED!
+16383 ^ 111669149686 PASSED!
+16383 ^ 111669149690 PASSED!
+16383 ^ 111669149698 PASSED!
+16383 ^ 111669149714 PASSED!
+16383 ^ 111669149746 PASSED!
+16383 ^ 111669149810 PASSED!
+16383 ^ 111669149938 PASSED!
+16383 ^ 111669150194 PASSED!
+16383 ^ 111669150706 PASSED!
+16383 ^ 111669151730 PASSED!
+16383 ^ 111669153778 PASSED!
+16383 ^ 111669157874 PASSED!
+16383 ^ 111669166066 PASSED!
+16383 ^ 111669182450 PASSED!
+16383 ^ 111669215218 PASSED!
+16383 ^ 111669280754 PASSED!
+16383 ^ 111669411826 PASSED!
+16383 ^ 111669673970 PASSED!
+16383 ^ 111670198258 PASSED!
+16383 ^ 111671246834 PASSED!
+16383 ^ 111673343986 PASSED!
+16383 ^ 111677538290 PASSED!
+16383 ^ 111685926898 PASSED!
+16383 ^ 111702704114 PASSED!
+16383 ^ 111736258546 PASSED!
+16383 ^ 111803367410 PASSED!
+16383 ^ 111937585138 PASSED!
+16383 ^ 112206020594 PASSED!
+16383 ^ 112742891506 PASSED!
+16383 ^ 113816633330 PASSED!
+16383 ^ 115964116978 PASSED!
+16383 ^ 120259084274 PASSED!
+32767 ^ 120259084275 PASSED!
+32767 ^ 120259084277 PASSED!
+32767 ^ 120259084281 PASSED!
+32767 ^ 120259084289 PASSED!
+32767 ^ 120259084305 PASSED!
+32767 ^ 120259084337 PASSED!
+32767 ^ 120259084401 PASSED!
+32767 ^ 120259084529 PASSED!
+32767 ^ 120259084785 PASSED!
+32767 ^ 120259085297 PASSED!
+32767 ^ 120259086321 PASSED!
+32767 ^ 120259088369 PASSED!
+32767 ^ 120259092465 PASSED!
+32767 ^ 120259100657 PASSED!
+32767 ^ 120259117041 PASSED!
+32767 ^ 120259149809 PASSED!
+32767 ^ 120259215345 PASSED!
+32767 ^ 120259346417 PASSED!
+32767 ^ 120259608561 PASSED!
+32767 ^ 120260132849 PASSED!
+32767 ^ 120261181425 PASSED!
+32767 ^ 120263278577 PASSED!
+32767 ^ 120267472881 PASSED!
+32767 ^ 120275861489 PASSED!
+32767 ^ 120292638705 PASSED!
+32767 ^ 120326193137 PASSED!
+32767 ^ 120393302001 PASSED!
+32767 ^ 120527519729 PASSED!
+32767 ^ 120795955185 PASSED!
+32767 ^ 121332826097 PASSED!
+32767 ^ 122406567921 PASSED!
+32767 ^ 124554051569 PASSED!
+32767 ^ 128849018865 PASSED!
+65535 ^ 128849018866 PASSED!
+65535 ^ 128849018868 PASSED!
+65535 ^ 128849018872 PASSED!
+65535 ^ 128849018880 PASSED!
+65535 ^ 128849018896 PASSED!
+65535 ^ 128849018928 PASSED!
+65535 ^ 128849018992 PASSED!
+65535 ^ 128849019120 PASSED!
+65535 ^ 128849019376 PASSED!
+65535 ^ 128849019888 PASSED!
+65535 ^ 128849020912 PASSED!
+65535 ^ 128849022960 PASSED!
+65535 ^ 128849027056 PASSED!
+65535 ^ 128849035248 PASSED!
+65535 ^ 128849051632 PASSED!
+65535 ^ 128849084400 PASSED!
+65535 ^ 128849149936 PASSED!
+65535 ^ 128849281008 PASSED!
+65535 ^ 128849543152 PASSED!
+65535 ^ 128850067440 PASSED!
+65535 ^ 128851116016 PASSED!
+65535 ^ 128853213168 PASSED!
+65535 ^ 128857407472 PASSED!
+65535 ^ 128865796080 PASSED!
+65535 ^ 128882573296 PASSED!
+65535 ^ 128916127728 PASSED!
+65535 ^ 128983236592 PASSED!
+65535 ^ 129117454320 PASSED!
+65535 ^ 129385889776 PASSED!
+65535 ^ 129922760688 PASSED!
+65535 ^ 130996502512 PASSED!
+65535 ^ 133143986160 PASSED!
+65535 ^ 137438953456 PASSED!
+131071 ^ 137438953457 PASSED!
+131071 ^ 137438953459 PASSED!
+131071 ^ 137438953463 PASSED!
+131071 ^ 137438953471 PASSED!
+131071 ^ 137438953487 PASSED!
+131071 ^ 137438953519 PASSED!
+131071 ^ 137438953583 PASSED!
+131071 ^ 137438953711 PASSED!
+131071 ^ 137438953967 PASSED!
+131071 ^ 137438954479 PASSED!
+131071 ^ 137438955503 PASSED!
+131071 ^ 137438957551 PASSED!
+131071 ^ 137438961647 PASSED!
+131071 ^ 137438969839 PASSED!
+131071 ^ 137438986223 PASSED!
+131071 ^ 137439018991 PASSED!
+131071 ^ 137439084527 PASSED!
+131071 ^ 137439215599 PASSED!
+131071 ^ 137439477743 PASSED!
+131071 ^ 137440002031 PASSED!
+131071 ^ 137441050607 PASSED!
+131071 ^ 137443147759 PASSED!
+131071 ^ 137447342063 PASSED!
+131071 ^ 137455730671 PASSED!
+131071 ^ 137472507887 PASSED!
+131071 ^ 137506062319 PASSED!
+131071 ^ 137573171183 PASSED!
+131071 ^ 137707388911 PASSED!
+131071 ^ 137975824367 PASSED!
+131071 ^ 138512695279 PASSED!
+131071 ^ 139586437103 PASSED!
+131071 ^ 141733920751 PASSED!
+131071 ^ 146028888047 PASSED!
+262143 ^ 146028888048 PASSED!
+262143 ^ 146028888050 PASSED!
+262143 ^ 146028888054 PASSED!
+262143 ^ 146028888062 PASSED!
+262143 ^ 146028888078 PASSED!
+262143 ^ 146028888110 PASSED!
+262143 ^ 146028888174 PASSED!
+262143 ^ 146028888302 PASSED!
+262143 ^ 146028888558 PASSED!
+262143 ^ 146028889070 PASSED!
+262143 ^ 146028890094 PASSED!
+262143 ^ 146028892142 PASSED!
+262143 ^ 146028896238 PASSED!
+262143 ^ 146028904430 PASSED!
+262143 ^ 146028920814 PASSED!
+262143 ^ 146028953582 PASSED!
+262143 ^ 146029019118 PASSED!
+262143 ^ 146029150190 PASSED!
+262143 ^ 146029412334 PASSED!
+262143 ^ 146029936622 PASSED!
+262143 ^ 146030985198 PASSED!
+262143 ^ 146033082350 PASSED!
+262143 ^ 146037276654 PASSED!
+262143 ^ 146045665262 PASSED!
+262143 ^ 146062442478 PASSED!
+262143 ^ 146095996910 PASSED!
+262143 ^ 146163105774 PASSED!
+262143 ^ 146297323502 PASSED!
+262143 ^ 146565758958 PASSED!
+262143 ^ 147102629870 PASSED!
+262143 ^ 148176371694 PASSED!
+262143 ^ 150323855342 PASSED!
+262143 ^ 154618822638 PASSED!
+524287 ^ 154618822639 PASSED!
+524287 ^ 154618822641 PASSED!
+524287 ^ 154618822645 PASSED!
+524287 ^ 154618822653 PASSED!
+524287 ^ 154618822669 PASSED!
+524287 ^ 154618822701 PASSED!
+524287 ^ 154618822765 PASSED!
+524287 ^ 154618822893 PASSED!
+524287 ^ 154618823149 PASSED!
+524287 ^ 154618823661 PASSED!
+524287 ^ 154618824685 PASSED!
+524287 ^ 154618826733 PASSED!
+524287 ^ 154618830829 PASSED!
+524287 ^ 154618839021 PASSED!
+524287 ^ 154618855405 PASSED!
+524287 ^ 154618888173 PASSED!
+524287 ^ 154618953709 PASSED!
+524287 ^ 154619084781 PASSED!
+524287 ^ 154619346925 PASSED!
+524287 ^ 154619871213 PASSED!
+524287 ^ 154620919789 PASSED!
+524287 ^ 154623016941 PASSED!
+524287 ^ 154627211245 PASSED!
+524287 ^ 154635599853 PASSED!
+524287 ^ 154652377069 PASSED!
+524287 ^ 154685931501 PASSED!
+524287 ^ 154753040365 PASSED!
+524287 ^ 154887258093 PASSED!
+524287 ^ 155155693549 PASSED!
+524287 ^ 155692564461 PASSED!
+524287 ^ 156766306285 PASSED!
+524287 ^ 158913789933 PASSED!
+524287 ^ 163208757229 PASSED!
+1048575 ^ 163208757230 PASSED!
+1048575 ^ 163208757232 PASSED!
+1048575 ^ 163208757236 PASSED!
+1048575 ^ 163208757244 PASSED!
+1048575 ^ 163208757260 PASSED!
+1048575 ^ 163208757292 PASSED!
+1048575 ^ 163208757356 PASSED!
+1048575 ^ 163208757484 PASSED!
+1048575 ^ 163208757740 PASSED!
+1048575 ^ 163208758252 PASSED!
+1048575 ^ 163208759276 PASSED!
+1048575 ^ 163208761324 PASSED!
+1048575 ^ 163208765420 PASSED!
+1048575 ^ 163208773612 PASSED!
+1048575 ^ 163208789996 PASSED!
+1048575 ^ 163208822764 PASSED!
+1048575 ^ 163208888300 PASSED!
+1048575 ^ 163209019372 PASSED!
+1048575 ^ 163209281516 PASSED!
+1048575 ^ 163209805804 PASSED!
+1048575 ^ 163210854380 PASSED!
+1048575 ^ 163212951532 PASSED!
+1048575 ^ 163217145836 PASSED!
+1048575 ^ 163225534444 PASSED!
+1048575 ^ 163242311660 PASSED!
+1048575 ^ 163275866092 PASSED!
+1048575 ^ 163342974956 PASSED!
+1048575 ^ 163477192684 PASSED!
+1048575 ^ 163745628140 PASSED!
+1048575 ^ 164282499052 PASSED!
+1048575 ^ 165356240876 PASSED!
+1048575 ^ 167503724524 PASSED!
+1048575 ^ 171798691820 PASSED!
+2097151 ^ 171798691821 PASSED!
+2097151 ^ 171798691823 PASSED!
+2097151 ^ 171798691827 PASSED!
+2097151 ^ 171798691835 PASSED!
+2097151 ^ 171798691851 PASSED!
+2097151 ^ 171798691883 PASSED!
+2097151 ^ 171798691947 PASSED!
+2097151 ^ 171798692075 PASSED!
+2097151 ^ 171798692331 PASSED!
+2097151 ^ 171798692843 PASSED!
+2097151 ^ 171798693867 PASSED!
+2097151 ^ 171798695915 PASSED!
+2097151 ^ 171798700011 PASSED!
+2097151 ^ 171798708203 PASSED!
+2097151 ^ 171798724587 PASSED!
+2097151 ^ 171798757355 PASSED!
+2097151 ^ 171798822891 PASSED!
+2097151 ^ 171798953963 PASSED!
+2097151 ^ 171799216107 PASSED!
+2097151 ^ 171799740395 PASSED!
+2097151 ^ 171800788971 PASSED!
+2097151 ^ 171802886123 PASSED!
+2097151 ^ 171807080427 PASSED!
+2097151 ^ 171815469035 PASSED!
+2097151 ^ 171832246251 PASSED!
+2097151 ^ 171865800683 PASSED!
+2097151 ^ 171932909547 PASSED!
+2097151 ^ 172067127275 PASSED!
+2097151 ^ 172335562731 PASSED!
+2097151 ^ 172872433643 PASSED!
+2097151 ^ 173946175467 PASSED!
+2097151 ^ 176093659115 PASSED!
+2097151 ^ 180388626411 PASSED!
+4194303 ^ 180388626412 PASSED!
+4194303 ^ 180388626414 PASSED!
+4194303 ^ 180388626418 PASSED!
+4194303 ^ 180388626426 PASSED!
+4194303 ^ 180388626442 PASSED!
+4194303 ^ 180388626474 PASSED!
+4194303 ^ 180388626538 PASSED!
+4194303 ^ 180388626666 PASSED!
+4194303 ^ 180388626922 PASSED!
+4194303 ^ 180388627434 PASSED!
+4194303 ^ 180388628458 PASSED!
+4194303 ^ 180388630506 PASSED!
+4194303 ^ 180388634602 PASSED!
+4194303 ^ 180388642794 PASSED!
+4194303 ^ 180388659178 PASSED!
+4194303 ^ 180388691946 PASSED!
+4194303 ^ 180388757482 PASSED!
+4194303 ^ 180388888554 PASSED!
+4194303 ^ 180389150698 PASSED!
+4194303 ^ 180389674986 PASSED!
+4194303 ^ 180390723562 PASSED!
+4194303 ^ 180392820714 PASSED!
+4194303 ^ 180397015018 PASSED!
+4194303 ^ 180405403626 PASSED!
+4194303 ^ 180422180842 PASSED!
+4194303 ^ 180455735274 PASSED!
+4194303 ^ 180522844138 PASSED!
+4194303 ^ 180657061866 PASSED!
+4194303 ^ 180925497322 PASSED!
+4194303 ^ 181462368234 PASSED!
+4194303 ^ 182536110058 PASSED!
+4194303 ^ 184683593706 PASSED!
+4194303 ^ 188978561002 PASSED!
+8388607 ^ 188978561003 PASSED!
+8388607 ^ 188978561005 PASSED!
+8388607 ^ 188978561009 PASSED!
+8388607 ^ 188978561017 PASSED!
+8388607 ^ 188978561033 PASSED!
+8388607 ^ 188978561065 PASSED!
+8388607 ^ 188978561129 PASSED!
+8388607 ^ 188978561257 PASSED!
+8388607 ^ 188978561513 PASSED!
+8388607 ^ 188978562025 PASSED!
+8388607 ^ 188978563049 PASSED!
+8388607 ^ 188978565097 PASSED!
+8388607 ^ 188978569193 PASSED!
+8388607 ^ 188978577385 PASSED!
+8388607 ^ 188978593769 PASSED!
+8388607 ^ 188978626537 PASSED!
+8388607 ^ 188978692073 PASSED!
+8388607 ^ 188978823145 PASSED!
+8388607 ^ 188979085289 PASSED!
+8388607 ^ 188979609577 PASSED!
+8388607 ^ 188980658153 PASSED!
+8388607 ^ 188982755305 PASSED!
+8388607 ^ 188986949609 PASSED!
+8388607 ^ 188995338217 PASSED!
+8388607 ^ 189012115433 PASSED!
+8388607 ^ 189045669865 PASSED!
+8388607 ^ 189112778729 PASSED!
+8388607 ^ 189246996457 PASSED!
+8388607 ^ 189515431913 PASSED!
+8388607 ^ 190052302825 PASSED!
+8388607 ^ 191126044649 PASSED!
+8388607 ^ 193273528297 PASSED!
+8388607 ^ 197568495593 PASSED!
+16777215 ^ 197568495594 PASSED!
+16777215 ^ 197568495596 PASSED!
+16777215 ^ 197568495600 PASSED!
+16777215 ^ 197568495608 PASSED!
+16777215 ^ 197568495624 PASSED!
+16777215 ^ 197568495656 PASSED!
+16777215 ^ 197568495720 PASSED!
+16777215 ^ 197568495848 PASSED!
+16777215 ^ 197568496104 PASSED!
+16777215 ^ 197568496616 PASSED!
+16777215 ^ 197568497640 PASSED!
+16777215 ^ 197568499688 PASSED!
+16777215 ^ 197568503784 PASSED!
+16777215 ^ 197568511976 PASSED!
+16777215 ^ 197568528360 PASSED!
+16777215 ^ 197568561128 PASSED!
+16777215 ^ 197568626664 PASSED!
+16777215 ^ 197568757736 PASSED!
+16777215 ^ 197569019880 PASSED!
+16777215 ^ 197569544168 PASSED!
+16777215 ^ 197570592744 PASSED!
+16777215 ^ 197572689896 PASSED!
+16777215 ^ 197576884200 PASSED!
+16777215 ^ 197585272808 PASSED!
+16777215 ^ 197602050024 PASSED!
+16777215 ^ 197635604456 PASSED!
+16777215 ^ 197702713320 PASSED!
+16777215 ^ 197836931048 PASSED!
+16777215 ^ 198105366504 PASSED!
+16777215 ^ 198642237416 PASSED!
+16777215 ^ 199715979240 PASSED!
+16777215 ^ 201863462888 PASSED!
+16777215 ^ 206158430184 PASSED!
+33554431 ^ 206158430185 PASSED!
+33554431 ^ 206158430187 PASSED!
+33554431 ^ 206158430191 PASSED!
+33554431 ^ 206158430199 PASSED!
+33554431 ^ 206158430215 PASSED!
+33554431 ^ 206158430247 PASSED!
+33554431 ^ 206158430311 PASSED!
+33554431 ^ 206158430439 PASSED!
+33554431 ^ 206158430695 PASSED!
+33554431 ^ 206158431207 PASSED!
+33554431 ^ 206158432231 PASSED!
+33554431 ^ 206158434279 PASSED!
+33554431 ^ 206158438375 PASSED!
+33554431 ^ 206158446567 PASSED!
+33554431 ^ 206158462951 PASSED!
+33554431 ^ 206158495719 PASSED!
+33554431 ^ 206158561255 PASSED!
+33554431 ^ 206158692327 PASSED!
+33554431 ^ 206158954471 PASSED!
+33554431 ^ 206159478759 PASSED!
+33554431 ^ 206160527335 PASSED!
+33554431 ^ 206162624487 PASSED!
+33554431 ^ 206166818791 PASSED!
+33554431 ^ 206175207399 PASSED!
+33554431 ^ 206191984615 PASSED!
+33554431 ^ 206225539047 PASSED!
+33554431 ^ 206292647911 PASSED!
+33554431 ^ 206426865639 PASSED!
+33554431 ^ 206695301095 PASSED!
+33554431 ^ 207232172007 PASSED!
+33554431 ^ 208305913831 PASSED!
+33554431 ^ 210453397479 PASSED!
+33554431 ^ 214748364775 PASSED!
+67108863 ^ 214748364776 PASSED!
+67108863 ^ 214748364778 PASSED!
+67108863 ^ 214748364782 PASSED!
+67108863 ^ 214748364790 PASSED!
+67108863 ^ 214748364806 PASSED!
+67108863 ^ 214748364838 PASSED!
+67108863 ^ 214748364902 PASSED!
+67108863 ^ 214748365030 PASSED!
+67108863 ^ 214748365286 PASSED!
+67108863 ^ 214748365798 PASSED!
+67108863 ^ 214748366822 PASSED!
+67108863 ^ 214748368870 PASSED!
+67108863 ^ 214748372966 PASSED!
+67108863 ^ 214748381158 PASSED!
+67108863 ^ 214748397542 PASSED!
+67108863 ^ 214748430310 PASSED!
+67108863 ^ 214748495846 PASSED!
+67108863 ^ 214748626918 PASSED!
+67108863 ^ 214748889062 PASSED!
+67108863 ^ 214749413350 PASSED!
+67108863 ^ 214750461926 PASSED!
+67108863 ^ 214752559078 PASSED!
+67108863 ^ 214756753382 PASSED!
+67108863 ^ 214765141990 PASSED!
+67108863 ^ 214781919206 PASSED!
+67108863 ^ 214815473638 PASSED!
+67108863 ^ 214882582502 PASSED!
+67108863 ^ 215016800230 PASSED!
+67108863 ^ 215285235686 PASSED!
+67108863 ^ 215822106598 PASSED!
+67108863 ^ 216895848422 PASSED!
+67108863 ^ 219043332070 PASSED!
+67108863 ^ 223338299366 PASSED!
+134217727 ^ 223338299367 PASSED!
+134217727 ^ 223338299369 PASSED!
+134217727 ^ 223338299373 PASSED!
+134217727 ^ 223338299381 PASSED!
+134217727 ^ 223338299397 PASSED!
+134217727 ^ 223338299429 PASSED!
+134217727 ^ 223338299493 PASSED!
+134217727 ^ 223338299621 PASSED!
+134217727 ^ 223338299877 PASSED!
+134217727 ^ 223338300389 PASSED!
+134217727 ^ 223338301413 PASSED!
+134217727 ^ 223338303461 PASSED!
+134217727 ^ 223338307557 PASSED!
+134217727 ^ 223338315749 PASSED!
+134217727 ^ 223338332133 PASSED!
+134217727 ^ 223338364901 PASSED!
+134217727 ^ 223338430437 PASSED!
+134217727 ^ 223338561509 PASSED!
+134217727 ^ 223338823653 PASSED!
+134217727 ^ 223339347941 PASSED!
+134217727 ^ 223340396517 PASSED!
+134217727 ^ 223342493669 PASSED!
+134217727 ^ 223346687973 PASSED!
+134217727 ^ 223355076581 PASSED!
+134217727 ^ 223371853797 PASSED!
+134217727 ^ 223405408229 PASSED!
+134217727 ^ 223472517093 PASSED!
+134217727 ^ 223606734821 PASSED!
+134217727 ^ 223875170277 PASSED!
+134217727 ^ 224412041189 PASSED!
+134217727 ^ 225485783013 PASSED!
+134217727 ^ 227633266661 PASSED!
+134217727 ^ 231928233957 PASSED!
+268435455 ^ 231928233958 PASSED!
+268435455 ^ 231928233960 PASSED!
+268435455 ^ 231928233964 PASSED!
+268435455 ^ 231928233972 PASSED!
+268435455 ^ 231928233988 PASSED!
+268435455 ^ 231928234020 PASSED!
+268435455 ^ 231928234084 PASSED!
+268435455 ^ 231928234212 PASSED!
+268435455 ^ 231928234468 PASSED!
+268435455 ^ 231928234980 PASSED!
+268435455 ^ 231928236004 PASSED!
+268435455 ^ 231928238052 PASSED!
+268435455 ^ 231928242148 PASSED!
+268435455 ^ 231928250340 PASSED!
+268435455 ^ 231928266724 PASSED!
+268435455 ^ 231928299492 PASSED!
+268435455 ^ 231928365028 PASSED!
+268435455 ^ 231928496100 PASSED!
+268435455 ^ 231928758244 PASSED!
+268435455 ^ 231929282532 PASSED!
+268435455 ^ 231930331108 PASSED!
+268435455 ^ 231932428260 PASSED!
+268435455 ^ 231936622564 PASSED!
+268435455 ^ 231945011172 PASSED!
+268435455 ^ 231961788388 PASSED!
+268435455 ^ 231995342820 PASSED!
+268435455 ^ 232062451684 PASSED!
+268435455 ^ 232196669412 PASSED!
+268435455 ^ 232465104868 PASSED!
+268435455 ^ 233001975780 PASSED!
+268435455 ^ 234075717604 PASSED!
+268435455 ^ 236223201252 PASSED!
+268435455 ^ 240518168548 PASSED!
+536870911 ^ 240518168549 PASSED!
+536870911 ^ 240518168551 PASSED!
+536870911 ^ 240518168555 PASSED!
+536870911 ^ 240518168563 PASSED!
+536870911 ^ 240518168579 PASSED!
+536870911 ^ 240518168611 PASSED!
+536870911 ^ 240518168675 PASSED!
+536870911 ^ 240518168803 PASSED!
+536870911 ^ 240518169059 PASSED!
+536870911 ^ 240518169571 PASSED!
+536870911 ^ 240518170595 PASSED!
+536870911 ^ 240518172643 PASSED!
+536870911 ^ 240518176739 PASSED!
+536870911 ^ 240518184931 PASSED!
+536870911 ^ 240518201315 PASSED!
+536870911 ^ 240518234083 PASSED!
+536870911 ^ 240518299619 PASSED!
+536870911 ^ 240518430691 PASSED!
+536870911 ^ 240518692835 PASSED!
+536870911 ^ 240519217123 PASSED!
+536870911 ^ 240520265699 PASSED!
+536870911 ^ 240522362851 PASSED!
+536870911 ^ 240526557155 PASSED!
+536870911 ^ 240534945763 PASSED!
+536870911 ^ 240551722979 PASSED!
+536870911 ^ 240585277411 PASSED!
+536870911 ^ 240652386275 PASSED!
+536870911 ^ 240786604003 PASSED!
+536870911 ^ 241055039459 PASSED!
+536870911 ^ 241591910371 PASSED!
+536870911 ^ 242665652195 PASSED!
+536870911 ^ 244813135843 PASSED!
+536870911 ^ 249108103139 PASSED!
+1073741823 ^ 249108103140 PASSED!
+1073741823 ^ 249108103142 PASSED!
+1073741823 ^ 249108103146 PASSED!
+1073741823 ^ 249108103154 PASSED!
+1073741823 ^ 249108103170 PASSED!
+1073741823 ^ 249108103202 PASSED!
+1073741823 ^ 249108103266 PASSED!
+1073741823 ^ 249108103394 PASSED!
+1073741823 ^ 249108103650 PASSED!
+1073741823 ^ 249108104162 PASSED!
+1073741823 ^ 249108105186 PASSED!
+1073741823 ^ 249108107234 PASSED!
+1073741823 ^ 249108111330 PASSED!
+1073741823 ^ 249108119522 PASSED!
+1073741823 ^ 249108135906 PASSED!
+1073741823 ^ 249108168674 PASSED!
+1073741823 ^ 249108234210 PASSED!
+1073741823 ^ 249108365282 PASSED!
+1073741823 ^ 249108627426 PASSED!
+1073741823 ^ 249109151714 PASSED!
+1073741823 ^ 249110200290 PASSED!
+1073741823 ^ 249112297442 PASSED!
+1073741823 ^ 249116491746 PASSED!
+1073741823 ^ 249124880354 PASSED!
+1073741823 ^ 249141657570 PASSED!
+1073741823 ^ 249175212002 PASSED!
+1073741823 ^ 249242320866 PASSED!
+1073741823 ^ 249376538594 PASSED!
+1073741823 ^ 249644974050 PASSED!
+1073741823 ^ 250181844962 PASSED!
+1073741823 ^ 251255586786 PASSED!
+1073741823 ^ 253403070434 PASSED!
+1073741823 ^ 257698037730 PASSED!
+2147483647 ^ 257698037731 PASSED!
+2147483647 ^ 257698037733 PASSED!
+2147483647 ^ 257698037737 PASSED!
+2147483647 ^ 257698037745 PASSED!
+2147483647 ^ 257698037761 PASSED!
+2147483647 ^ 257698037793 PASSED!
+2147483647 ^ 257698037857 PASSED!
+2147483647 ^ 257698037985 PASSED!
+2147483647 ^ 257698038241 PASSED!
+2147483647 ^ 257698038753 PASSED!
+2147483647 ^ 257698039777 PASSED!
+2147483647 ^ 257698041825 PASSED!
+2147483647 ^ 257698045921 PASSED!
+2147483647 ^ 257698054113 PASSED!
+2147483647 ^ 257698070497 PASSED!
+2147483647 ^ 257698103265 PASSED!
+2147483647 ^ 257698168801 PASSED!
+2147483647 ^ 257698299873 PASSED!
+2147483647 ^ 257698562017 PASSED!
+2147483647 ^ 257699086305 PASSED!
+2147483647 ^ 257700134881 PASSED!
+2147483647 ^ 257702232033 PASSED!
+2147483647 ^ 257706426337 PASSED!
+2147483647 ^ 257714814945 PASSED!
+2147483647 ^ 257731592161 PASSED!
+2147483647 ^ 257765146593 PASSED!
+2147483647 ^ 257832255457 PASSED!
+2147483647 ^ 257966473185 PASSED!
+2147483647 ^ 258234908641 PASSED!
+2147483647 ^ 258771779553 PASSED!
+2147483647 ^ 259845521377 PASSED!
+2147483647 ^ 261993005025 PASSED!
+2147483647 ^ 266287972321 PASSED!
+4294967295 ^ 266287972322 PASSED!
+4294967295 ^ 266287972324 PASSED!
+4294967295 ^ 266287972328 PASSED!
+4294967295 ^ 266287972336 PASSED!
+4294967295 ^ 266287972352 PASSED!
+4294967295 ^ 266287972384 PASSED!
+4294967295 ^ 266287972448 PASSED!
+4294967295 ^ 266287972576 PASSED!
+4294967295 ^ 266287972832 PASSED!
+4294967295 ^ 266287973344 PASSED!
+4294967295 ^ 266287974368 PASSED!
+4294967295 ^ 266287976416 PASSED!
+4294967295 ^ 266287980512 PASSED!
+4294967295 ^ 266287988704 PASSED!
+4294967295 ^ 266288005088 PASSED!
+4294967295 ^ 266288037856 PASSED!
+4294967295 ^ 266288103392 PASSED!
+4294967295 ^ 266288234464 PASSED!
+4294967295 ^ 266288496608 PASSED!
+4294967295 ^ 266289020896 PASSED!
+4294967295 ^ 266290069472 PASSED!
+4294967295 ^ 266292166624 PASSED!
+4294967295 ^ 266296360928 PASSED!
+4294967295 ^ 266304749536 PASSED!
+4294967295 ^ 266321526752 PASSED!
+4294967295 ^ 266355081184 PASSED!
+4294967295 ^ 266422190048 PASSED!
+4294967295 ^ 266556407776 PASSED!
+4294967295 ^ 266824843232 PASSED!
+4294967295 ^ 267361714144 PASSED!
+4294967295 ^ 268435455968 PASSED!
+4294967295 ^ 270582939616 PASSED!
+4294967295 ^ 274877906912 PASSED!
+8589934591 ^ 274877906913 PASSED!
+8589934591 ^ 274877906915 PASSED!
+8589934591 ^ 274877906919 PASSED!
+8589934591 ^ 274877906927 PASSED!
+8589934591 ^ 274877906943 PASSED!
+8589934591 ^ 274877906975 PASSED!
+8589934591 ^ 274877907039 PASSED!
+8589934591 ^ 274877907167 PASSED!
+8589934591 ^ 274877907423 PASSED!
+8589934591 ^ 274877907935 PASSED!
+8589934591 ^ 274877908959 PASSED!
+8589934591 ^ 274877911007 PASSED!
+8589934591 ^ 274877915103 PASSED!
+8589934591 ^ 274877923295 PASSED!
+8589934591 ^ 274877939679 PASSED!
+8589934591 ^ 274877972447 PASSED!
+8589934591 ^ 274878037983 PASSED!
+8589934591 ^ 274878169055 PASSED!
+8589934591 ^ 274878431199 PASSED!
+8589934591 ^ 274878955487 PASSED!
+8589934591 ^ 274880004063 PASSED!
+8589934591 ^ 274882101215 PASSED!
+8589934591 ^ 274886295519 PASSED!
+8589934591 ^ 274894684127 PASSED!
+8589934591 ^ 274911461343 PASSED!
+8589934591 ^ 274945015775 PASSED!
+8589934591 ^ 275012124639 PASSED!
+8589934591 ^ 275146342367 PASSED!
+8589934591 ^ 275414777823 PASSED!
+8589934591 ^ 275951648735 PASSED!
+8589934591 ^ 277025390559 PASSED!
+8589934591 ^ 279172874207 PASSED!
+8589934591 ^ 283467841503 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_3/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_3/test.swf
new file mode 100644
index 000000000..36621d914
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_3/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_3/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_3/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_10_3/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_11/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_11/Test.as
new file mode 100644
index 000000000..4a787f1b2
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_11/Test.as
@@ -0,0 +1,84 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11.11";
+// var VERSION = "ECMA_1";
+ var BUGNUMBER="771111";
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ array[item++] = Assert.expectEq( "void 0 && void 0", undefined, void 0 && void 0 );
+ array[item++] = Assert.expectEq( "null && null", null, null && null );
+ array[item++] = Assert.expectEq( "0 && 0", 0, 0 && 0 );
+ array[item++] = Assert.expectEq( "1 && 1", 1, 1 && 1 );
+ array[item++] = Assert.expectEq( "-1 && -1", -1, -1 && -1 );
+ array[item++] = Assert.expectEq( "54 && 54", 54, 54 && 54 );
+ array[item++] = Assert.expectEq( "54 && 45", 45, 54 && 45 );
+ array[item++] = Assert.expectEq( "true && true", true, true && true );
+ array[item++] = Assert.expectEq( "true && false", false, true && false );
+ array[item++] = Assert.expectEq( "false && true", false, false && true );
+ array[item++] = Assert.expectEq( "false && false", false, false && false );
+ array[item++] = Assert.expectEq( "0 && true", 0, 0 && true );
+ array[item++] = Assert.expectEq( "true && 0", 0, true && 0 );
+ array[item++] = Assert.expectEq( "true && 1", 1, true && 1 );
+ array[item++] = Assert.expectEq( "1 && true", true, 1 && true );
+ array[item++] = Assert.expectEq( "-1 && true", true, -1 && true );
+ array[item++] = Assert.expectEq( "true && -1", -1, true && -1 );
+ array[item++] = Assert.expectEq( "true && 9", 9, true && 9 );
+ array[item++] = Assert.expectEq( "true && -9", -9, true && -9 );
+ array[item++] = Assert.expectEq( "9 && true", true, 9 && true );
+ array[item++] = Assert.expectEq( "true && Number.POSITIVE_INFINITY", Number.POSITIVE_INFINITY, true && Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY && true", true, Number.NEGATIVE_INFINITY && true );
+ array[item++] = Assert.expectEq( "true && 'str'", "str", true && "str" );
+ array[item++] = Assert.expectEq( "'str' && true", true, "str" && true);
+ array[item++] = Assert.expectEq( "false && 'str'", false, false && "str" );
+ array[item++] = Assert.expectEq( "'str' && false", false, "str" && false);
+ array[item++] = Assert.expectEq( "NaN && NaN", NaN, Number.NaN && Number.NaN );
+ array[item++] = Assert.expectEq( "NaN && 0", NaN, Number.NaN && 0 );
+ array[item++] = Assert.expectEq( "0 && NaN", 0, 0 && Number.NaN );
+ array[item++] = Assert.expectEq( "NaN && Infinity", NaN, Number.NaN && Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Infinity && NaN", NaN, Number.POSITIVE_INFINITY && Number.NaN );
+
+ array[item++] = Assert.expectEq( "void 0 || void 0", undefined, void 0 || void 0 );
+ array[item++] = Assert.expectEq( "null || null", null, null || null );
+ array[item++] = Assert.expectEq( "0 || 0", 0, 0 || 0 );
+ array[item++] = Assert.expectEq( "1 || 1", 1, 1 || 1 );
+ array[item++] = Assert.expectEq( "-1 || -1", -1, -1 || -1 );
+ array[item++] = Assert.expectEq( "54 || 54", 54, 54 || 54 );
+ array[item++] = Assert.expectEq( "54 || 45", 54, 54 || 45 );
+ array[item++] = Assert.expectEq( "true || true", true, true || true );
+ array[item++] = Assert.expectEq( "true || false", true, true || false );
+ array[item++] = Assert.expectEq( "false || true", true, false || true );
+ array[item++] = Assert.expectEq( "false || false", false, false ||false );
+ array[item++] = Assert.expectEq( "0 || true", true, 0 || true );
+ array[item++] = Assert.expectEq( "true || 0", true, true || 0 );
+ array[item++] = Assert.expectEq( "true || 1", true, true || 1 );
+ array[item++] = Assert.expectEq( "1 || true", 1, 1 || true );
+ array[item++] = Assert.expectEq( "-1 || true", -1, -1 || true );
+ array[item++] = Assert.expectEq( "true || -1", true, true || -1 );
+ array[item++] = Assert.expectEq( "true || 9", true, true || 9 );
+ array[item++] = Assert.expectEq( "true || -9", true, true || -9 );
+ array[item++] = Assert.expectEq( "9 || true", 9, 9 || true );
+ array[item++] = Assert.expectEq( "true || Number.POSITIVE_INFINITY", true, true || Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY || true", Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY ||true );
+ array[item++] = Assert.expectEq( "true || 'str'", true, true || "str" );
+ array[item++] = Assert.expectEq( "'str'|| true", "str", "str" || true);
+ array[item++] = Assert.expectEq( "false || 'str'", "str", false ||"str" );
+ array[item++] = Assert.expectEq( "'str' || false", "str", "str" || false);
+ array[item++] = Assert.expectEq( "NaN || NaN", NaN, Number.NaN || Number.NaN );
+ array[item++] = Assert.expectEq( "NaN || 0", 0, Number.NaN || 0 );
+ array[item++] = Assert.expectEq( "0 || NaN", NaN, 0 || Number.NaN );
+ array[item++] = Assert.expectEq( "NaN || Infinity", Infinity, Number.NaN ||Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Infinity || NaN", Infinity, Number.POSITIVE_INFINITY || Number.NaN );
+
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_11/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_11/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_11/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_11/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_11/output.txt
new file mode 100644
index 000000000..549149255
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_11/output.txt
@@ -0,0 +1,62 @@
+void 0 && void 0 PASSED!
+null && null PASSED!
+0 && 0 PASSED!
+1 && 1 PASSED!
+-1 && -1 PASSED!
+54 && 54 PASSED!
+54 && 45 PASSED!
+true && true PASSED!
+true && false PASSED!
+false && true PASSED!
+false && false PASSED!
+0 && true PASSED!
+true && 0 PASSED!
+true && 1 PASSED!
+1 && true PASSED!
+-1 && true PASSED!
+true && -1 PASSED!
+true && 9 PASSED!
+true && -9 PASSED!
+9 && true PASSED!
+true && Number.POSITIVE_INFINITY PASSED!
+Number.NEGATIVE_INFINITY && true PASSED!
+true && 'str' PASSED!
+'str' && true PASSED!
+false && 'str' PASSED!
+'str' && false PASSED!
+NaN && NaN PASSED!
+NaN && 0 PASSED!
+0 && NaN PASSED!
+NaN && Infinity PASSED!
+Infinity && NaN PASSED!
+void 0 || void 0 PASSED!
+null || null PASSED!
+0 || 0 PASSED!
+1 || 1 PASSED!
+-1 || -1 PASSED!
+54 || 54 PASSED!
+54 || 45 PASSED!
+true || true PASSED!
+true || false PASSED!
+false || true PASSED!
+false || false PASSED!
+0 || true PASSED!
+true || 0 PASSED!
+true || 1 PASSED!
+1 || true PASSED!
+-1 || true PASSED!
+true || -1 PASSED!
+true || 9 PASSED!
+true || -9 PASSED!
+9 || true PASSED!
+true || Number.POSITIVE_INFINITY PASSED!
+Number.NEGATIVE_INFINITY || true PASSED!
+true || 'str' PASSED!
+'str'|| true PASSED!
+false || 'str' PASSED!
+'str' || false PASSED!
+NaN || NaN PASSED!
+NaN || 0 PASSED!
+0 || NaN PASSED!
+NaN || Infinity PASSED!
+Infinity || NaN PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_11/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_11/test.swf
new file mode 100644
index 000000000..a4b7fd9e7
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_11/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_11/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_11/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_11/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_1/Test.as
new file mode 100644
index 000000000..3277b544c
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_1/Test.as
@@ -0,0 +1,29 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_12";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ array[item++] = Assert.expectEq( "true ? 'PASSED' : 'FAILED'", "PASSED", (true?"PASSED":"FAILED"));
+ array[item++] = Assert.expectEq( "false ? 'FAILED' : 'PASSED'", "PASSED", (false?"FAILED":"PASSED"));
+
+ array[item++] = Assert.expectEq( "1 ? 'PASSED' : 'FAILED'", "PASSED", (1?"PASSED":"FAILED"));
+ array[item++] = Assert.expectEq( "0 ? 'FAILED' : 'PASSED'", "PASSED", (0?"FAILED":"PASSED"));
+ array[item++] = Assert.expectEq( "-1 ? 'PASSED' : 'FAILED'", "PASSED", (-1?"PASSED":"FAILED"));
+
+ array[item++] = Assert.expectEq( "NaN ? 'FAILED' : 'PASSED'", "PASSED", (Number.NaN?"FAILED":"PASSED"));
+
+ array[item++] = Assert.expectEq( "var VAR = true ? , : 'FAILED'", "PASSED", (VAR = true ? "PASSED" : "FAILED") );
+
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_1/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_1/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_1/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_1/output.txt
new file mode 100644
index 000000000..f165b9894
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_1/output.txt
@@ -0,0 +1,7 @@
+true ? 'PASSED' : 'FAILED' PASSED!
+false ? 'FAILED' : 'PASSED' PASSED!
+1 ? 'PASSED' : 'FAILED' PASSED!
+0 ? 'FAILED' : 'PASSED' PASSED!
+-1 ? 'PASSED' : 'FAILED' PASSED!
+NaN ? 'FAILED' : 'PASSED' PASSED!
+var VAR = true ? , : 'FAILED' PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_1/test.swf
new file mode 100644
index 000000000..814cc173e
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_1/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_1/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_3/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_3/Test.as
new file mode 100644
index 000000000..81a0cbf0e
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_3/Test.as
@@ -0,0 +1,30 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+
+// var SECTION = "11_12_3";
+// var VERSION = "ECMA_1";
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // the following expression should NOT be an error in JS.
+ var MYVAR = true ? ('FAIL1', 'PASSED') : 'FAIL2';
+ array[item++] = Assert.expectEq(
+ "var MYVAR = true ? ('FAIL1', 'PASSED') : 'FAIL2'; MYVAR",
+ "PASSED",
+ MYVAR );
+
+ // get around potential parse time error by putting expression in an eval statement
+
+ //array[tc].actual = array[tc].actual;
+ return (array);
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_3/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_3/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_3/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_3/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_3/output.txt
new file mode 100644
index 000000000..67e39b8a6
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_3/output.txt
@@ -0,0 +1 @@
+var MYVAR = true ? ('FAIL1', 'PASSED') : 'FAIL2'; MYVAR PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_3/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_3/test.swf
new file mode 100644
index 000000000..e84c9f7ba
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_3/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_3/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_3/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_3/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_4/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_4/Test.as
new file mode 100644
index 000000000..5de6c6e1e
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_4/Test.as
@@ -0,0 +1,30 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+
+// var SECTION = "11_12_4";
+// var VERSION = "ECMA_1";
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // the following expression should NOT be an error in JS.
+ true ? MYVAR1 = 'PASSED' : MYVAR1 = 'FAILED'
+ array[item++] = Assert.expectEq(
+ "true ? MYVAR1 = 'PASSED' : MYVAR1 = 'FAILED'; MYVAR1",
+ "PASSED",
+ MYVAR1);
+
+ // get around potential parse time error by putting expression in an eval statement
+
+ //array[tc].actual = ( array[tc].actual );
+ return (array);
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_4/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_4/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_4/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_4/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_4/output.txt
new file mode 100644
index 000000000..8e678f32f
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_4/output.txt
@@ -0,0 +1 @@
+true ? MYVAR1 = 'PASSED' : MYVAR1 = 'FAILED'; MYVAR1 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_4/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_4/test.swf
new file mode 100644
index 000000000..0689c7eef
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_4/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_4/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_4/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_12_4/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13/Test.as
new file mode 100644
index 000000000..5e942fa92
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13/Test.as
@@ -0,0 +1,29 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11_12";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ array[item++] = Assert.expectEq( "true ? 'PASSED' : 'FAILED'", "PASSED", (true?"PASSED":"FAILED"));
+ array[item++] = Assert.expectEq( "false ? 'FAILED' : 'PASSED'", "PASSED", (false?"FAILED":"PASSED"));
+
+ array[item++] = Assert.expectEq( "1 ? 'PASSED' : 'FAILED'", "PASSED", (1?"PASSED":"FAILED"));
+ array[item++] = Assert.expectEq( "0 ? 'FAILED' : 'PASSED'", "PASSED", (0?"FAILED":"PASSED"));
+ array[item++] = Assert.expectEq( "-1 ? 'PASSED' : 'FAILED'", "PASSED", (-1?"PASSED":"FAILED"));
+
+ array[item++] = Assert.expectEq( "NaN ? 'FAILED' : 'PASSED'", "PASSED", (Number.NaN?"FAILED":"PASSED"));
+
+ array[item++] = Assert.expectEq( "var VAR = true ? , : 'FAILED'", "PASSED", (VAR = true ? "PASSED" : "FAILED") );
+
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13/output.txt
new file mode 100644
index 000000000..f165b9894
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13/output.txt
@@ -0,0 +1,7 @@
+true ? 'PASSED' : 'FAILED' PASSED!
+false ? 'FAILED' : 'PASSED' PASSED!
+1 ? 'PASSED' : 'FAILED' PASSED!
+0 ? 'FAILED' : 'PASSED' PASSED!
+-1 ? 'PASSED' : 'FAILED' PASSED!
+NaN ? 'FAILED' : 'PASSED' PASSED!
+var VAR = true ? , : 'FAILED' PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13/test.swf
new file mode 100644
index 000000000..1b710befc
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_1/Test.as
new file mode 100644
index 000000000..2b6e747f7
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_1/Test.as
@@ -0,0 +1,23 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11_13_1";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ array[item++] = Assert.expectEq( "SOMEVAR = true", true, SOMEVAR = true );
+
+
+ return ( array );
+}
+
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_1/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_1/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_1/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_1/output.txt
new file mode 100644
index 000000000..df6e9d7e5
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_1/output.txt
@@ -0,0 +1 @@
+SOMEVAR = true PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_1/test.swf
new file mode 100644
index 000000000..86a8f14b4
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_1/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_1/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_1/Test.as
new file mode 100644
index 000000000..f588dd582
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_1/Test.as
@@ -0,0 +1,93 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11_13_2_1";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases()
+{
+ var array = new Array();
+ var item = 0;
+
+ // NaN cases
+
+ VAR1 = Number.NaN; VAR2=1;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=1; VAR1 *= VAR2", Number.NaN, VAR1 *= VAR2 );
+ VAR1 = Number.NaN; VAR2=1; VAR1 *= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=1; VAR1 *= VAR2; VAR1", Number.NaN, VAR1 );
+
+ // number cases
+ VAR1 = 0; VAR2=1;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2=1; VAR1 *= VAR2", 0, VAR1 *= VAR2 );
+ VAR1 = 0; VAR2=1; VAR1 *= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2=1; VAR1 *= VAR2;VAR1", 0, VAR1 );
+ VAR1 = 0XFF; VAR2 = 0XA;
+ array[item++] = Assert.expectEq( "VAR1 = 0xFF; VAR2 = 0xA, VAR1 *= VAR2", 2550, VAR1 *= VAR2 );
+
+ // special multiplication cases
+ VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR1 *= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= Infinity; VAR1 *= VAR2", Number.NaN, VAR1 );
+ VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR1 *= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= Infinity; VAR1 *= VAR2", Number.NaN, VAR1 );
+ VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 *= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= -Infinity; VAR1 *= VAR2", Number.NaN, VAR1 );
+ VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 *= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= -Infinity; VAR1 *= VAR2", Number.NaN, VAR1 );
+ VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR2 *= VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= Infinity; VAR2 *= VAR1", Number.NaN, VAR2 );
+ VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR2 *= VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= Infinity; VAR2 *= VAR1", Number.NaN, VAR2 );
+ VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 *= VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= -Infinity; VAR2 *= VAR1", Number.NaN, VAR2 );
+ VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 *= VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= -Infinity; VAR2 *= VAR1", Number.NaN, VAR2 );
+ VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 *= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = Infinity; VAR2= Infinity; VAR1 *= VAR2", Number.POSITIVE_INFINITY, VAR1 );
+ VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 *= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = Infinity; VAR2= -Infinity; VAR1 *= VAR2", Number.NEGATIVE_INFINITY, VAR1 );
+ VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 *= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 =-Infinity; VAR2= Infinity; VAR1 *= VAR2", Number.NEGATIVE_INFINITY, VAR1 );
+ VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 *= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 =-Infinity; VAR2=-Infinity; VAR1 *= VAR2", Number.POSITIVE_INFINITY, VAR1 );
+
+ // string cases
+ VAR1 = 10; VAR2 = '255';
+ array[item++] = Assert.expectEq( "VAR1 = 10; VAR2 = '255', VAR1 *= VAR2", 2550, VAR1 *= VAR2 );
+ VAR1 = '255'; VAR2 = 10;
+ array[item++] = Assert.expectEq( "VAR1 = '255'; VAR2 = 10, VAR1 *= VAR2", 2550, VAR1 *= VAR2 );
+ VAR1 = 10; VAR2 = '0XFF';
+ array[item++] = Assert.expectEq( "VAR1 = 10; VAR2 = '0XFF', VAR1 *= VAR2", 2550, VAR1 *= VAR2 );
+ VAR1 = '0XFF'; VAR2 = 0XA;
+ array[item++] = Assert.expectEq( "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 *= VAR2", 2550, VAR1 *= VAR2 );
+ VAR1 = '10'; VAR2 = '255';
+ array[item++] = Assert.expectEq( "VAR1 = '10'; VAR2 = '255', VAR1 *= VAR2", 2550, VAR1 *= VAR2);
+ VAR1 = '10'; VAR2 = '0XFF';
+ array[item++] = Assert.expectEq( "VAR1 = '10'; VAR2 = '0XFF', VAR1 *= VAR2", 2550, VAR1 *= VAR2);
+ VAR1 = '0XFF'; VAR2 = 0XA;
+ array[item++] = Assert.expectEq( "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 *= VAR2", 2550, VAR1 *= VAR2);
+
+ // boolean cases
+ VAR1 = true; VAR2 = false;
+ array[item++] = Assert.expectEq( "VAR1 = true; VAR2 = false; VAR1 *= VAR2", 0, VAR1 *= VAR2 );
+ VAR1 = true; VAR2 = true;
+ array[item++] = Assert.expectEq( "VAR1 = true; VAR2 = true; VAR1 *= VAR2", 1, VAR1 *= VAR2);
+
+ // object cases
+ VAR1 = new Boolean(true); VAR2 = 10; VAR1 *= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = new Boolean(true); VAR2 = 10; VAR1 *= VAR2;VAR1", 10, VAR1 );
+ VAR1 = new Number(11); VAR2 = 10; VAR1 *= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = new Number(11); VAR2 = 10; VAR1 *= VAR2; VAR1", 110, VAR1);
+ VAR1 = new Number(11); VAR2 = new Number(10);
+ array[item++] = Assert.expectEq( "VAR1 = new Number(11); VAR2 = new Number(10); VAR1 *= VAR2", 110, VAR1 *= VAR2 );
+ VAR1 = String('15'); VAR2 = new String('0xF');
+ array[item++] = Assert.expectEq( "VAR1 = new String('15'); VAR2 = new String('0xF'); VAR1 *= VAR2", 225, VAR1 *= VAR2);
+
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_1/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_1/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_1/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_1/output.txt
new file mode 100644
index 000000000..a4946e7a7
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_1/output.txt
@@ -0,0 +1,30 @@
+VAR1 = NaN; VAR2=1; VAR1 *= VAR2 PASSED!
+VAR1 = NaN; VAR2=1; VAR1 *= VAR2; VAR1 PASSED!
+VAR1 = 0; VAR2=1; VAR1 *= VAR2 PASSED!
+VAR1 = 0; VAR2=1; VAR1 *= VAR2;VAR1 PASSED!
+VAR1 = 0xFF; VAR2 = 0xA, VAR1 *= VAR2 PASSED!
+VAR1 = 0; VAR2= Infinity; VAR1 *= VAR2 PASSED!
+VAR1 = -0; VAR2= Infinity; VAR1 *= VAR2 PASSED!
+VAR1 = -0; VAR2= -Infinity; VAR1 *= VAR2 PASSED!
+VAR1 = 0; VAR2= -Infinity; VAR1 *= VAR2 PASSED!
+VAR1 = 0; VAR2= Infinity; VAR2 *= VAR1 PASSED!
+VAR1 = -0; VAR2= Infinity; VAR2 *= VAR1 PASSED!
+VAR1 = -0; VAR2= -Infinity; VAR2 *= VAR1 PASSED!
+VAR1 = 0; VAR2= -Infinity; VAR2 *= VAR1 PASSED!
+VAR1 = Infinity; VAR2= Infinity; VAR1 *= VAR2 PASSED!
+VAR1 = Infinity; VAR2= -Infinity; VAR1 *= VAR2 PASSED!
+VAR1 =-Infinity; VAR2= Infinity; VAR1 *= VAR2 PASSED!
+VAR1 =-Infinity; VAR2=-Infinity; VAR1 *= VAR2 PASSED!
+VAR1 = 10; VAR2 = '255', VAR1 *= VAR2 PASSED!
+VAR1 = '255'; VAR2 = 10, VAR1 *= VAR2 PASSED!
+VAR1 = 10; VAR2 = '0XFF', VAR1 *= VAR2 PASSED!
+VAR1 = '0xFF'; VAR2 = 0xA, VAR1 *= VAR2 PASSED!
+VAR1 = '10'; VAR2 = '255', VAR1 *= VAR2 PASSED!
+VAR1 = '10'; VAR2 = '0XFF', VAR1 *= VAR2 PASSED!
+VAR1 = '0xFF'; VAR2 = 0xA, VAR1 *= VAR2 PASSED!
+VAR1 = true; VAR2 = false; VAR1 *= VAR2 PASSED!
+VAR1 = true; VAR2 = true; VAR1 *= VAR2 PASSED!
+VAR1 = new Boolean(true); VAR2 = 10; VAR1 *= VAR2;VAR1 PASSED!
+VAR1 = new Number(11); VAR2 = 10; VAR1 *= VAR2; VAR1 PASSED!
+VAR1 = new Number(11); VAR2 = new Number(10); VAR1 *= VAR2 PASSED!
+VAR1 = new String('15'); VAR2 = new String('0xF'); VAR1 *= VAR2 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_1/test.swf
new file mode 100644
index 000000000..ef9b4e1f4
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_1/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_1/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_2/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_2/Test.as
new file mode 100644
index 000000000..6011b7466
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_2/Test.as
@@ -0,0 +1,117 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_13_2_2";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // NaN cases
+ VAR1 = Number.NaN; VAR2=1;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=1; VAR1 /= VAR2", Number.NaN, VAR1 /= VAR2 );
+ VAR1 = Number.NaN; VAR2=1; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=1; VAR1 /= VAR2; VAR1", Number.NaN, VAR1 );
+ VAR1 = Number.NaN; VAR2=0;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=0; VAR1 /= VAR2", Number.NaN, VAR1 /= VAR2 );
+ VAR1 = Number.NaN; VAR2=0; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=0; VAR1 /= VAR2; VAR1", Number.NaN, VAR1 );
+ VAR1 = 0; VAR2=Number.NaN;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2=NaN; VAR1 /= VAR2", Number.NaN, VAR1 /= VAR2 );
+ VAR1 = 0; VAR2=Number.NaN; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2=NaN; VAR1 /= VAR2; VAR1", Number.NaN, VAR1 );
+
+ // number cases
+ VAR1 = 0; VAR2=1;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2=1; VAR1 /= VAR2", 0, VAR1 /= VAR2);
+ VAR1 = 0; VAR2=1; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2=1; VAR1 /= VAR2;VAR1", 0, VAR1);
+ VAR1 = 0XFF; VAR2 = 0XA;
+ array[item++] = Assert.expectEq( "VAR1 = 0xFF; VAR2 = 0xA, VAR1 /= VAR2", 25.5, VAR1 /= VAR2);
+
+ // special division cases
+ VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= Infinity; VAR1 /= VAR2", 0, VAR1);
+ VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= Infinity; VAR1 /= VAR2", 0, VAR1 );
+ VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= -Infinity; VAR1 /= VAR2", 0, VAR1);
+ VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= -Infinity; VAR1 /= VAR2", 0, VAR1);
+ VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR2 /= VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= Infinity; VAR2 /= VAR1", Number.POSITIVE_INFINITY, VAR2);
+ VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR2 /= VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= Infinity; VAR2 /= VAR1", Number.NEGATIVE_INFINITY, VAR2);
+ VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 /= VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= -Infinity; VAR2 /= VAR1", Number.POSITIVE_INFINITY, VAR2);
+ VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 /= VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= -Infinity; VAR2 /= VAR1", Number.NEGATIVE_INFINITY, VAR2);
+ VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = Infinity; VAR2= Infinity; VAR1 /= VAR2", Number.NaN, VAR1);
+ VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = Infinity; VAR2= -Infinity; VAR1 /= VAR2", Number.NaN, VAR1);
+ VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 =-Infinity; VAR2= Infinity; VAR1 /= VAR2", Number.NaN, VAR1);
+ VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 =-Infinity; VAR2=-Infinity; VAR1 /= VAR2", Number.NaN, VAR1);
+ VAR1 = 0; VAR2 = 0; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= 0; VAR1 /= VAR2", Number.NaN, VAR1);
+ VAR1 = 0; VAR2 = -0; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= -0; VAR1 /= VAR2", Number.NaN, VAR1);
+ VAR1 = -0; VAR2 = 0; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= 0; VAR1 /= VAR2", Number.NaN, VAR1);
+ VAR1 = -0; VAR2 = -0; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= -0; VAR1 /= VAR2", Number.NaN, VAR1);
+ VAR1 = 1; VAR2 = 0; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 1; VAR2= 0; VAR1 /= VAR2", Number.POSITIVE_INFINITY, VAR1 );
+ VAR1 = 1; VAR2 = -0; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 1; VAR2= -0; VAR1 /= VAR2", Number.NEGATIVE_INFINITY, VAR1);
+ VAR1 = -1; VAR2 = 0; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -1; VAR2= 0; VAR1 /= VAR2", Number.NEGATIVE_INFINITY, VAR1);
+ VAR1 = -1; VAR2 = -0; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -1; VAR2= -0; VAR1 /= VAR2", Number.POSITIVE_INFINITY, VAR1);
+
+ // string cases
+ VAR1 = 1000; VAR2 = '10', VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 1000; VAR2 = '10', VAR1 /= VAR2; VAR1", 100, VAR1);
+ VAR1 = '1000'; VAR2 = 10, VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = '1000'; VAR2 = 10, VAR1 /= VAR2; VAR1", 100, VAR1);
+/*
+ VAR1 = 10; VAR2 = '0XFF';
+ array[item++] = Assert.expectEq( "VAR1 = 10; VAR2 = '0XFF', VAR1 /= VAR2", 2550, VAR1 /= VAR2);
+ VAR1 = '0XFF'; VAR2 = 0XA;
+ array[item++] = Assert.expectEq( "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 /= VAR2", 2550, VAR1 /= VAR2);
+ VAR1 = '10'; VAR2 = '255';
+ array[item++] = Assert.expectEq( "VAR1 = '10'; VAR2 = '255', VAR1 /= VAR2", 2550, VAR1 /= VAR2);
+ VAR1 = '10'; VAR2 = '0XFF';
+ array[item++] = Assert.expectEq( "VAR1 = '10'; VAR2 = '0XFF', VAR1 /= VAR2", 2550, VAR1 /= VAR2);
+ VAR1 = '0XFF'; VAR2 = 0XA;
+ array[item++] = Assert.expectEq( "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 /= VAR2", 2550, VAR1 /= VAR2);
+
+ // boolean cases
+ VAR1 = true; VAR2 = false;
+ array[item++] = Assert.expectEq( "VAR1 = true; VAR2 = false; VAR1 /= VAR2", 0, VAR1 /= VAR2);
+ VAR1 = true; VAR2 = true;
+ array[item++] = Assert.expectEq( "VAR1 = true; VAR2 = true; VAR1 /= VAR2", 1, VAR1 /= VAR2);
+
+ // object cases
+ VAR1 = new Boolean(true); VAR2 = 10; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = new Boolean(true); VAR2 = 10; VAR1 /= VAR2;VAR1", 10, VAR1);
+ VAR1 = new Number(11); VAR2 = 10; VAR1 /= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = new Number(11); VAR2 = 10; VAR1 /= VAR2; VAR1", 110, VAR1);
+ VAR1 = new Number(11); VAR2 = new Number(10);
+ array[item++] = Assert.expectEq( "VAR1 = new Number(11); VAR2 = new Number(10); VAR1 /= VAR2", 110, VAR1 /= VAR2);
+ VAR1 = String('15'); VAR2 = new String('0xF');
+ array[item++] = Assert.expectEq( "VAR1 = new String('15'); VAR2 = new String('0xF'); VAR1 /= VAR2", 255, VAR1 /= VAR2);
+
+*/
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_2/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_2/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_2/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_2/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_2/output.txt
new file mode 100644
index 000000000..259cc998b
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_2/output.txt
@@ -0,0 +1,31 @@
+VAR1 = NaN; VAR2=1; VAR1 /= VAR2 PASSED!
+VAR1 = NaN; VAR2=1; VAR1 /= VAR2; VAR1 PASSED!
+VAR1 = NaN; VAR2=0; VAR1 /= VAR2 PASSED!
+VAR1 = NaN; VAR2=0; VAR1 /= VAR2; VAR1 PASSED!
+VAR1 = 0; VAR2=NaN; VAR1 /= VAR2 PASSED!
+VAR1 = 0; VAR2=NaN; VAR1 /= VAR2; VAR1 PASSED!
+VAR1 = 0; VAR2=1; VAR1 /= VAR2 PASSED!
+VAR1 = 0; VAR2=1; VAR1 /= VAR2;VAR1 PASSED!
+VAR1 = 0xFF; VAR2 = 0xA, VAR1 /= VAR2 PASSED!
+VAR1 = 0; VAR2= Infinity; VAR1 /= VAR2 PASSED!
+VAR1 = -0; VAR2= Infinity; VAR1 /= VAR2 PASSED!
+VAR1 = -0; VAR2= -Infinity; VAR1 /= VAR2 PASSED!
+VAR1 = 0; VAR2= -Infinity; VAR1 /= VAR2 PASSED!
+VAR1 = 0; VAR2= Infinity; VAR2 /= VAR1 PASSED!
+VAR1 = -0; VAR2= Infinity; VAR2 /= VAR1 PASSED!
+VAR1 = -0; VAR2= -Infinity; VAR2 /= VAR1 PASSED!
+VAR1 = 0; VAR2= -Infinity; VAR2 /= VAR1 PASSED!
+VAR1 = Infinity; VAR2= Infinity; VAR1 /= VAR2 PASSED!
+VAR1 = Infinity; VAR2= -Infinity; VAR1 /= VAR2 PASSED!
+VAR1 =-Infinity; VAR2= Infinity; VAR1 /= VAR2 PASSED!
+VAR1 =-Infinity; VAR2=-Infinity; VAR1 /= VAR2 PASSED!
+VAR1 = 0; VAR2= 0; VAR1 /= VAR2 PASSED!
+VAR1 = 0; VAR2= -0; VAR1 /= VAR2 PASSED!
+VAR1 = -0; VAR2= 0; VAR1 /= VAR2 PASSED!
+VAR1 = -0; VAR2= -0; VAR1 /= VAR2 PASSED!
+VAR1 = 1; VAR2= 0; VAR1 /= VAR2 PASSED!
+VAR1 = 1; VAR2= -0; VAR1 /= VAR2 PASSED!
+VAR1 = -1; VAR2= 0; VAR1 /= VAR2 PASSED!
+VAR1 = -1; VAR2= -0; VAR1 /= VAR2 PASSED!
+VAR1 = 1000; VAR2 = '10', VAR1 /= VAR2; VAR1 PASSED!
+VAR1 = '1000'; VAR2 = 10, VAR1 /= VAR2; VAR1 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_2/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_2/test.swf
new file mode 100644
index 000000000..d742533f1
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_2/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_2/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_2/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_2/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_3/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_3/Test.as
new file mode 100644
index 000000000..beecda381
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_3/Test.as
@@ -0,0 +1,137 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_13_2_3";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // If either operand is NaN, result is NaN
+ VAR1 = Number.NaN; VAR2=1;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=1; VAR1 %= VAR2", Number.NaN, VAR1 %= VAR2);
+ VAR1 = Number.NaN; VAR2=1; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=1; VAR1 %= VAR2; VAR1", Number.NaN, VAR1);
+ VAR1 = Number.NaN; VAR2=0;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=0; VAR1 %= VAR2", Number.NaN, VAR1 %= VAR2);
+ VAR1 = Number.NaN; VAR2=0; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=0; VAR1 %= VAR2; VAR1", Number.NaN, VAR1);
+ VAR1 = 0; VAR2=Number.NaN;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2=NaN; VAR1 %= VAR2", Number.NaN, VAR1 %= VAR2);
+ VAR1 = 0; VAR2=Number.NaN; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2=NaN; VAR1 %= VAR2; VAR1", Number.NaN, VAR1 );
+
+ // if the dividend is infinity or the divisor is zero or both, the result is NaN
+ VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = Infinity; VAR2= Infinity; VAR1 %= VAR2; VAR1", Number.NaN, VAR1 );
+ VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = Infinity; VAR2= -Infinity; VAR1 %= VAR2; VAR1", Number.NaN, VAR1 );
+ VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 =-Infinity; VAR2= Infinity; VAR1 %= VAR2; VAR1", Number.NaN, VAR1 );
+ VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 =-Infinity; VAR2=-Infinity; VAR1 %= VAR2; VAR1", Number.NaN, VAR1);
+ VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR2 %= VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= Infinity; VAR2 %= VAR1", Number.NaN, VAR2);
+ VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR2 %= VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= Infinity; VAR2 %= VAR1", Number.NaN, VAR2);
+ VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 %= VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= -Infinity; VAR2 %= VAR1", Number.NaN, VAR2);
+ VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 %= VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= -Infinity; VAR2 %= VAR1", Number.NaN, VAR2);
+ VAR1 = 1; VAR2 = Number.POSITIVE_INFINITY; VAR2 %= VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = 1; VAR2= Infinity; VAR2 %= VAR1", Number.NaN, VAR2);
+ VAR1 = -1; VAR2 = Number.POSITIVE_INFINITY; VAR2 %= VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = -1; VAR2= Infinity; VAR2 %= VAR1", Number.NaN, VAR2);
+ VAR1 = -1; VAR2 = Number.NEGATIVE_INFINITY; VAR2 %= VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = -1; VAR2= -Infinity; VAR2 %= VAR1", Number.NaN, VAR2);
+ VAR1 = 1; VAR2 = Number.NEGATIVE_INFINITY; VAR2 %= VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = 1; VAR2= -Infinity; VAR2 %= VAR1", Number.NaN, VAR2);
+ VAR1 = 0; VAR2 = 0; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= 0; VAR1 %= VAR2", Number.NaN, VAR1 );
+ VAR1 = 0; VAR2 = -0; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= -0; VAR1 %= VAR2", Number.NaN, VAR1 );
+ VAR1 = -0; VAR2 = 0; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= 0; VAR1 %= VAR2", Number.NaN, VAR1 );
+ VAR1 = -0; VAR2 = -0; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= -0; VAR1 %= VAR2", Number.NaN, VAR1 );
+ VAR1 = 1; VAR2 = 0; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 1; VAR2= 0; VAR1 %= VAR2", Number.NaN, VAR1 );
+ VAR1 = 1; VAR2 = -0; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 1; VAR2= -0; VAR1 %= VAR2", Number.NaN, VAR1 );
+ VAR1 = -1; VAR2 = 0; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -1; VAR2= 0; VAR1 %= VAR2", Number.NaN, VAR1 );
+ VAR1 = -1; VAR2 = -0; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -1; VAR2= -0; VAR1 %= VAR2", Number.NaN, VAR1 );
+
+ // if the dividend is finite and the divisor is an infinity, the result equals the dividend.
+ VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= Infinity; VAR1 %= VAR2;VAR1", 0, VAR1 );
+ VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= Infinity; VAR1 %= VAR2;VAR1", -0, VAR1 );
+ VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= -Infinity; VAR1 %= VAR2;VAR1", -0, VAR1 );
+ VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= -Infinity; VAR1 %= VAR2;VAR1", 0, VAR1 );
+ VAR1 = 1; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 1; VAR2= Infinity; VAR1 %= VAR2;VAR1", 1, VAR1 );
+ VAR1 = -1; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -1; VAR2= Infinity; VAR1 %= VAR2;VAR1", -1, VAR1 );
+ VAR1 = -1; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -1; VAR2= -Infinity; VAR1 %= VAR2;VAR1", -1, VAR1 );
+ VAR1 = 1; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 1; VAR2= -Infinity; VAR1 %= VAR2;VAR1", 1, VAR1 );
+
+ // if the dividend is a zero and the divisor is finite, the result is the same as the dividend
+ VAR1 = 0; VAR2 = 1; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= 1; VAR1 %= VAR2; VAR1", 0, VAR1 );
+ VAR1 = -0; VAR2 = 1; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= 1; VAR1 %= VAR2; VAR1", -0, VAR1 );
+ VAR1 = -0; VAR2 = -1; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= -1; VAR1 %= VAR2; VAR1", -0, VAR1 );
+ VAR1 = 0; VAR2 = -1; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= -1; VAR1 %= VAR2; VAR1", 0, VAR1 );
+
+ // string cases
+ VAR1 = 1000; VAR2 = '10', VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 1000; VAR2 = '10', VAR1 %= VAR2; VAR1", 0, VAR1 );
+ VAR1 = '1000'; VAR2 = 10, VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = '1000'; VAR2 = 10, VAR1 %= VAR2; VAR1", 0, VAR1 );
+/*
+ VAR1 = 10; VAR2 = '0XFF';
+ array[item++] = Assert.expectEq( "VAR1 = 10; VAR2 = '0XFF', VAR1 %= VAR2", 2550, VAR1 %= VAR2 );
+ VAR1 = '0XFF'; VAR2 = 0XA;
+ array[item++] = Assert.expectEq( "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 %= VAR2", 2550, VAR1 %= VAR2 );
+ VAR1 = '10'; VAR2 = '255';
+ array[item++] = Assert.expectEq( "VAR1 = '10'; VAR2 = '255', VAR1 %= VAR2", 2550, VAR1 %= VAR2 );
+ VAR1 = '10'; VAR2 = '0XFF';
+ array[item++] = Assert.expectEq( "VAR1 = '10'; VAR2 = '0XFF', VAR1 %= VAR2", 2550, VAR1 %= VAR2 );
+ VAR1 = '0XFF'; VAR2 = 0XA;
+ array[item++] = Assert.expectEq( "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 %= VAR2", 2550, VAR1 %= VAR2 );
+
+ // boolean cases
+ VAR1 = true; VAR2 = false;
+ array[item++] = Assert.expectEq( "VAR1 = true; VAR2 = false; VAR1 %= VAR2", 0, VAR1 %= VAR2 );
+ VAR1 = true; VAR2 = true;
+ array[item++] = Assert.expectEq( "VAR1 = true; VAR2 = true; VAR1 %= VAR2", 1, VAR1 %= VAR2 );
+
+ // object cases
+ VAR1 = new Boolean(true); VAR2 = 10; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = new Boolean(true); VAR2 = 10; VAR1 %= VAR2;VAR1", 10, VAR1 );
+ VAR1 = new Number(11); VAR2 = 10; VAR1 %= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = new Number(11); VAR2 = 10; VAR1 %= VAR2; VAR1", 110, VAR1 );
+ VAR1 = new Number(11); VAR2 = new Number(10);
+ array[item++] = Assert.expectEq( "VAR1 = new Number(11); VAR2 = new Number(10); VAR1 %= VAR2", 110, VAR1 %= VAR2 );
+ VAR1 = String('15'); VAR2 = new String('0xF');
+ array[item++] = Assert.expectEq( "VAR1 = new String('15'); VAR2 = new String('0xF'); VAR1 %= VAR2", 255, VAR1 %= VAR2 );
+
+*/
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_3/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_3/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_3/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_3/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_3/output.txt
new file mode 100644
index 000000000..6824477dc
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_3/output.txt
@@ -0,0 +1,40 @@
+VAR1 = NaN; VAR2=1; VAR1 %= VAR2 PASSED!
+VAR1 = NaN; VAR2=1; VAR1 %= VAR2; VAR1 PASSED!
+VAR1 = NaN; VAR2=0; VAR1 %= VAR2 PASSED!
+VAR1 = NaN; VAR2=0; VAR1 %= VAR2; VAR1 PASSED!
+VAR1 = 0; VAR2=NaN; VAR1 %= VAR2 PASSED!
+VAR1 = 0; VAR2=NaN; VAR1 %= VAR2; VAR1 PASSED!
+VAR1 = Infinity; VAR2= Infinity; VAR1 %= VAR2; VAR1 PASSED!
+VAR1 = Infinity; VAR2= -Infinity; VAR1 %= VAR2; VAR1 PASSED!
+VAR1 =-Infinity; VAR2= Infinity; VAR1 %= VAR2; VAR1 PASSED!
+VAR1 =-Infinity; VAR2=-Infinity; VAR1 %= VAR2; VAR1 PASSED!
+VAR1 = 0; VAR2= Infinity; VAR2 %= VAR1 PASSED!
+VAR1 = -0; VAR2= Infinity; VAR2 %= VAR1 PASSED!
+VAR1 = -0; VAR2= -Infinity; VAR2 %= VAR1 PASSED!
+VAR1 = 0; VAR2= -Infinity; VAR2 %= VAR1 PASSED!
+VAR1 = 1; VAR2= Infinity; VAR2 %= VAR1 PASSED!
+VAR1 = -1; VAR2= Infinity; VAR2 %= VAR1 PASSED!
+VAR1 = -1; VAR2= -Infinity; VAR2 %= VAR1 PASSED!
+VAR1 = 1; VAR2= -Infinity; VAR2 %= VAR1 PASSED!
+VAR1 = 0; VAR2= 0; VAR1 %= VAR2 PASSED!
+VAR1 = 0; VAR2= -0; VAR1 %= VAR2 PASSED!
+VAR1 = -0; VAR2= 0; VAR1 %= VAR2 PASSED!
+VAR1 = -0; VAR2= -0; VAR1 %= VAR2 PASSED!
+VAR1 = 1; VAR2= 0; VAR1 %= VAR2 PASSED!
+VAR1 = 1; VAR2= -0; VAR1 %= VAR2 PASSED!
+VAR1 = -1; VAR2= 0; VAR1 %= VAR2 PASSED!
+VAR1 = -1; VAR2= -0; VAR1 %= VAR2 PASSED!
+VAR1 = 0; VAR2= Infinity; VAR1 %= VAR2;VAR1 PASSED!
+VAR1 = -0; VAR2= Infinity; VAR1 %= VAR2;VAR1 PASSED!
+VAR1 = -0; VAR2= -Infinity; VAR1 %= VAR2;VAR1 PASSED!
+VAR1 = 0; VAR2= -Infinity; VAR1 %= VAR2;VAR1 PASSED!
+VAR1 = 1; VAR2= Infinity; VAR1 %= VAR2;VAR1 PASSED!
+VAR1 = -1; VAR2= Infinity; VAR1 %= VAR2;VAR1 PASSED!
+VAR1 = -1; VAR2= -Infinity; VAR1 %= VAR2;VAR1 PASSED!
+VAR1 = 1; VAR2= -Infinity; VAR1 %= VAR2;VAR1 PASSED!
+VAR1 = 0; VAR2= 1; VAR1 %= VAR2; VAR1 PASSED!
+VAR1 = -0; VAR2= 1; VAR1 %= VAR2; VAR1 PASSED!
+VAR1 = -0; VAR2= -1; VAR1 %= VAR2; VAR1 PASSED!
+VAR1 = 0; VAR2= -1; VAR1 %= VAR2; VAR1 PASSED!
+VAR1 = 1000; VAR2 = '10', VAR1 %= VAR2; VAR1 PASSED!
+VAR1 = '1000'; VAR2 = 10, VAR1 %= VAR2; VAR1 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_3/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_3/test.swf
new file mode 100644
index 000000000..e929a6558
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_3/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_3/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_3/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_3/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_4/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_4/Test.as
new file mode 100644
index 000000000..8a95b3f24
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_4/Test.as
@@ -0,0 +1,115 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11_13_2_4";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // If either operand is NaN, result is NaN
+ VAR1 = Number.NaN; VAR2=1;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=1; VAR1 += VAR2", Number.NaN, VAR1 += VAR2 );
+ VAR1 = Number.NaN; VAR2=1; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=1; VAR1 += VAR2; VAR1", Number.NaN, VAR1 );
+ VAR1 = Number.NaN; VAR2=0;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=0; VAR1 += VAR2", Number.NaN, VAR1 += VAR2 );
+ VAR1 = Number.NaN; VAR2=0; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=0; VAR1 += VAR2; VAR1", Number.NaN, VAR1 );
+ VAR1 = 0; VAR2=Number.NaN;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2=NaN; VAR1 += VAR2", Number.NaN, VAR1 += VAR2 );
+ VAR1 = 0; VAR2=Number.NaN; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2=NaN; VAR1 += VAR2; VAR1", Number.NaN, VAR1 );
+
+ // the sum of two Infinities the same sign is the infinity of that sign
+ // the sum of two Infinities of opposite sign is NaN
+ VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = Infinity; VAR2= Infinity; VAR1 += VAR2; VAR1", Number.POSITIVE_INFINITY, VAR1 );
+ VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = Infinity; VAR2= -Infinity; VAR1 += VAR2; VAR1", Number.NaN, VAR1 );
+ VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 =-Infinity; VAR2= Infinity; VAR1 += VAR2; VAR1", Number.NaN, VAR1 );
+ VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 =-Infinity; VAR2=-Infinity; VAR1 += VAR2; VAR1", Number.NEGATIVE_INFINITY, VAR1 );
+
+ // the sum of an infinity and a finite value is equal to the infinite operand
+ VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= Infinity; VAR1 += VAR2;VAR1", Number.POSITIVE_INFINITY, VAR1 );
+ VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= Infinity; VAR1 += VAR2;VAR1", Number.POSITIVE_INFINITY, VAR1 );
+ VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= -Infinity; VAR1 += VAR2;VAR1", Number.NEGATIVE_INFINITY, VAR1 );
+ VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= -Infinity; VAR1 += VAR2;VAR1", Number.NEGATIVE_INFINITY, VAR1 );
+
+ // the sum of two negative zeros is -0. the sum of two positive zeros, or of two zeros of opposite sign, is +0
+ VAR1 = 0; VAR2 = 0; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= 0; VAR1 += VAR2", 0, VAR1 );
+ VAR1 = 0; VAR2 = -0; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= -0; VAR1 += VAR2", 0, VAR1 );
+ VAR1 = -0; VAR2 = 0; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= 0; VAR1 += VAR2", 0, VAR1 );
+ VAR1 = -0; VAR2 = -0; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= -0; VAR1 += VAR2", -0, VAR1 );
+
+ // the sum of a zero and a nonzero finite value is eqal to the nonzero operand
+ VAR1 = 0; VAR2 = 1; VAR2 += VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= 1; VAR2 += VAR1; VAR2", 1, VAR2 );
+ VAR1 = -0; VAR2 = 1; VAR2 += VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= 1; VAR2 += VAR1; VAR2", 1, VAR2 );
+ VAR1 = -0; VAR2 = -1; VAR2 += VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= -1; VAR2 += VAR1; VAR2", -1, VAR2 );
+ VAR1 = 0; VAR2 = -1; VAR2 += VAR1;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= -1; VAR2 += VAR1; VAR2", -1, VAR2 );
+
+ // the sum of a zero and a nozero finite value is equal to the nonzero operand.
+ VAR1 = 0; VAR2=1;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2=1; VAR1 += VAR2", 1, VAR1 += VAR2 );
+ VAR1 = 0; VAR2=1; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2=1; VAR1 += VAR2;VAR1", 1, VAR1 );
+
+ // the sum of two nonzero finite values of the same magnitude and opposite sign is +0
+ VAR1 = Number.MAX_VALUE; VAR2= -Number.MAX_VALUE; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = Number.MAX_VALUE; VAR2= -Number.MAX_VALUE; VAR1 += VAR2; VAR1", 0, VAR1 );
+ VAR1 = Number.MIN_VALUE; VAR2= -Number.MIN_VALUE; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = Number.MIN_VALUE; VAR2= -Number.MIN_VALUE; VAR1 += VAR2; VAR1", 0, VAR1 );
+
+/*
+ VAR1 = 10; VAR2 = '0XFF';
+ array[item++] = Assert.expectEq( "VAR1 = 10; VAR2 = '0XFF', VAR1 += VAR2", 2550, VAR1 += VAR2 );
+ VAR1 = '0XFF'; VAR2 = 0XA;
+ array[item++] = Assert.expectEq( "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 += VAR2", 2550, VAR1 += VAR2 );
+ VAR1 = '10'; VAR2 = '255';
+ array[item++] = Assert.expectEq( "VAR1 = '10'; VAR2 = '255', VAR1 += VAR2", 2550, VAR1 += VAR2 );
+ VAR1 = '10'; VAR2 = '0XFF';
+ array[item++] = Assert.expectEq( "VAR1 = '10'; VAR2 = '0XFF', VAR1 += VAR2", 2550, VAR1 += VAR2 );
+ VAR1 = '0XFF'; VAR2 = 0XA;
+ array[item++] = Assert.expectEq( "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 += VAR2", 2550, VAR1 += VAR2 );
+
+ // boolean cases
+ VAR1 = true; VAR2 = false;
+ array[item++] = Assert.expectEq( "VAR1 = true; VAR2 = false; VAR1 += VAR2", 0, VAR1 += VAR2 );
+ VAR1 = true; VAR2 = true;
+ array[item++] = Assert.expectEq( "VAR1 = true; VAR2 = true; VAR1 += VAR2", 1, VAR1 += VAR2 );
+
+ // object cases
+ VAR1 = new Boolean(true); VAR2 = 10; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = new Boolean(true); VAR2 = 10; VAR1 += VAR2;VAR1", 10, VAR1 );
+ VAR1 = new Number(11); VAR2 = 10; VAR1 += VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = new Number(11); VAR2 = 10; VAR1 += VAR2; VAR1", 110, VAR1 );
+ VAR1 = new Number(11); VAR2 = new Number(10);
+ array[item++] = Assert.expectEq( "VAR1 = new Number(11); VAR2 = new Number(10); VAR1 += VAR2", 110, VAR1 += VAR2 );
+ VAR1 = String('15'); VAR2 = new String('0xF');
+ array[item++] = Assert.expectEq( "VAR1 = new String('15'); VAR2 = new String('0xF'); VAR1 += VAR2", 255, VAR1 += VAR2 );
+
+*/
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_4/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_4/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_4/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_4/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_4/output.txt
new file mode 100644
index 000000000..09845d4fe
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_4/output.txt
@@ -0,0 +1,26 @@
+VAR1 = NaN; VAR2=1; VAR1 += VAR2 PASSED!
+VAR1 = NaN; VAR2=1; VAR1 += VAR2; VAR1 PASSED!
+VAR1 = NaN; VAR2=0; VAR1 += VAR2 PASSED!
+VAR1 = NaN; VAR2=0; VAR1 += VAR2; VAR1 PASSED!
+VAR1 = 0; VAR2=NaN; VAR1 += VAR2 PASSED!
+VAR1 = 0; VAR2=NaN; VAR1 += VAR2; VAR1 PASSED!
+VAR1 = Infinity; VAR2= Infinity; VAR1 += VAR2; VAR1 PASSED!
+VAR1 = Infinity; VAR2= -Infinity; VAR1 += VAR2; VAR1 PASSED!
+VAR1 =-Infinity; VAR2= Infinity; VAR1 += VAR2; VAR1 PASSED!
+VAR1 =-Infinity; VAR2=-Infinity; VAR1 += VAR2; VAR1 PASSED!
+VAR1 = 0; VAR2= Infinity; VAR1 += VAR2;VAR1 PASSED!
+VAR1 = -0; VAR2= Infinity; VAR1 += VAR2;VAR1 PASSED!
+VAR1 = -0; VAR2= -Infinity; VAR1 += VAR2;VAR1 PASSED!
+VAR1 = 0; VAR2= -Infinity; VAR1 += VAR2;VAR1 PASSED!
+VAR1 = 0; VAR2= 0; VAR1 += VAR2 PASSED!
+VAR1 = 0; VAR2= -0; VAR1 += VAR2 PASSED!
+VAR1 = -0; VAR2= 0; VAR1 += VAR2 PASSED!
+VAR1 = -0; VAR2= -0; VAR1 += VAR2 PASSED!
+VAR1 = 0; VAR2= 1; VAR2 += VAR1; VAR2 PASSED!
+VAR1 = -0; VAR2= 1; VAR2 += VAR1; VAR2 PASSED!
+VAR1 = -0; VAR2= -1; VAR2 += VAR1; VAR2 PASSED!
+VAR1 = 0; VAR2= -1; VAR2 += VAR1; VAR2 PASSED!
+VAR1 = 0; VAR2=1; VAR1 += VAR2 PASSED!
+VAR1 = 0; VAR2=1; VAR1 += VAR2;VAR1 PASSED!
+VAR1 = Number.MAX_VALUE; VAR2= -Number.MAX_VALUE; VAR1 += VAR2; VAR1 PASSED!
+VAR1 = Number.MIN_VALUE; VAR2= -Number.MIN_VALUE; VAR1 += VAR2; VAR1 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_4/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_4/test.swf
new file mode 100644
index 000000000..d3d8b9270
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_4/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_4/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_4/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_4/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_5/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_5/Test.as
new file mode 100644
index 000000000..d102f4797
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_5/Test.as
@@ -0,0 +1,117 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11_13_2_5";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // If either operand is NaN, result is NaN
+ VAR1 = Number.NaN; VAR2=1;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=1; VAR1 -= VAR2", Number.NaN, VAR1 -= VAR2 );
+ VAR1 = Number.NaN; VAR2=1; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=1; VAR1 -= VAR2; VAR1", Number.NaN, VAR1 );
+ VAR1 = Number.NaN; VAR2=0;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=0; VAR1 -= VAR2", Number.NaN, VAR1 -= VAR2 );
+ VAR1 = Number.NaN; VAR2=0; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = NaN; VAR2=0; VAR1 -= VAR2; VAR1", Number.NaN, VAR1 );
+ VAR1 = 0; VAR2=Number.NaN;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2=NaN; VAR1 -= VAR2", Number.NaN, VAR1 -= VAR2 );
+ VAR1 = 0; VAR2=Number.NaN; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2=NaN; VAR1 -= VAR2; VAR1", Number.NaN, VAR1 );
+
+ // the sum of two Infinities the same sign is the infinity of that sign
+ // the sum of two Infinities of opposite sign is NaN
+ VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = Infinity; VAR2= Infinity; VAR1 -= VAR2; VAR1", Number.NaN, VAR1 );
+ VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = Infinity; VAR2= -Infinity; VAR1 -= VAR2; VAR1", Number.POSITIVE_INFINITY, VAR1 );
+ VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 =-Infinity; VAR2= Infinity; VAR1 -= VAR2; VAR1", Number.NEGATIVE_INFINITY, VAR1 );
+ VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 =-Infinity; VAR2=-Infinity; VAR1 -= VAR2; VAR1", Number.NaN, VAR1 );
+
+ // the sum of an infinity and a finite value is equal to the infinite operand
+ VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= Infinity; VAR1 -= VAR2;VAR1", Number.NEGATIVE_INFINITY, VAR1 );
+ VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= Infinity; VAR1 -= VAR2;VAR1", Number.NEGATIVE_INFINITY, VAR1 );
+ VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= -Infinity; VAR1 -= VAR2;VAR1", Number.POSITIVE_INFINITY,VAR1 );
+ VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= -Infinity; VAR1 -= VAR2;VAR1", Number.POSITIVE_INFINITY, VAR1 );
+
+ // the sum of two negative zeros is -0. the sum of two positive zeros, or of two zeros of opposite sign, is +0
+ VAR1 = 0; VAR2 = 0; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= -0; VAR1 -= VAR2", 0, VAR1 );
+ VAR1 = 0; VAR2 = -0; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= 0; VAR1 -= VAR2", 0, VAR1 );
+ VAR1 = -0; VAR2 = 0; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= -0; VAR1 -= VAR2", 0, VAR1 );
+ VAR1 = -0; VAR2 = -0; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= 0; VAR1 -= VAR2", -0, VAR1 );
+
+ // the sum of a zero and a nonzero finite value is eqal to the nonzero operand
+ VAR1 = 0; VAR2 = -1; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= -1; VAR1 -= VAR2; VAR1", 1, VAR1 );
+ VAR1 = -0; VAR2 = -1; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= -1; VAR1 -= VAR2; VAR1", 1, VAR1 );
+ VAR1 = -0; VAR2 = 1; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = -0; VAR2= 1; VAR1 -= VAR2; VAR1", -1, VAR1 );
+ VAR1 = 0; VAR2 = 1; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2= 1; VAR1 -= VAR2; VAR1", -1, VAR1 );
+
+ // the sum of a zero and a nozero finite value is equal to the nonzero operand.
+ VAR1 = 0; VAR2=-1; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2=-1; VAR1 -= VAR2", 1, VAR1 );
+ VAR1 = 0; VAR2=-1; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = 0; VAR2=-1; VAR1 -= VAR2;VAR1", 1, VAR1 );
+
+ // the sum of two nonzero finite values of the same magnitude and opposite sign is +0
+ VAR1 = Number.MAX_VALUE; VAR2= Number.MAX_VALUE; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = Number.MAX_VALUE; VAR2= Number.MAX_VALUE; VAR1 -= VAR2; VAR1", 0, VAR1 );
+ VAR1 = Number.MIN_VALUE; VAR2= Number.MIN_VALUE; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = Number.MIN_VALUE; VAR2= Number.MIN_VALUE; VAR1 -= VAR2; VAR1", 0, VAR1 );
+
+
+/*
+ VAR1 = 10; VAR2 = '0XFF';
+ array[item++] = Assert.expectEq( "VAR1 = 10; VAR2 = '0XFF', VAR1 -= VAR2", 2550, VAR1 -= VAR2 );
+ VAR1 = '0XFF'; VAR2 = 0XA;
+ array[item++] = Assert.expectEq( "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 -= VAR2", 2550, VAR1 -= VAR2 );
+ VAR1 = '10'; VAR2 = '255';
+ array[item++] = Assert.expectEq( "VAR1 = '10'; VAR2 = '255', VAR1 -= VAR2", 2550, VAR1 -= VAR2 );
+ VAR1 = '10'; VAR2 = '0XFF';
+ array[item++] = new TestCas( SECTION, "VAR1 = '10'; VAR2 = '0XFF', VAR1 -= VAR2", 2550, VAR1 -= VAR2 );
+ VAR1 = '0XFF'; VAR2 = 0XA;
+ array[item++] = Assert.expectEq( "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 -= VAR2", 2550, VAR1 -= VAR2 );
+
+ // boolean cases
+ VAR1 = true; VAR2 = false;
+ array[item++] = Assert.expectEq( "VAR1 = true; VAR2 = false; VAR1 -= VAR2", 0, VAR1 -= VAR2 );
+ VAR1 = true; VAR2 = true;
+ array[item++] = Assert.expectEq( "VAR1 = true; VAR2 = true; VAR1 -= VAR2", 1, VAR1 -= VAR2 );
+
+ // object cases
+ VAR1 = new Boolean(true); VAR2 = 10; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = new Boolean(true); VAR2 = 10; VAR1 -= VAR2;VAR1", 10, VAR1 );
+ VAR1 = new Number(11); VAR2 = 10; VAR1 -= VAR2;
+ array[item++] = Assert.expectEq( "VAR1 = new Number(11); VAR2 = 10; VAR1 -= VAR2; VAR1", 110, VAR1 );
+ VAR1 = new Number(11); VAR2 = new Number(10);
+ array[item++] = Assert.expectEq( "VAR1 = new Number(11); VAR2 = new Number(10); VAR1 -= VAR2", 110, VAR1 -= VAR2 );
+ VAR1 = String('15'); VAR2 = new String('0xF');
+ array[item++] = Assert.expectEq( "VAR1 = new String('15'); VAR2 = new String('0xF'); VAR1 -= VAR2", 255, VAR1 -= VAR2 );
+
+*/
+
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_5/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_5/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_5/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_5/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_5/output.txt
new file mode 100644
index 000000000..f4a683123
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_5/output.txt
@@ -0,0 +1,26 @@
+VAR1 = NaN; VAR2=1; VAR1 -= VAR2 PASSED!
+VAR1 = NaN; VAR2=1; VAR1 -= VAR2; VAR1 PASSED!
+VAR1 = NaN; VAR2=0; VAR1 -= VAR2 PASSED!
+VAR1 = NaN; VAR2=0; VAR1 -= VAR2; VAR1 PASSED!
+VAR1 = 0; VAR2=NaN; VAR1 -= VAR2 PASSED!
+VAR1 = 0; VAR2=NaN; VAR1 -= VAR2; VAR1 PASSED!
+VAR1 = Infinity; VAR2= Infinity; VAR1 -= VAR2; VAR1 PASSED!
+VAR1 = Infinity; VAR2= -Infinity; VAR1 -= VAR2; VAR1 PASSED!
+VAR1 =-Infinity; VAR2= Infinity; VAR1 -= VAR2; VAR1 PASSED!
+VAR1 =-Infinity; VAR2=-Infinity; VAR1 -= VAR2; VAR1 PASSED!
+VAR1 = 0; VAR2= Infinity; VAR1 -= VAR2;VAR1 PASSED!
+VAR1 = -0; VAR2= Infinity; VAR1 -= VAR2;VAR1 PASSED!
+VAR1 = 0; VAR2= -Infinity; VAR1 -= VAR2;VAR1 PASSED!
+VAR1 = -0; VAR2= -Infinity; VAR1 -= VAR2;VAR1 PASSED!
+VAR1 = 0; VAR2= -0; VAR1 -= VAR2 PASSED!
+VAR1 = 0; VAR2= 0; VAR1 -= VAR2 PASSED!
+VAR1 = -0; VAR2= -0; VAR1 -= VAR2 PASSED!
+VAR1 = -0; VAR2= 0; VAR1 -= VAR2 PASSED!
+VAR1 = 0; VAR2= -1; VAR1 -= VAR2; VAR1 PASSED!
+VAR1 = -0; VAR2= -1; VAR1 -= VAR2; VAR1 PASSED!
+VAR1 = -0; VAR2= 1; VAR1 -= VAR2; VAR1 PASSED!
+VAR1 = 0; VAR2= 1; VAR1 -= VAR2; VAR1 PASSED!
+VAR1 = 0; VAR2=-1; VAR1 -= VAR2 PASSED!
+VAR1 = 0; VAR2=-1; VAR1 -= VAR2;VAR1 PASSED!
+VAR1 = Number.MAX_VALUE; VAR2= Number.MAX_VALUE; VAR1 -= VAR2; VAR1 PASSED!
+VAR1 = Number.MIN_VALUE; VAR2= Number.MIN_VALUE; VAR1 -= VAR2; VAR1 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_5/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_5/test.swf
new file mode 100644
index 000000000..c9262e071
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_5/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_5/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_5/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_13_2_5/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_14_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_14_1/Test.as
new file mode 100644
index 000000000..f6d182fbf
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_14_1/Test.as
@@ -0,0 +1,22 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_14_1";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ array[item++] = Assert.expectEq( "true, false", false, (true, false) );
+ array[item++] = Assert.expectEq( "VAR1=true, VAR2=false", false, (VAR1=true, VAR2=false) );
+ array[item++] = Assert.expectEq( "VAR1=true, VAR2=false;VAR1", true, (VAR1=true, VAR2=false, VAR1) );
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_14_1/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_14_1/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_14_1/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_14_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_14_1/output.txt
new file mode 100644
index 000000000..759e69b59
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_14_1/output.txt
@@ -0,0 +1,3 @@
+true, false PASSED!
+VAR1=true, VAR2=false PASSED!
+VAR1=true, VAR2=false;VAR1 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_14_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_14_1/test.swf
new file mode 100644
index 000000000..8d3032187
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_14_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_14_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_14_1/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_14_1/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_1/Test.as
new file mode 100644
index 000000000..248adeb1e
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_1/Test.as
@@ -0,0 +1,77 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11.1.1";
+// var VERSION = "ECMA_1";
+
+
+ var testcases = getTestCases();
+
+function getTestCases(){
+ var array = new Array();
+ var item = 0;
+
+ var GLOBAL_OBJECT = this.toString();
+
+ // this in global code should return the global object.
+
+ array[item++] = Assert.expectEq(
+ "Global Code: this.toString()",
+ GLOBAL_OBJECT,
+ this.toString() );
+
+ // this in anonymous code called as a function should return the global object.
+
+ // will work in spidermonkey but will fail in FP7, no compiler error
+ var MYFUNC = function(){return this.toString()}
+ array[item++] = Assert.expectEq(
+ "Anonymous Code: var MYFUNC = new Function('return this.toString()'); MYFUNC()",
+ GLOBAL_OBJECT,
+ MYFUNC() );
+
+ // thisin anonymous code called as a function should return that function's activation object
+ var MYFUNC = function(){return this.toString();}
+
+ array[item++] = Assert.expectEq(
+ "Anonymous Code: var MYFUNC = function(){return this.toString;}",
+ GLOBAL_OBJECT,
+ (MYFUNC()).toString() );
+
+ // this in anonymous code called as a constructor should return the object
+ var MYFUNC = function(){this.THIS = this}
+ array[item++] = Assert.expectEq(
+ "Anonymous Code: var MYFUNC = new Function('this.THIS = this'); ((new MYFUNC()).THIS).toString()",
+ "[object Object]",
+ ((new MYFUNC()).THIS).toString() );
+
+ var MYFUNC = function(){this.THIS = this}
+ var FUN1 = new MYFUNC();
+ array[item++] = Assert.expectEq(
+ "Anonymous Code: var MYFUNC = new Function('this.THIS = this'); var FUN1 = new MYFUNC(); FUN1.THIS == FUN1",
+ true,
+ FUN1.THIS == FUN1 );
+
+ // this in function code called as a function should return the global object.
+ array[item++] = Assert.expectEq(
+ "Function Code: ReturnThis()",
+ GLOBAL_OBJECT,
+ ReturnThis() );
+
+ // this in function code called as a contructor should return the object.
+ var MYOBJECT = new ReturnThis();
+ array[item++] = Assert.expectEq(
+ "var MYOBJECT = new ReturnThis(); MYOBJECT.toString()",
+ "[object Object]",
+ MYOBJECT.toString() );
+ return array;
+}
+
+
+function ReturnThis() {
+ return this.toString();
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_1/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_1/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_1/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_1/output.txt
new file mode 100644
index 000000000..54af364d1
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_1/output.txt
@@ -0,0 +1,7 @@
+Global Code: this.toString() PASSED!
+Anonymous Code: var MYFUNC = new Function('return this.toString()'); MYFUNC() PASSED!
+Anonymous Code: var MYFUNC = function(){return this.toString;} PASSED!
+Anonymous Code: var MYFUNC = new Function('this.THIS = this'); ((new MYFUNC()).THIS).toString() PASSED!
+Anonymous Code: var MYFUNC = new Function('this.THIS = this'); var FUN1 = new MYFUNC(); FUN1.THIS == FUN1 PASSED!
+Function Code: ReturnThis() PASSED!
+var MYOBJECT = new ReturnThis(); MYOBJECT.toString() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_1/test.swf
new file mode 100644
index 000000000..74998427b
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_1/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_1/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_4/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_4/Test.as
new file mode 100644
index 000000000..fea4f5dab
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_4/Test.as
@@ -0,0 +1,201 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+
+// var SECTION = "11.1.4";
+// var VERSION = "ECMA_1";
+// var TITLE = "Array Initialiser";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ Array_One = []
+
+
+
+ array[item++] = Assert.expectEq(
+ "typeof Array_One",
+ "object",
+ typeof Array_One );
+
+ array[item++] = Assert.expectEq(
+ "Array_One=[]; Array_One.getClass = Object.prototype.toString; Array_One.getClass()",
+ "[object Array]",
+ (Array_One.getClass = Object.prototype.toString, Array_One.getClass() ) );
+
+ array[item++] = Assert.expectEq(
+ "Array_One = []; Array_One.toString == Array.prototype.toString",
+ true,
+ (Array_One.toString == Array.prototype.toString ) );
+
+ array[item++] = Assert.expectEq(
+ "Array_One.length",
+ 0,
+ Array_One.length );
+
+ Array_Two = [1,2,3]
+
+
+ array[item++] = Assert.expectEq(
+ "Array_Two",
+ "1,2,3",
+ Array_Two+"" );
+
+
+
+ array[item++] = Assert.expectEq(
+ "typeof Array_Two",
+ "object",
+ typeof Array_Two);
+
+ array[item++] = Assert.expectEq(
+ "Array_Two=[1,2,3]; arr.getClass = Object.prototype.toString; arr.getClass()",
+ "[object Array]",
+ (Array_Two.getClass = Object.prototype.toString, Array_Two.getClass() ) );
+
+ array[item++] = Assert.expectEq(
+ "Array_Two.toString == Array.prototype.toString",
+ true,
+ (Array_Two.toString == Array.prototype.toString ) );
+
+ array[item++] = Assert.expectEq(
+ "Array_Two.length",
+ 3,
+ Array_Two.length );
+
+ Array_Three = [12345]
+
+ array[item++] = Assert.expectEq(
+ "typeof Array_Three",
+ "object",
+ typeof Array_Three );
+
+ array[item++] = Assert.expectEq(
+ "Array_Three=[12345]; Array_Three.getClass = Object.prototype.toString; Array_Three.getClass()",
+ "[object Array]",
+ (Array_Three.getClass = Object.prototype.toString, Array_Three.getClass() ) );
+
+ Array_Four = [1,2,3,4,5]
+
+ array[item++] = Assert.expectEq(
+ "Array_Four.toString == Array.prototype.toString",
+ true,
+ (Array_Four.toString == Array.prototype.toString ) );
+
+ Array_Five = [,2,3,4,5]
+
+ array[item++] = Assert.expectEq(
+ "Array_Five.length",
+ 5,
+ Array_Five.length );
+
+ array[item++] = Assert.expectEq(
+ "Array_Five[1]",
+ 2,
+ Array_Five[1] );
+
+ Array_Six = [1,2,3,4,5,6,7,8,9,10,11,12,13,,15,16,17,18,19,20,21,22,23,24,25]
+
+ array[item++] = Assert.expectEq(
+ "Array_Six.length",
+ 25,
+ Array_Six.length );
+
+ array[item++] = Assert.expectEq(
+ "Array_Six[14]",
+ 15,
+ Array_Six[14] );
+
+ Array_Seven = [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,]
+
+ array[item++] = Assert.expectEq(
+ "Array_Seven.length",
+ 32,
+ Array_Seven.length );
+ Array_Eight=[,,,,,,,,,,,,,,,]
+
+ array[item++] = Assert.expectEq(
+ "Array_Eight.length",
+ 15,
+ Array_Eight.length );
+
+ Array_Nine = [,2,3,4,5,6,7,8,9,10,11,,13,14,15,16,17,18,19,,21,22,23,24,25,26,27,28,29,30,31,32,]
+
+ array[item++] = Assert.expectEq(
+ "Array_Nine.length",
+ 32,
+ Array_Nine.length );
+
+ array[item++] = Assert.expectEq(
+ "Array_Nine[1]",
+ 2,
+ Array_Nine[1] );
+
+ array[item++] = Assert.expectEq(
+ "Array_Nine[0]",
+ undefined,
+ Array_Nine[0] );
+
+ array[item++] = Assert.expectEq(
+ "Array_Nine[11]",
+ undefined,
+ Array_Nine[11] );
+
+ array[item++] = Assert.expectEq(
+ "Array_Nine[12]",
+ 13,
+ Array_Nine[12] );
+
+ array[item++] = Assert.expectEq(
+ "Array_Nine[19]",
+ undefined,
+ Array_Nine[19] );
+
+ array[item++] = Assert.expectEq(
+ "Array_Nine[20]",
+ 21,
+ Array_Nine[20] );
+
+ array[item++] = Assert.expectEq(
+ "Array_Nine[32]",
+ undefined,
+ Array_Nine[32] );
+
+ var Array_Ten:Array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
+
+ array[item++] = Assert.expectEq(
+ "Multi dimensional array",
+ 6,
+ Array_Ten[1][2] );
+
+ var obj = new Object();
+ obj.prop1 = "Good";
+ obj.prop2 = "one";
+ for (j in obj){
+
+ var myvar = obj[j];
+ if (myvar=="one"){
+ break;
+ }
+ //print(myvar);
+ }
+
+ array[item++] = Assert.expectEq( "Using array initializers to dynamically set and retrieve values of an object","one",myvar );
+
+
+
+
+
+
+ return ( array );
+}
+
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_4/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_4/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_4/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_4/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_4/output.txt
new file mode 100644
index 000000000..82e095308
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_4/output.txt
@@ -0,0 +1,28 @@
+typeof Array_One PASSED!
+Array_One=[]; Array_One.getClass = Object.prototype.toString; Array_One.getClass() PASSED!
+Array_One = []; Array_One.toString == Array.prototype.toString PASSED!
+Array_One.length PASSED!
+Array_Two PASSED!
+typeof Array_Two PASSED!
+Array_Two=[1,2,3]; arr.getClass = Object.prototype.toString; arr.getClass() PASSED!
+Array_Two.toString == Array.prototype.toString PASSED!
+Array_Two.length PASSED!
+typeof Array_Three PASSED!
+Array_Three=[12345]; Array_Three.getClass = Object.prototype.toString; Array_Three.getClass() PASSED!
+Array_Four.toString == Array.prototype.toString PASSED!
+Array_Five.length PASSED!
+Array_Five[1] PASSED!
+Array_Six.length PASSED!
+Array_Six[14] PASSED!
+Array_Seven.length PASSED!
+Array_Eight.length PASSED!
+Array_Nine.length PASSED!
+Array_Nine[1] PASSED!
+Array_Nine[0] PASSED!
+Array_Nine[11] PASSED!
+Array_Nine[12] PASSED!
+Array_Nine[19] PASSED!
+Array_Nine[20] PASSED!
+Array_Nine[32] PASSED!
+Multi dimensional array PASSED!
+Using array initializers to dynamically set and retrieve values of an object PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_4/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_4/test.swf
new file mode 100644
index 000000000..109d423fd
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_4/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_4/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_4/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_4/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_5/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_5/Test.as
new file mode 100644
index 000000000..a38f60b74
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_5/Test.as
@@ -0,0 +1,94 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11.1.5";
+// var VERSION = "ECMA_4";
+// var TITLE = "Object Initialisers";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+ MyObject = {}
+ array[item++] = Assert.expectEq( "MyObject = {}", "[object Object]", MyObject.toString() );
+
+ array[item++] = Assert.expectEq( "MyObject = {}, typeof MyObject","object",typeof MyObject );
+
+ MyNumberObject = {MyNumber:10}
+
+ array[item++] = Assert.expectEq( "MyNumberObject = {MyNumber:10}",10,MyNumberObject.MyNumber );
+
+ MyStringObject = {MyString:"string"}
+
+ array[item++] = Assert.expectEq( "MyStringObject = {MyString:string}","string",MyStringObject.MyString );
+
+ MyBooleanObject = {MyBoolean:true}
+
+ array[item++] = Assert.expectEq( "MyBooleanObject = {MyBoolean:true}",true,MyBooleanObject.MyBoolean );
+
+ function myfunc():String{
+ return "Hi!!!"}
+
+ MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc}
+
+ array[item++] = Assert.expectEq( "MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc}",10,MyObject2.MyNumber );
+
+
+
+ array[item++] = Assert.expectEq( "MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc}","string",MyObject2.MyString );
+
+
+
+ array[item++] = Assert.expectEq( "MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc}",true,MyObject2.MyBoolean );
+
+ array[item++] = Assert.expectEq( "MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc}","number",typeof MyObject2.MyNumber );
+
+
+
+ array[item++] = Assert.expectEq( "MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc}","string",typeof MyObject2.MyString );
+
+
+
+ array[item++] = Assert.expectEq( "MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc}","boolean",typeof MyObject2.MyBoolean );
+
+ array[item++] = Assert.expectEq( "MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc}",3,MyObject2.myarr.length );
+
+
+ array[item++] = Assert.expectEq( "MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc}","object",typeof MyObject2.myarr );
+
+ array[item++] = Assert.expectEq( "MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc}","Hi!!!",MyObject2.myfuncvar() );
+
+ array[item++] = Assert.expectEq( "MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc}","function",typeof MyObject2.myfuncvar );
+
+
+ MyObject3 = {myvar:this}
+
+ array[item++] = Assert.expectEq( "MyObject3 = {this}","object",typeof MyObject3.myvar);
+
+ array[item++] = Assert.expectEq( "MyObject3 = {this}","[object global]",MyObject3.myvar+"");
+
+ MyObject4 = {myvar:function() {}}
+
+ array[item++] = Assert.expectEq( "MyObject4 = {myvar:function() {}}","function",typeof MyObject4.myvar);
+
+ array[item++] = Assert.expectEq( "MyObject4 = {myvar:function() {}}","function Function() {}",MyObject4.myvar+"");
+
+ array[item++] = Assert.expectEq( "MyObject4 = {myvar:function() {}}","function Function() {}",MyObject4.myvar.toString());
+
+
+
+
+ return ( array );
+}
+
+function MyObject( value ) {
+ this.value = function() {return this.value;}
+ this.toString = function() {return this.value+'';}
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_5/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_5/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_5/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_5/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_5/output.txt
new file mode 100644
index 000000000..511d93f58
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_5/output.txt
@@ -0,0 +1,20 @@
+MyObject = {} PASSED!
+MyObject = {}, typeof MyObject PASSED!
+MyNumberObject = {MyNumber:10} PASSED!
+MyStringObject = {MyString:string} PASSED!
+MyBooleanObject = {MyBoolean:true} PASSED!
+MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc} PASSED!
+MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc} PASSED!
+MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc} PASSED!
+MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc} PASSED!
+MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc} PASSED!
+MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc} PASSED!
+MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc} PASSED!
+MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc} PASSED!
+MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc} PASSED!
+MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc} PASSED!
+MyObject3 = {this} PASSED!
+MyObject3 = {this} PASSED!
+MyObject4 = {myvar:function() {}} PASSED!
+MyObject4 = {myvar:function() {}} PASSED!
+MyObject4 = {myvar:function() {}} PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_5/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_5/test.swf
new file mode 100644
index 000000000..4dfc8421a
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_5/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_5/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_5/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_5/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_6/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_6/Test.as
new file mode 100644
index 000000000..d10f40a97
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_6/Test.as
@@ -0,0 +1,125 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11.1.6";
+// var VERSION = "ECMA_4";
+// var TITLE = "The Grouping Operator";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ array[item++] = Assert.expectEq( "typeof(new Object())","object",typeof(new Object()));
+
+ array[item++] = Assert.expectEq( "typeof(new Array())","object",typeof(new Array()));
+
+ array[item++] = Assert.expectEq( "typeof(new Date())","object",typeof(new Date()));
+
+ array[item++] = Assert.expectEq( "typeof(new Boolean())","boolean",typeof(new Boolean()));
+
+ array[item++] = Assert.expectEq( "typeof(new String())","string",typeof(new String()));
+
+ array[item++] = Assert.expectEq( "typeof(new Number())","number",typeof(new Number()));
+
+ array[item++] = Assert.expectEq( "typeof(Math)","object",typeof(Math));
+
+ array[item++] = Assert.expectEq( "typeof(function(){})","function",typeof(function(){}));
+
+ array[item++] = Assert.expectEq( "typeof(this)","object",typeof(this));
+
+ var MyVar:Number=10;
+
+ array[item++] = Assert.expectEq( "typeof(MyVar)","number",typeof(MyVar));
+
+ array[item++] = Assert.expectEq( "typeof([])","object",typeof([]));
+
+ array[item++] = Assert.expectEq( "typeof({})","object",typeof({}));
+
+ array[item++] = Assert.expectEq( "typeof('')","string",typeof(''));
+
+ var MyArray = new Array(1,2,3);
+
+ delete(MyArray[0])
+
+ array[item++] = Assert.expectEq( "delete(MyArray[0]);MyArray[0]",undefined,MyArray[0]);
+
+ Number.prototype.foo=10;
+
+ delete(Number.prototype.foo);
+
+ array[item++] = Assert.expectEq( "delete(Number.prototype.foo);",undefined,Number.prototype.foo);
+
+ String.prototype.goo = 'hi';
+
+ delete(String.prototype.goo);
+
+ array[item++] = Assert.expectEq( "delete(String.prototype.goo);",undefined,String.prototype.goo);
+
+ Date.prototype.mydate=new Date(0);
+
+ delete(Date.prototype.mydate);
+
+ array[item++] = Assert.expectEq( "delete(Date.prototype.mydate);",undefined,Date.prototype.mydate);
+
+
+
+ array[item++] = Assert.expectEq( "delete(new String('hi'));",true,delete(new String('hi')));
+
+ array[item++] = Assert.expectEq( "delete(new Date(0));",true,delete(new Date(0)));
+
+ array[item++] = Assert.expectEq( "delete(new Number(10));",true,delete(new Number(10)));
+
+ array[item++] = Assert.expectEq( "delete(new Object());",true,delete(new Object()));
+
+ var obj = new Object();
+
+ array[item++] = Assert.expectEq( "delete(obj) Trying to delete an object of reference type should return false",false,delete(obj));
+
+ var a:Number = 10;
+ var b:Number = 20;
+ var c:Number = 30;
+ var d:Number = 40;
+
+ /*Grouping operators are used to change the normal hierarchy of the mathematical operators, expressions inside paranthesis are calculated first before any other expressions are calculated*/
+
+ array[item++] = Assert.expectEq( "Grouping operator used in defining the hierarchy of the operators",true,(a+b*c+d)!=((a+b)*(c+d)));
+
+//Grouping operators are used when passing parameters through a function
+
+ function myfunction(a):Number{
+ return a*a;
+ }
+
+ array[item++] = Assert.expectEq( "Grouping operator used in passing parameters to a function",4,myfunction(2));
+
+ var a:Number = 1;
+ var b:Number = 2;
+ function foo() { a += b; }
+ function bar() { b *= 10; }
+
+ array[item++] = Assert.expectEq( "Grouping operator used in evaluating functions and returning the results of an expression",23,(foo(), bar(), a + b));
+
+
+
+
+
+
+
+
+
+
+ return ( array );
+}
+
+function MyObject( value ) {
+ this.value = function() {return this.value;}
+ this.toString = function() {return this.value+'';}
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_6/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_6/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_6/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_6/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_6/output.txt
new file mode 100644
index 000000000..5a03a6819
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_6/output.txt
@@ -0,0 +1,25 @@
+typeof(new Object()) PASSED!
+typeof(new Array()) PASSED!
+typeof(new Date()) PASSED!
+typeof(new Boolean()) PASSED!
+typeof(new String()) PASSED!
+typeof(new Number()) PASSED!
+typeof(Math) PASSED!
+typeof(function(){}) PASSED!
+typeof(this) PASSED!
+typeof(MyVar) PASSED!
+typeof([]) PASSED!
+typeof({}) PASSED!
+typeof('') PASSED!
+delete(MyArray[0]);MyArray[0] PASSED!
+delete(Number.prototype.foo); PASSED!
+delete(String.prototype.goo); PASSED!
+delete(Date.prototype.mydate); PASSED!
+delete(new String('hi')); PASSED!
+delete(new Date(0)); PASSED!
+delete(new Number(10)); PASSED!
+delete(new Object()); PASSED!
+delete(obj) Trying to delete an object of reference type should return false PASSED!
+Grouping operator used in defining the hierarchy of the operators PASSED!
+Grouping operator used in passing parameters to a function PASSED!
+Grouping operator used in evaluating functions and returning the results of an expression PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_6/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_6/test.swf
new file mode 100644
index 000000000..f089a9245
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_6/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_6/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_6/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_1_6/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_1/Test.as
new file mode 100644
index 000000000..1817434a4
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_1/Test.as
@@ -0,0 +1,336 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11_2_1_1";
+// var VERSION = "ECMA_1";
+// var TITLE = "Property Accessors";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ var PROPERTY = new Array();
+
+
+ array[item++] = Assert.expectEq( "typeof this.NaN", "undefined", typeof (this.NaN) );
+ array[item++] = Assert.expectEq( "typeof this['NaN']", "undefined", typeof this['NaN'] );
+ array[item++] = Assert.expectEq( "typeof this.Infinity", "undefined", typeof this.Infinity );
+ array[item++] = Assert.expectEq( "typeof this['Infinity']", "undefined", typeof this['Infinity'] );
+ array[item++] = Assert.expectEq( "typeof this.parseInt", "undefined", typeof this.parseInt );
+ array[item++] = Assert.expectEq( "typeof this['parseInt']", "undefined", typeof this['parseInt']);
+ array[item++] = Assert.expectEq( "typeof this.parseFloat", "undefined",typeof this.parseFloat );
+ array[item++] = Assert.expectEq( "typeof this['parseFloat']","undefined",typeof this['parseFloat']);
+ array[item++] = Assert.expectEq( "typeof this.escape", "undefined",typeof this.escape );
+ array[item++] = Assert.expectEq( "typeof this['escape']", "undefined",typeof this['escape']);
+ array[item++] = Assert.expectEq( "typeof this.unescape", "undefined",typeof this.unescape );
+ array[item++] = Assert.expectEq( "typeof this['unescape']", "undefined",typeof this['unescape']);
+ array[item++] = Assert.expectEq( "typeof this.isNaN", "undefined",typeof this.isNaN );
+ array[item++] = Assert.expectEq( "typeof this['isNaN']", "undefined",typeof this['isNaN']);
+ array[item++] = Assert.expectEq( "typeof this.isFinite", "undefined",typeof this.isFinite );
+ array[item++] = Assert.expectEq( "typeof this['isFinite']", "undefined",typeof this['isFinite']);
+ array[item++] = Assert.expectEq( "typeof this.Object", "undefined", typeof this.Object);
+ array[item++] = Assert.expectEq( "typeof this['Object']", "undefined", typeof this['Object']);
+ array[item++] = Assert.expectEq( "typeof this.Number", "undefined", typeof this.Number);
+ array[item++] = Assert.expectEq( "typeof this['Number']", "undefined", typeof this['Number']);
+ array[item++] = Assert.expectEq( "typeof this.Function", "undefined", typeof this.Function);
+ array[item++] = Assert.expectEq( "typeof this['Function']", "undefined", typeof this['Function']);
+ array[item++] = Assert.expectEq( "typeof this.Array", "undefined", typeof this.Array);
+ array[item++] = Assert.expectEq( "typeof this['Array']", "undefined", typeof this['Array']);
+ array[item++] = Assert.expectEq( "typeof this.String", "undefined", typeof this.String);
+ array[item++] = Assert.expectEq( "typeof this['String']", "undefined", typeof this['String']);
+ array[item++] = Assert.expectEq( "typeof this.Boolean", "undefined", typeof this.Boolean);
+ array[item++] = Assert.expectEq( "typeof this['Boolean']", "undefined", typeof this['Boolean']);
+ array[item++] = Assert.expectEq( "typeof this.Date", "undefined", typeof this.Date);
+ array[item++] = Assert.expectEq( "typeof this['Date']", "undefined", typeof this['Date']);
+ array[item++] = Assert.expectEq( "typeof this.Math", "undefined", typeof this.Math);
+ array[item++] = Assert.expectEq( "typeof this['Math']", "undefined", typeof this['Math']);
+
+ // properties and methods of Object objects
+
+ array[item++] = Assert.expectEq( "typeof Object.prototype", "object", typeof Object.prototype );
+ array[item++] = Assert.expectEq( "typeof Object['prototype']", "object",typeof Object['prototype']);
+ array[item++] = Assert.expectEq( "typeof Object.toString", "function", typeof Object.toString);
+ array[item++] = Assert.expectEq( "typeof Object['toString']", "function", typeof Object['toString']);
+ array[item++] = Assert.expectEq( "typeof Object.valueOf", "function", typeof Object.valueOf);
+ array[item++] = Assert.expectEq( "typeof Object['valueOf']", "function", typeof Object['valueOf']);
+ array[item++] = Assert.expectEq( "typeof Object.constructor", "object",typeof Object.constructor );
+ array[item++] = Assert.expectEq( "typeof Object['constructor']", "object",typeof Object['constructor']);
+
+
+ // properties of the Function object
+
+ array[item++] = Assert.expectEq( "typeof Function.prototype", "function",typeof Function.prototype );
+ array[item++] = Assert.expectEq( "typeof Function['prototype']", "function",typeof Function['prototype'] );
+ array[item++] = Assert.expectEq( "typeof Function.prototype.toString", "function",typeof Function.prototype.toString );
+ array[item++] = Assert.expectEq( "typeof Function.prototype['toString']", "function",typeof Function.prototype['toString'] );
+ array[item++] = Assert.expectEq( "typeof Function.prototype.length", "number", typeof Function.prototype.length);
+ array[item++] = Assert.expectEq( "typeof Function.prototype['length']", "number", typeof Function.prototype['length']);
+ array[item++] = Assert.expectEq( "typeof Function.prototype.valueOf", "function",typeof Function.prototype.valueOf );
+ array[item++] = Assert.expectEq( "typeof Function.prototype['valueOf']", "function",typeof Function.prototype['valueOf'] );
+
+ //created extra property. need to delete this at the end
+ Function.prototype.myProperty = "hi";
+
+ array[item++] = Assert.expectEq( "typeof Function.prototype.myProperty", "string",typeof Function.prototype.myProperty );
+ array[item++] = Assert.expectEq( "typeof Function.prototype['myProperty']", "string",typeof Function.prototype['myProperty']);
+
+ // properties of the Array object
+ array[item++] = Assert.expectEq( "typeof Array.prototype", "object",typeof Array.prototype );
+ array[item++] = Assert.expectEq( "typeof Array['prototype']", "object",typeof Array['prototype']);
+ array[item++] = Assert.expectEq( "typeof Array.length", "number",typeof Array.length );
+ array[item++] = Assert.expectEq( "typeof Array['length']", "number",typeof Array['length']);
+ array[item++] = Assert.expectEq( "typeof Array.prototype.constructor", "object",typeof Array.prototype.constructor );
+ array[item++] = Assert.expectEq( "typeof Array.prototype['constructor']", "object",typeof Array.prototype['constructor']);
+ array[item++] = Assert.expectEq( "typeof Array.prototype.toString", "function",typeof Array.prototype.toString );
+ array[item++] = Assert.expectEq( "typeof Array.prototype['toString']", "function",typeof Array.prototype['toString']);
+ array[item++] = Assert.expectEq( "typeof Array.prototype.join", "function",typeof Array.prototype.join );
+ array[item++] = Assert.expectEq( "typeof Array.prototype['join']", "function",typeof Array.prototype['join']);
+ array[item++] = Assert.expectEq( "typeof Array.prototype.reverse", "function",typeof Array.prototype.reverse );
+ array[item++] = Assert.expectEq( "typeof Array.prototype['reverse']", "function",typeof Array.prototype['reverse']);
+ array[item++] = Assert.expectEq( "typeof Array.prototype.sort", "function",typeof Array.prototype.sort );
+ array[item++] = Assert.expectEq( "typeof Array.prototype['sort']", "function",typeof Array.prototype['sort']);
+
+
+ // properties of the String object
+ array[item++] = Assert.expectEq( "typeof String.prototype", "object",typeof String.prototype );
+ array[item++] = Assert.expectEq( "typeof String['prototype']", "object",typeof String['prototype'] );
+ array[item++] = Assert.expectEq( "typeof String.fromCharCode", "function",typeof String.fromCharCode );
+ array[item++] = Assert.expectEq( "typeof String['fromCharCode']", "function",typeof String['fromCharCode'] );
+ array[item++] = Assert.expectEq( "typeof String.prototype.toString", "function",typeof String.prototype.toString );
+ array[item++] = Assert.expectEq( "typeof String.prototype['toString']", "function",typeof String.prototype['toString'] );
+ array[item++] = Assert.expectEq( "typeof String.prototype.constructor", "object",typeof String.prototype.constructor );
+ array[item++] = Assert.expectEq( "typeof String.prototype['constructor']", "object",typeof String.prototype['constructor'] );
+ array[item++] = Assert.expectEq( "typeof String.prototype.valueOf", "function",typeof String.prototype.valueOf );
+ array[item++] = Assert.expectEq( "typeof String.prototype['valueOf']", "function",typeof String.prototype['valueOf'] );
+ array[item++] = Assert.expectEq( "typeof String.prototype.charAt", "function", typeof String.prototype.charAt);
+ array[item++] = Assert.expectEq( "typeof String.prototype['charAt']", "function", typeof String.prototype['charAt']);
+ array[item++] = Assert.expectEq( "typeof String.prototype.charCodeAt", "function", typeof String.prototype.charCodeAt);
+ array[item++] = Assert.expectEq( "typeof String.prototype['charCodeAt']", "function", typeof String.prototype['charCodeAt']);
+ array[item++] = Assert.expectEq( "typeof String.prototype.indexOf", "function",typeof String.prototype.indexOf );
+ array[item++] = Assert.expectEq( "typeof String.prototype['indexOf']", "function",typeof String.prototype['indexOf'] );
+ array[item++] = Assert.expectEq( "typeof String.prototype.lastIndexOf", "function",typeof String.prototype.lastIndexOf );
+ array[item++] = Assert.expectEq( "typeof String.prototype['lastIndexOf']", "function",typeof String.prototype['lastIndexOf'] );
+ array[item++] = Assert.expectEq( "typeof String.prototype.split", "function", typeof String.prototype.split);
+ array[item++] = Assert.expectEq( "typeof String.prototype['split']", "function", typeof String.prototype['split']);
+ array[item++] = Assert.expectEq( "typeof String.prototype.substring", "function",typeof String.prototype.substring );
+ array[item++] = Assert.expectEq( "typeof String.prototype['substring']", "function",typeof String.prototype['substring'] );
+ array[item++] = Assert.expectEq( "typeof String.prototype.toLowerCase", "function", typeof String.prototype.toLowerCase);
+ array[item++] = Assert.expectEq( "typeof String.prototype['toLowerCase']", "function", typeof String.prototype['toLowerCase']);
+ array[item++] = Assert.expectEq( "typeof String.prototype.toUpperCase", "function", typeof String.prototype.toUpperCase);
+ array[item++] = Assert.expectEq( "typeof String.prototype['toUpperCase']", "function", typeof String.prototype['toUpperCase']);
+ array[item++] = Assert.expectEq( "typeof String.prototype.length", "undefined",typeof String.prototype.length );
+ array[item++] = Assert.expectEq( "typeof String.prototype['length']", "undefined",typeof String.prototype['length'] );
+
+
+ // properties of the Boolean object
+ array[item++] = Assert.expectEq( "typeof Boolean.prototype", "object",typeof Boolean.prototype );
+ array[item++] = Assert.expectEq( "typeof Boolean['prototype']", "object",typeof Boolean['prototype'] );
+ array[item++] = Assert.expectEq( "typeof Boolean.constructor", "object",typeof Boolean.constructor );
+ array[item++] = Assert.expectEq( "typeof Boolean['constructor']", "object",typeof Boolean['constructor'] );
+ array[item++] = Assert.expectEq( "typeof Boolean.prototype.valueOf", "function",typeof Boolean.prototype.valueOf );
+ array[item++] = Assert.expectEq( "typeof Boolean.prototype['valueOf']", "function",typeof Boolean.prototype['valueOf']);
+ array[item++] = Assert.expectEq( "typeof Boolean.prototype.toString", "function", typeof Boolean.prototype.toString);
+ array[item++] = Assert.expectEq( "typeof Boolean.prototype['toString']", "function", typeof Boolean.prototype['toString']);
+
+ // properties of the Number object
+
+ array[item++] = Assert.expectEq( "typeof Number.MAX_VALUE", "number",typeof Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "typeof Number['MAX_VALUE']", "number",typeof Number['MAX_VALUE']);
+ array[item++] = Assert.expectEq( "typeof Number.MIN_VALUE", "number", typeof Number.MIN_VALUE);
+ array[item++] = Assert.expectEq( "typeof Number['MIN_VALUE']", "number", typeof Number['MIN_VALUE']);
+ array[item++] = Assert.expectEq( "typeof Number.NaN", "number", typeof Number.NaN);
+ array[item++] = Assert.expectEq( "typeof Number['NaN']", "number", typeof Number['NaN']);
+ array[item++] = Assert.expectEq( "typeof Number.NEGATIVE_INFINITY", "number", typeof Number.NEGATIVE_INFINITY);
+ array[item++] = Assert.expectEq( "typeof Number['NEGATIVE_INFINITY']", "number", typeof Number['NEGATIVE_INFINITY']);
+ array[item++] = Assert.expectEq( "typeof Number.POSITIVE_INFINITY", "number", typeof Number.POSITIVE_INFINITY);
+ array[item++] = Assert.expectEq( "typeof Number['POSITIVE_INFINITY']", "number", typeof Number['POSITIVE_INFINITY']);
+ array[item++] = Assert.expectEq( "typeof Number.prototype.toString", "function",typeof Number.prototype.toString );
+ array[item++] = Assert.expectEq( "typeof Number.prototype['toString']", "function",typeof Number.prototype['toString'] );
+ array[item++] = Assert.expectEq( "typeof Number.prototype.constructor", "object", typeof Number.prototype.constructor);
+ array[item++] = Assert.expectEq( "typeof Number.prototype['constructor']", "object", typeof Number.prototype['constructor']);
+ array[item++] = Assert.expectEq( "typeof Number.prototype.valueOf", "function",typeof Number.prototype.valueOf );
+ array[item++] = Assert.expectEq( "typeof Number.prototype['valueOf']", "function",typeof Number.prototype['valueOf'] );
+
+ // properties of the Math Object.
+ array[item++] = Assert.expectEq( "typeof Math.E", "number", typeof Math.E);
+ array[item++] = Assert.expectEq( "typeof Math['E']", "number", typeof Math['E']);
+ array[item++] = Assert.expectEq( "typeof Math.LN10", "number", typeof Math.LN10);
+ array[item++] = Assert.expectEq( "typeof Math['LN10']", "number", typeof Math['LN10']);
+ array[item++] = Assert.expectEq( "typeof Math.LN2", "number", typeof Math.LN2);
+ array[item++] = Assert.expectEq( "typeof Math['LN2']", "number", typeof Math['LN2']);
+ array[item++] = Assert.expectEq( "typeof Math.LOG2E", "number", typeof Math.LOG2E);
+ array[item++] = Assert.expectEq( "typeof Math['LOG2E']", "number", typeof Math['LOG2E']);
+ array[item++] = Assert.expectEq( "typeof Math.LOG10E", "number", typeof Math.LOG10E);
+ array[item++] = Assert.expectEq( "typeof Math['LOG10E']", "number", typeof Math['LOG10E']);
+ array[item++] = Assert.expectEq( "typeof Math.PI", "number", typeof Math.PI);
+ array[item++] = Assert.expectEq( "typeof Math['PI']", "number", typeof Math['PI']);
+ array[item++] = Assert.expectEq( "typeof Math.SQRT1_2", "number", typeof Math.SQRT1_2);
+ array[item++] = Assert.expectEq( "typeof Math['SQRT1_2']", "number", typeof Math['SQRT1_2']);
+ array[item++] = Assert.expectEq( "typeof Math.SQRT2", "number", typeof Math.SQRT2);
+ array[item++] = Assert.expectEq( "typeof Math['SQRT2']", "number", typeof Math['SQRT2']);
+ array[item++] = Assert.expectEq( "typeof Math.abs", "function", typeof Math.abs);
+ array[item++] = Assert.expectEq( "typeof Math['abs']", "function", typeof Math['abs']);
+ array[item++] = Assert.expectEq( "typeof Math.acos", "function", typeof Math.acos);
+ array[item++] = Assert.expectEq( "typeof Math['acos']", "function", typeof Math['acos']);
+ array[item++] = Assert.expectEq( "typeof Math.asin", "function", typeof Math.asin);
+ array[item++] = Assert.expectEq( "typeof Math['asin']", "function", typeof Math['asin']);
+ array[item++] = Assert.expectEq( "typeof Math.atan", "function", typeof Math.atan);
+ array[item++] = Assert.expectEq( "typeof Math['atan']", "function", typeof Math['atan']);
+ array[item++] = Assert.expectEq( "typeof Math.atan2", "function", typeof Math.atan2);
+ array[item++] = Assert.expectEq( "typeof Math['atan2']", "function", typeof Math['atan2']);
+ array[item++] = Assert.expectEq( "typeof Math.ceil", "function", typeof Math.ceil);
+ array[item++] = Assert.expectEq( "typeof Math['ceil']", "function", typeof Math['ceil']);
+ array[item++] = Assert.expectEq( "typeof Math.cos", "function", typeof Math.cos);
+ array[item++] = Assert.expectEq( "typeof Math['cos']", "function", typeof Math['cos']);
+ array[item++] = Assert.expectEq( "typeof Math.exp", "function", typeof Math.exp);
+ array[item++] = Assert.expectEq( "typeof Math['exp']", "function", typeof Math['exp']);
+ array[item++] = Assert.expectEq( "typeof Math.floor", "function", typeof Math.floor);
+ array[item++] = Assert.expectEq( "typeof Math['floor']", "function", typeof Math['floor']);
+ array[item++] = Assert.expectEq( "typeof Math.log", "function", typeof Math.log);
+ array[item++] = Assert.expectEq( "typeof Math['log']", "function", typeof Math['log']);
+ array[item++] = Assert.expectEq( "typeof Math.max", "function", typeof Math.max);
+ array[item++] = Assert.expectEq( "typeof Math['max']", "function", typeof Math['max']);
+ array[item++] = Assert.expectEq( "typeof Math.min", "function", typeof Math.min);
+ array[item++] = Assert.expectEq( "typeof Math['min']", "function", typeof Math['min']);
+ array[item++] = Assert.expectEq( "typeof Math.pow", "function", typeof Math.pow);
+ array[item++] = Assert.expectEq( "typeof Math['pow']", "function", typeof Math['pow']);
+ array[item++] = Assert.expectEq( "typeof Math.random", "function", typeof Math.random);
+ array[item++] = Assert.expectEq( "typeof Math['random']", "function", typeof Math['random']);
+ array[item++] = Assert.expectEq( "typeof Math.round", "function", typeof Math.round);
+ array[item++] = Assert.expectEq( "typeof Math['round']", "function", typeof Math['round']);
+ array[item++] = Assert.expectEq( "typeof Math.sin", "function", typeof Math.sin);
+ array[item++] = Assert.expectEq( "typeof Math['sin']", "function", typeof Math['sin']);
+ array[item++] = Assert.expectEq( "typeof Math.sqrt", "function", typeof Math.sqrt);
+ array[item++] = Assert.expectEq( "typeof Math['sqrt']", "function", typeof Math['sqrt']);
+ array[item++] = Assert.expectEq( "typeof Math.tan", "function", typeof Math.tan);
+ array[item++] = Assert.expectEq( "typeof Math['tan']", "function", typeof Math['tan']);
+
+ // properties of the Date object
+ array[item++] = Assert.expectEq( "typeof Date.parse", "function", typeof Date.parse);
+ array[item++] = Assert.expectEq( "typeof Date['parse']", "function", typeof Date['parse']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype", "object", typeof Date.prototype);
+ array[item++] = Assert.expectEq( "typeof Date['prototype']", "object", typeof Date['prototype']);
+ array[item++] = Assert.expectEq( "typeof Date.UTC", "function", typeof Date.UTC);
+ array[item++] = Assert.expectEq( "typeof Date['UTC']", "function", typeof Date['UTC']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.constructor", "object", typeof Date.prototype.constructor);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['constructor']", "object", typeof Date.prototype['constructor']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.toString", "function", typeof Date.prototype.toString);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['toString']", "function", typeof Date.prototype['toString']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.valueOf", "function", typeof Date.prototype.valueOf);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['valueOf']", "function", typeof Date.prototype['valueOf']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getTime", "function", typeof Date.prototype.getTime);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getTime']", "function", typeof Date.prototype['getTime']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getYear", "undefined", typeof Date.prototype.getYear);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getYear']", "undefined", typeof Date.prototype['getYear']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getFullYear", "function", typeof Date.prototype.getFullYear);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getFullYear']", "function", typeof Date.prototype['getFullYear']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getUTCFullYear", "function", typeof Date.prototype.getUTCFullYear);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getUTCFullYear']", "function", typeof Date.prototype['getUTCFullYear']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getMonth", "function", typeof Date.prototype.getMonth);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getMonth']", "function", typeof Date.prototype['getMonth']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getUTCMonth", "function", typeof Date.prototype.getUTCMonth);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getUTCMonth']", "function", typeof Date.prototype['getUTCMonth']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getDate", "function", typeof Date.prototype.getDate);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getDate']", "function", typeof Date.prototype['getDate']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getUTCDate", "function", typeof Date.prototype.getUTCDate);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getUTCDate']", "function", typeof Date.prototype['getUTCDate']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getDay", "function", typeof Date.prototype.getDay);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getDay']", "function", typeof Date.prototype['getDay']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getUTCDay", "function", typeof Date.prototype.getUTCDay);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getUTCDay']", "function", typeof Date.prototype['getUTCDay']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getHours", "function", typeof Date.prototype.getHours);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getHours']", "function", typeof Date.prototype['getHours']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getUTCHours", "function", typeof Date.prototype.getUTCHours);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getUTCHours']", "function", typeof Date.prototype['getUTCHours']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getMinutes", "function", typeof Date.prototype.getMinutes);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getMinutes']", "function", typeof Date.prototype['getMinutes']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getUTCMinutes", "function", typeof Date.prototype.getUTCMinutes);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getUTCMinutes']", "function", typeof Date.prototype['getUTCMinutes']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getSeconds", "function", typeof Date.prototype.getSeconds);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getSeconds']", "function", typeof Date.prototype['getSeconds']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getUTCSeconds", "function", typeof Date.prototype.getUTCSeconds);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getUTCSeconds']", "function", typeof Date.prototype['getUTCSeconds']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getMilliseconds","function", typeof Date.prototype.getMilliseconds);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getMilliseconds']","function", typeof Date.prototype['getMilliseconds']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.getUTCMilliseconds", "function", typeof Date.prototype.getUTCMilliseconds);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['getUTCMilliseconds']", "function", typeof Date.prototype['getUTCMilliseconds']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.setTime", "function", typeof Date.prototype.setTime);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['setTime']", "function", typeof Date.prototype['setTime']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.setMilliseconds","function", typeof Date.prototype.setMilliseconds);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['setMilliseconds']","function", typeof Date.prototype['setMilliseconds']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.setUTCMilliseconds", "function", typeof Date.prototype.setUTCMilliseconds);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['setUTCMilliseconds']", "function", typeof Date.prototype['setUTCMilliseconds']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.setSeconds", "function", typeof Date.prototype.setSeconds);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['setSeconds']", "function", typeof Date.prototype['setSeconds']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.setUTCSeconds", "function", typeof Date.prototype.setUTCSeconds);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['setUTCSeconds']", "function", typeof Date.prototype['setUTCSeconds']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.setMinutes", "function", typeof Date.prototype.setMinutes);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['setMinutes']", "function", typeof Date.prototype['setMinutes']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.setUTCMinutes", "function", typeof Date.prototype.setUTCMinutes);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['setUTCMinutes']", "function", typeof Date.prototype['setUTCMinutes']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.setHours", "function", typeof Date.prototype.setHours);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['setHours']", "function", typeof Date.prototype['setHours']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.setUTCHours", "function", typeof Date.prototype.setUTCHours);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['setUTCHours']", "function", typeof Date.prototype['setUTCHours']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.setDate", "function", typeof Date.prototype.setDate);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['setDate']", "function", typeof Date.prototype['setDate']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.setUTCDate", "function", typeof Date.prototype.setUTCDate);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['setUTCDate']", "function", typeof Date.prototype['setUTCDate']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.setMonth", "function", typeof Date.prototype.setMonth);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['setMonth']", "function", typeof Date.prototype['setMonth']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.setUTCMonth", "function", typeof Date.prototype.setUTCMonth);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['setUTCMonth']", "function", typeof Date.prototype['setUTCMonth']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.setFullYear", "function", typeof Date.prototype.setFullYear);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['setFullYear']", "function", typeof Date.prototype['setFullYear']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.setUTCFullYear", "function", typeof Date.prototype.setUTCFullYear);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['setUTCFullYear']", "function", typeof Date.prototype['setUTCFullYear']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.setYear", "undefined", typeof Date.prototype.setYear);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['setYear']", "undefined", typeof Date.prototype['setYear']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.toLocaleString", "function", typeof Date.prototype.toLocaleString);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['toLocaleString']", "function", typeof Date.prototype['toLocaleString']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.toUTCString", "function", typeof Date.prototype.toUTCString);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['toUTCString']", "function", typeof Date.prototype['toUTCString']);
+ array[item++] = Assert.expectEq( "typeof Date.prototype.toGMTString", "undefined", typeof Date.prototype.toGMTString);
+ array[item++] = Assert.expectEq( "typeof Date.prototype['toGMTString']", "undefined", typeof Date.prototype['toGMTString']);
+
+ for ( var i = 0, RESULT; i < PROPERTY.length; i++ ) {
+ RESULT = typeof (PROPERTY[i].object.PROPERTY[i].name);
+
+
+ array[item++] = Assert.expectEq(
+ "typeof " + PROPERTY[i].object + "." + PROPERTY[i].name,
+ PROPERTY[i].type+"",
+ RESULT );
+
+
+ RESULT = typeof (PROPERTY[i].object['PROPERTY[i].name']);
+
+
+ array[item++] = Assert.expectEq(
+ "typeof " + PROPERTY[i].object + "['" + PROPERTY[i].name +"']",
+ PROPERTY[i].type,
+ RESULT );
+
+ }
+
+ //restore. deleted the extra property created so it doesn't interfere with another testcase
+ //in ATS.
+ delete Function.prototype.myProperty;
+ return array;
+}
+
+function MyObject( arg0, arg1, arg2, arg3, arg4 ) {
+ this.name = arg0;
+}
+function Property( object, name, type ) {
+ this.object = object;
+ this.name = name;
+ this.type = type;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_1/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_1/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_1/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_1/output.txt
new file mode 100644
index 000000000..7aa573ac0
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_1/output.txt
@@ -0,0 +1,254 @@
+typeof this.NaN PASSED!
+typeof this['NaN'] PASSED!
+typeof this.Infinity PASSED!
+typeof this['Infinity'] PASSED!
+typeof this.parseInt PASSED!
+typeof this['parseInt'] PASSED!
+typeof this.parseFloat PASSED!
+typeof this['parseFloat'] PASSED!
+typeof this.escape PASSED!
+typeof this['escape'] PASSED!
+typeof this.unescape PASSED!
+typeof this['unescape'] PASSED!
+typeof this.isNaN PASSED!
+typeof this['isNaN'] PASSED!
+typeof this.isFinite PASSED!
+typeof this['isFinite'] PASSED!
+typeof this.Object PASSED!
+typeof this['Object'] PASSED!
+typeof this.Number PASSED!
+typeof this['Number'] PASSED!
+typeof this.Function PASSED!
+typeof this['Function'] PASSED!
+typeof this.Array PASSED!
+typeof this['Array'] PASSED!
+typeof this.String PASSED!
+typeof this['String'] PASSED!
+typeof this.Boolean PASSED!
+typeof this['Boolean'] PASSED!
+typeof this.Date PASSED!
+typeof this['Date'] PASSED!
+typeof this.Math PASSED!
+typeof this['Math'] PASSED!
+typeof Object.prototype PASSED!
+typeof Object['prototype'] PASSED!
+typeof Object.toString PASSED!
+typeof Object['toString'] PASSED!
+typeof Object.valueOf PASSED!
+typeof Object['valueOf'] PASSED!
+typeof Object.constructor PASSED!
+typeof Object['constructor'] PASSED!
+typeof Function.prototype PASSED!
+typeof Function['prototype'] PASSED!
+typeof Function.prototype.toString PASSED!
+typeof Function.prototype['toString'] PASSED!
+typeof Function.prototype.length PASSED!
+typeof Function.prototype['length'] PASSED!
+typeof Function.prototype.valueOf PASSED!
+typeof Function.prototype['valueOf'] PASSED!
+typeof Function.prototype.myProperty PASSED!
+typeof Function.prototype['myProperty'] PASSED!
+typeof Array.prototype PASSED!
+typeof Array['prototype'] PASSED!
+typeof Array.length PASSED!
+typeof Array['length'] PASSED!
+typeof Array.prototype.constructor PASSED!
+typeof Array.prototype['constructor'] PASSED!
+typeof Array.prototype.toString PASSED!
+typeof Array.prototype['toString'] PASSED!
+typeof Array.prototype.join PASSED!
+typeof Array.prototype['join'] PASSED!
+typeof Array.prototype.reverse PASSED!
+typeof Array.prototype['reverse'] PASSED!
+typeof Array.prototype.sort PASSED!
+typeof Array.prototype['sort'] PASSED!
+typeof String.prototype PASSED!
+typeof String['prototype'] PASSED!
+typeof String.fromCharCode PASSED!
+typeof String['fromCharCode'] PASSED!
+typeof String.prototype.toString PASSED!
+typeof String.prototype['toString'] PASSED!
+typeof String.prototype.constructor PASSED!
+typeof String.prototype['constructor'] PASSED!
+typeof String.prototype.valueOf PASSED!
+typeof String.prototype['valueOf'] PASSED!
+typeof String.prototype.charAt PASSED!
+typeof String.prototype['charAt'] PASSED!
+typeof String.prototype.charCodeAt PASSED!
+typeof String.prototype['charCodeAt'] PASSED!
+typeof String.prototype.indexOf PASSED!
+typeof String.prototype['indexOf'] PASSED!
+typeof String.prototype.lastIndexOf PASSED!
+typeof String.prototype['lastIndexOf'] PASSED!
+typeof String.prototype.split PASSED!
+typeof String.prototype['split'] PASSED!
+typeof String.prototype.substring PASSED!
+typeof String.prototype['substring'] PASSED!
+typeof String.prototype.toLowerCase PASSED!
+typeof String.prototype['toLowerCase'] PASSED!
+typeof String.prototype.toUpperCase PASSED!
+typeof String.prototype['toUpperCase'] PASSED!
+typeof String.prototype.length PASSED!
+typeof String.prototype['length'] PASSED!
+typeof Boolean.prototype PASSED!
+typeof Boolean['prototype'] PASSED!
+typeof Boolean.constructor PASSED!
+typeof Boolean['constructor'] PASSED!
+typeof Boolean.prototype.valueOf PASSED!
+typeof Boolean.prototype['valueOf'] PASSED!
+typeof Boolean.prototype.toString PASSED!
+typeof Boolean.prototype['toString'] PASSED!
+typeof Number.MAX_VALUE PASSED!
+typeof Number['MAX_VALUE'] PASSED!
+typeof Number.MIN_VALUE PASSED!
+typeof Number['MIN_VALUE'] PASSED!
+typeof Number.NaN PASSED!
+typeof Number['NaN'] PASSED!
+typeof Number.NEGATIVE_INFINITY PASSED!
+typeof Number['NEGATIVE_INFINITY'] PASSED!
+typeof Number.POSITIVE_INFINITY PASSED!
+typeof Number['POSITIVE_INFINITY'] PASSED!
+typeof Number.prototype.toString PASSED!
+typeof Number.prototype['toString'] PASSED!
+typeof Number.prototype.constructor PASSED!
+typeof Number.prototype['constructor'] PASSED!
+typeof Number.prototype.valueOf PASSED!
+typeof Number.prototype['valueOf'] PASSED!
+typeof Math.E PASSED!
+typeof Math['E'] PASSED!
+typeof Math.LN10 PASSED!
+typeof Math['LN10'] PASSED!
+typeof Math.LN2 PASSED!
+typeof Math['LN2'] PASSED!
+typeof Math.LOG2E PASSED!
+typeof Math['LOG2E'] PASSED!
+typeof Math.LOG10E PASSED!
+typeof Math['LOG10E'] PASSED!
+typeof Math.PI PASSED!
+typeof Math['PI'] PASSED!
+typeof Math.SQRT1_2 PASSED!
+typeof Math['SQRT1_2'] PASSED!
+typeof Math.SQRT2 PASSED!
+typeof Math['SQRT2'] PASSED!
+typeof Math.abs PASSED!
+typeof Math['abs'] PASSED!
+typeof Math.acos PASSED!
+typeof Math['acos'] PASSED!
+typeof Math.asin PASSED!
+typeof Math['asin'] PASSED!
+typeof Math.atan PASSED!
+typeof Math['atan'] PASSED!
+typeof Math.atan2 PASSED!
+typeof Math['atan2'] PASSED!
+typeof Math.ceil PASSED!
+typeof Math['ceil'] PASSED!
+typeof Math.cos PASSED!
+typeof Math['cos'] PASSED!
+typeof Math.exp PASSED!
+typeof Math['exp'] PASSED!
+typeof Math.floor PASSED!
+typeof Math['floor'] PASSED!
+typeof Math.log PASSED!
+typeof Math['log'] PASSED!
+typeof Math.max PASSED!
+typeof Math['max'] PASSED!
+typeof Math.min PASSED!
+typeof Math['min'] PASSED!
+typeof Math.pow PASSED!
+typeof Math['pow'] PASSED!
+typeof Math.random PASSED!
+typeof Math['random'] PASSED!
+typeof Math.round PASSED!
+typeof Math['round'] PASSED!
+typeof Math.sin PASSED!
+typeof Math['sin'] PASSED!
+typeof Math.sqrt PASSED!
+typeof Math['sqrt'] PASSED!
+typeof Math.tan PASSED!
+typeof Math['tan'] PASSED!
+typeof Date.parse PASSED!
+typeof Date['parse'] PASSED!
+typeof Date.prototype PASSED!
+typeof Date['prototype'] PASSED!
+typeof Date.UTC PASSED!
+typeof Date['UTC'] PASSED!
+typeof Date.prototype.constructor PASSED!
+typeof Date.prototype['constructor'] PASSED!
+typeof Date.prototype.toString PASSED!
+typeof Date.prototype['toString'] PASSED!
+typeof Date.prototype.valueOf PASSED!
+typeof Date.prototype['valueOf'] PASSED!
+typeof Date.prototype.getTime PASSED!
+typeof Date.prototype['getTime'] PASSED!
+typeof Date.prototype.getYear PASSED!
+typeof Date.prototype['getYear'] PASSED!
+typeof Date.prototype.getFullYear PASSED!
+typeof Date.prototype['getFullYear'] PASSED!
+typeof Date.prototype.getUTCFullYear PASSED!
+typeof Date.prototype['getUTCFullYear'] PASSED!
+typeof Date.prototype.getMonth PASSED!
+typeof Date.prototype['getMonth'] PASSED!
+typeof Date.prototype.getUTCMonth PASSED!
+typeof Date.prototype['getUTCMonth'] PASSED!
+typeof Date.prototype.getDate PASSED!
+typeof Date.prototype['getDate'] PASSED!
+typeof Date.prototype.getUTCDate PASSED!
+typeof Date.prototype['getUTCDate'] PASSED!
+typeof Date.prototype.getDay PASSED!
+typeof Date.prototype['getDay'] PASSED!
+typeof Date.prototype.getUTCDay PASSED!
+typeof Date.prototype['getUTCDay'] PASSED!
+typeof Date.prototype.getHours PASSED!
+typeof Date.prototype['getHours'] PASSED!
+typeof Date.prototype.getUTCHours PASSED!
+typeof Date.prototype['getUTCHours'] PASSED!
+typeof Date.prototype.getMinutes PASSED!
+typeof Date.prototype['getMinutes'] PASSED!
+typeof Date.prototype.getUTCMinutes PASSED!
+typeof Date.prototype['getUTCMinutes'] PASSED!
+typeof Date.prototype.getSeconds PASSED!
+typeof Date.prototype['getSeconds'] PASSED!
+typeof Date.prototype.getUTCSeconds PASSED!
+typeof Date.prototype['getUTCSeconds'] PASSED!
+typeof Date.prototype.getMilliseconds PASSED!
+typeof Date.prototype['getMilliseconds'] PASSED!
+typeof Date.prototype.getUTCMilliseconds PASSED!
+typeof Date.prototype['getUTCMilliseconds'] PASSED!
+typeof Date.prototype.setTime PASSED!
+typeof Date.prototype['setTime'] PASSED!
+typeof Date.prototype.setMilliseconds PASSED!
+typeof Date.prototype['setMilliseconds'] PASSED!
+typeof Date.prototype.setUTCMilliseconds PASSED!
+typeof Date.prototype['setUTCMilliseconds'] PASSED!
+typeof Date.prototype.setSeconds PASSED!
+typeof Date.prototype['setSeconds'] PASSED!
+typeof Date.prototype.setUTCSeconds PASSED!
+typeof Date.prototype['setUTCSeconds'] PASSED!
+typeof Date.prototype.setMinutes PASSED!
+typeof Date.prototype['setMinutes'] PASSED!
+typeof Date.prototype.setUTCMinutes PASSED!
+typeof Date.prototype['setUTCMinutes'] PASSED!
+typeof Date.prototype.setHours PASSED!
+typeof Date.prototype['setHours'] PASSED!
+typeof Date.prototype.setUTCHours PASSED!
+typeof Date.prototype['setUTCHours'] PASSED!
+typeof Date.prototype.setDate PASSED!
+typeof Date.prototype['setDate'] PASSED!
+typeof Date.prototype.setUTCDate PASSED!
+typeof Date.prototype['setUTCDate'] PASSED!
+typeof Date.prototype.setMonth PASSED!
+typeof Date.prototype['setMonth'] PASSED!
+typeof Date.prototype.setUTCMonth PASSED!
+typeof Date.prototype['setUTCMonth'] PASSED!
+typeof Date.prototype.setFullYear PASSED!
+typeof Date.prototype['setFullYear'] PASSED!
+typeof Date.prototype.setUTCFullYear PASSED!
+typeof Date.prototype['setUTCFullYear'] PASSED!
+typeof Date.prototype.setYear PASSED!
+typeof Date.prototype['setYear'] PASSED!
+typeof Date.prototype.toLocaleString PASSED!
+typeof Date.prototype['toLocaleString'] PASSED!
+typeof Date.prototype.toUTCString PASSED!
+typeof Date.prototype['toUTCString'] PASSED!
+typeof Date.prototype.toGMTString PASSED!
+typeof Date.prototype['toGMTString'] PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_1/test.swf
new file mode 100644
index 000000000..1c00d0aba
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_1/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_1/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_2/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_2/Test.as
new file mode 100644
index 000000000..463992f6b
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_2/Test.as
@@ -0,0 +1,59 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11_2_1_2";
+// var VERSION = "ECMA_1";
+// var TITLE = "Property Accessors";
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // go through all Native Function objects, methods, and properties and get their typeof.
+
+ var PROPERTY = new Array();
+ var p = 0;
+
+ // try to access properties of primitive types
+
+ PROPERTY[p++] = new Property( "hi","hi","hi",NaN );
+ PROPERTY[p++] = new Property( NaN, NaN, "NaN", NaN );
+// PROPERTY[p++] = new Property( 3, 3, "3", 3 );
+ PROPERTY[p++] = new Property( true, true, "true", 1 );
+ PROPERTY[p++] = new Property( false, false, "false", 0 );
+
+ for ( var i = 0, RESULT; i < PROPERTY.length; i++ ) {
+ array[item++] = Assert.expectEq(
+ PROPERTY[i].object + ".valueOf()",
+ PROPERTY[i].value,
+ PROPERTY[i].object.valueOf());
+
+ array[item++] = Assert.expectEq(
+ PROPERTY[i].object + ".toString()",
+ PROPERTY[i].string,
+ PROPERTY[i].object.toString());
+
+ }
+ return array;
+}
+
+
+function MyObject( value ) {
+ this.value = value;
+ this.stringValue = value +"";
+ this.numberValue = Number(value);
+ return this;
+}
+function Property( object, value, string, number ) {
+ this.object = object;
+ this.string = String(value);
+ this.number = Number(value);
+ this.value = value;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_2/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_2/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_2/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_2/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_2/output.txt
new file mode 100644
index 000000000..57c8c2ac7
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_2/output.txt
@@ -0,0 +1,8 @@
+hi.valueOf() PASSED!
+hi.toString() PASSED!
+NaN.valueOf() PASSED!
+NaN.toString() PASSED!
+true.valueOf() PASSED!
+true.toString() PASSED!
+false.valueOf() PASSED!
+false.toString() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_2/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_2/test.swf
new file mode 100644
index 000000000..c16872e01
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_2/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_2/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_2/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_2/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_3/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_3/Test.as
new file mode 100644
index 000000000..8f0c3286f
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_3/Test.as
@@ -0,0 +1,55 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11_2_1_2";
+// var VERSION = "ECMA_1";
+// var TITLE = "Property Accessors";
+
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // go through all Native Function objects, methods, and properties and get their typeof.
+
+ var PROPERTY = new Array();
+ var p = 0;
+
+ // try to access properties of primitive types
+
+ PROPERTY[p++] = new Property( "undefined", void 0, "undefined", NaN );
+
+ for ( var i = 0, RESULT; i < PROPERTY.length; i++ ) {
+ array[item++] = Assert.expectEq(
+ PROPERTY[i].object + ".valueOf()",
+ PROPERTY[i].value+"",
+ PROPERTY[i].object.valueOf());
+
+ array[item++] = Assert.expectEq(
+ PROPERTY[i].object + ".toString()",
+ PROPERTY[i].string,
+ PROPERTY[i].object.toString());
+
+ }
+ return array;
+}
+
+function MyObject( value ) {
+ this.value = value;
+ this.stringValue = value +"";
+ this.numberValue = Number(value);
+ return this;
+}
+function Property( object, value, string, number ) {
+ this.object = object;
+ this.string = String(value);
+ this.number = Number(value);
+ this.value = value;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_3/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_3/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_3/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_3/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_3/output.txt
new file mode 100644
index 000000000..2b8ba5b4b
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_3/output.txt
@@ -0,0 +1,2 @@
+undefined.valueOf() PASSED!
+undefined.toString() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_3/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_3/test.swf
new file mode 100644
index 000000000..b6edea1d6
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_3/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_3/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_3/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_3/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_4_rt/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_4_rt/Test.as
new file mode 100644
index 000000000..553a08559
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_4_rt/Test.as
@@ -0,0 +1,59 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11.2.1-4-n";
+// var VERSION = "ECMA_1";
+// var TITLE = "Property Accessors";
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // go through all Native Function objects, methods, and properties and get their typeof.
+
+ var PROPERTY = new Array();
+ var p = 0;
+
+ // try to access properties of primitive types
+
+ PROPERTY[p++] = new Property( "null", null, "null", 0 );
+
+//null.valueOf();
+
+ for ( var i = 0, RESULT; i < PROPERTY.length; i++ ) {
+
+
+ array[item++] = Assert.expectEq(
+ PROPERTY[i].object + ".valueOf()",
+ PROPERTY[i].value+"",
+ ( PROPERTY[i].object.valueOf()+"" ) );
+
+
+ array[item++] = Assert.expectEq(
+ PROPERTY[i].object + ".toString()",
+ PROPERTY[i].string,
+ ( PROPERTY[i].object.toString() ) );
+ }
+ return array;
+}
+
+
+function MyObject( value ) {
+ this.value = value;
+ this.stringValue = value +"";
+ this.numberValue = Number(value);
+ return this;
+}
+function Property( object, value, string, number ) {
+ this.object = object;
+ this.string = String(value);
+ this.number = Number(value);
+ this.value = value;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_4_rt/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_4_rt/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_4_rt/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_4_rt/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_4_rt/output.txt
new file mode 100644
index 000000000..ea6fca0ac
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_4_rt/output.txt
@@ -0,0 +1,2 @@
+null.valueOf() PASSED!
+null.toString() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_4_rt/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_4_rt/test.swf
new file mode 100644
index 000000000..fc5306e96
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_4_rt/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_4_rt/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_4_rt/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_4_rt/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_5/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_5/Test.as
new file mode 100644
index 000000000..7e45275d3
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_5/Test.as
@@ -0,0 +1,59 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_2_1_5";
+// var VERSION = "ECMA_1";
+// var TITLE = "Property Accessors";
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // go through all Native Function objects, methods, and properties and get their typeof.
+
+ var PROPERTY = new Array();
+ var p = 0;
+
+ // try to access properties of primitive types
+
+ PROPERTY[p++] = new Property( new String("hi"), "hi", "hi", NaN );
+ PROPERTY[p++] = new Property( new Number(NaN), NaN, "NaN", NaN );
+ PROPERTY[p++] = new Property( new Number(3), 3, "3", 3 );
+ PROPERTY[p++] = new Property( new Boolean(true), true, "true", 1 );
+ PROPERTY[p++] = new Property( new Boolean(false), false, "false", 0 );
+
+ for ( var i = 0, RESULT; i < PROPERTY.length; i++ ) {
+ array[item++] = Assert.expectEq(
+ PROPERTY[i].object + ".valueOf()",
+ PROPERTY[i].value,
+ (PROPERTY[i].object.valueOf()));
+
+ array[item++] = Assert.expectEq(
+ PROPERTY[i].object + ".toString()",
+ PROPERTY[i].string,
+ (PROPERTY[i].object.toString()));
+
+ }
+ return array;
+}
+
+
+function MyObject( value ) {
+ this.value = value;
+ this.stringValue = value +"";
+ this.numberValue = Number(value);
+ return this;
+}
+function Property( object, value, string, number ) {
+ this.object = object;
+ this.string = String(value);
+ this.number = Number(value);
+ this.value = value;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_5/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_5/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_5/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_5/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_5/output.txt
new file mode 100644
index 000000000..4be39d5ec
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_5/output.txt
@@ -0,0 +1,10 @@
+hi.valueOf() PASSED!
+hi.toString() PASSED!
+NaN.valueOf() PASSED!
+NaN.toString() PASSED!
+3.valueOf() PASSED!
+3.toString() PASSED!
+true.valueOf() PASSED!
+true.toString() PASSED!
+false.valueOf() PASSED!
+false.toString() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_5/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_5/test.swf
new file mode 100644
index 000000000..ab8834cc4
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_5/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_5/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_5/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_1_5/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_10_rt/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_10_rt/Test.as
new file mode 100644
index 000000000..1b649f9d6
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_10_rt/Test.as
@@ -0,0 +1,44 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+import com.adobe.test.Utils;
+
+// var SECTION = "11.2.2-9-n.js";
+// var VERSION = "ECMA_1";
+// var TITLE = "The new operator";
+
+
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ var thisError="no error";
+ try{
+ var m = new Math();
+ }catch(e:Error){
+ thisError = e.toString();
+ }finally{
+ array[item++] = Assert.expectEq(
+ "var m = new Math()",
+ "TypeError: Error #1076",
+ Utils.typeError(thisError) );
+ }
+
+ /*array[item++] = Assert.expectEq(
+ "var m = new Math()",
+ "error",
+ m = new Math() );*/
+ return array;
+}
+
+function TestFunction() {
+ return arguments;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_10_rt/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_10_rt/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_10_rt/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_10_rt/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_10_rt/output.txt
new file mode 100644
index 000000000..875fccb1d
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_10_rt/output.txt
@@ -0,0 +1 @@
+var m = new Math() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_10_rt/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_10_rt/test.swf
new file mode 100644
index 000000000..952150748
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_10_rt/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_10_rt/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_10_rt/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_10_rt/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_11/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_11/Test.as
new file mode 100644
index 000000000..c7c06a88d
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_11/Test.as
@@ -0,0 +1,42 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+
+// var SECTION = "11.2.2-ll.as";
+// var VERSION = "ECMA_1";
+// var TITLE = "The new operator";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ var FUNCTION = function() { return this };
+ f = new FUNCTION;
+ array[item++] = Assert.expectEq(
+ "var FUNCTION = new Function('return this'); f = new FUNCTION(); typeof f",
+ "object",
+ typeof f );
+ return array;
+}
+
+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 );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_11/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_11/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_11/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_11/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_11/output.txt
new file mode 100644
index 000000000..1ceb38663
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_11/output.txt
@@ -0,0 +1 @@
+var FUNCTION = new Function('return this'); f = new FUNCTION(); typeof f PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_11/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_11/test.swf
new file mode 100644
index 000000000..8813cc7f1
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_11/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_11/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_11/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_11/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_12_rt/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_12_rt/Test.as
new file mode 100644
index 000000000..3c83462f4
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_12_rt/Test.as
@@ -0,0 +1,29 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+
+// var SECTION = "11.2.2.l2.as";
+// var VERSION = "ECMA_1";
+// var TITLE = "The new operator";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ var FUNCTION = new Function();
+
+ f = new FUNCTION();
+ array[item++] = Assert.expectEq(
+ "var FUNCTION = new Function(); f = new FUNCTION(); typeof f",
+ "object",
+ typeof f );
+ return array;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_12_rt/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_12_rt/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_12_rt/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_12_rt/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_12_rt/output.txt
new file mode 100644
index 000000000..cebfd00e0
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_12_rt/output.txt
@@ -0,0 +1 @@
+var FUNCTION = new Function(); f = new FUNCTION(); typeof f PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_12_rt/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_12_rt/test.swf
new file mode 100644
index 000000000..eb20f0fb0
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_12_rt/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_12_rt/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_12_rt/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_12_rt/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_1_rt/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_1_rt/Test.as
new file mode 100644
index 000000000..9a4589c6c
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_1_rt/Test.as
@@ -0,0 +1,45 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+import com.adobe.test.Utils;
+
+// var SECTION = "11_2_2_1_n";
+// var VERSION = "ECMA_1";
+// var TITLE = "The new operator";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+
+ var OBJECT = new Object();
+
+ try{
+ var o = new OBJECT();
+ }catch(e:Error){
+ thisError = e.toString();
+ }finally{
+ array[item++] = Assert.expectEq(
+ "var m = new OBJECT()",
+ "TypeError: Error #1007",
+ Utils.typeError(thisError) );
+ }
+
+ /*array[item++] = Assert.expectEq(
+ "OBJECT = new Object; var o = new OBJECT()",
+ "error",
+ o = new OBJECT() );*/
+ return array;
+}
+
+function TestFunction() {
+ return arguments;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_1_rt/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_1_rt/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_1_rt/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_1_rt/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_1_rt/output.txt
new file mode 100644
index 000000000..108b20311
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_1_rt/output.txt
@@ -0,0 +1 @@
+var m = new OBJECT() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_1_rt/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_1_rt/test.swf
new file mode 100644
index 000000000..16de6dc42
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_1_rt/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_1_rt/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_1_rt/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_1_rt/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_2_rt/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_2_rt/Test.as
new file mode 100644
index 000000000..613fe2cae
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_2_rt/Test.as
@@ -0,0 +1,45 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+import com.adobe.test.Utils;
+
+// var SECTION = "e11_2_2_2";
+// var VERSION = "ECMA_1";
+// var TITLE = "The new operator";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+
+ var UNDEFINED = void 0;
+ try{
+ var o = new UNDEFINED();
+ }catch(e:Error){
+ thisError = e.toString();
+ }finally{
+ array[item++] = Assert.expectEq(
+ "var o = new UNDEFINED()",
+ "TypeError: Error #1007",
+ Utils.typeError(thisError) );
+ }
+
+
+ /*array[item++] = Assert.expectEq(
+ "UNDEFINED = void 0; var o = new UNDEFINED()",
+ "error",
+ o = new UNDEFINED() );*/
+ return array;
+}
+
+function TestFunction() {
+ return arguments;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_2_rt/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_2_rt/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_2_rt/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_2_rt/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_2_rt/output.txt
new file mode 100644
index 000000000..ba4bbaa60
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_2_rt/output.txt
@@ -0,0 +1 @@
+var o = new UNDEFINED() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_2_rt/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_2_rt/test.swf
new file mode 100644
index 000000000..f4c52d91b
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_2_rt/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_2_rt/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_2_rt/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_2_rt/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_3_rt/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_3_rt/Test.as
new file mode 100644
index 000000000..8b1d5715a
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_3_rt/Test.as
@@ -0,0 +1,44 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+import com.adobe.test.Utils;
+
+// var SECTION = "11_2_2_3_n";
+// var VERSION = "ECMA_1";
+// var TITLE = "The new operator";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ var NULL = null;
+
+ try{
+ var o = new NULL();
+ }catch(e:Error){
+ thisError = e.toString();
+ }finally{
+ array[item++] = Assert.expectEq(
+ "var o = new NULL()",
+ "TypeError: Error #1007",
+ Utils.typeError(thisError) );
+ }
+
+ /*array[item++] = Assert.expectEq(
+ "NULL = null; var o = new NULL()",
+ "error",
+ o = new NULL() );*/
+ return array;
+}
+
+function TestFunction() {
+ return arguments;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_3_rt/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_3_rt/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_3_rt/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_3_rt/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_3_rt/output.txt
new file mode 100644
index 000000000..c50b81d61
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_3_rt/output.txt
@@ -0,0 +1 @@
+var o = new NULL() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_3_rt/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_3_rt/test.swf
new file mode 100644
index 000000000..c4b28aebf
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_3_rt/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_3_rt/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_3_rt/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_3_rt/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_4_rt/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_4_rt/Test.as
new file mode 100644
index 000000000..e7985d6ca
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_4_rt/Test.as
@@ -0,0 +1,45 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+import com.adobe.test.Utils;
+
+// var SECTION = "e11_2_2_4";
+// var VERSION = "ECMA_1";
+// var TITLE = "The new operator";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+
+ var STRING = "";
+
+ try{
+ var s = new STRING();
+ }catch(e:Error){
+ thisError = e.toString();
+ }finally{
+ array[item++] = Assert.expectEq(
+ "var s = new STRING()",
+ "TypeError: Error #1007",
+ Utils.typeError(thisError) );
+ }
+
+ /*array[item++] = Assert.expectEq(
+ "STRING = '', var s = new STRING()",
+ "error",
+ s = new STRING() );*/
+ return array;
+}
+
+function TestFunction() {
+ return arguments;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_4_rt/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_4_rt/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_4_rt/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_4_rt/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_4_rt/output.txt
new file mode 100644
index 000000000..f0f7871e6
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_4_rt/output.txt
@@ -0,0 +1 @@
+var s = new STRING() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_4_rt/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_4_rt/test.swf
new file mode 100644
index 000000000..b2d5a021d
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_4_rt/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_4_rt/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_4_rt/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_4_rt/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_5_rt/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_5_rt/Test.as
new file mode 100644
index 000000000..f31115999
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_5_rt/Test.as
@@ -0,0 +1,44 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+import com.adobe.test.Utils;
+
+// var SECTION = "e11_2_2_5_n";
+// var VERSION = "ECMA_1";
+// var TITLE = "The new operator";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ var NUMBER = 0;
+
+ try{
+ var n = new NUMBER();
+ }catch(e:Error){
+ thisError = e.toString();
+ }finally{
+ array[item++] = Assert.expectEq(
+ "var n = new NUMBER()",
+ "TypeError: Error #1007",
+ Utils.typeError(thisError) );
+ }
+
+ /*array[item++] = Assert.expectEq(
+ "NUMBER=0, var n = new NUMBER()",
+ "error",
+ n = new NUMBER() );*/
+ return array;
+}
+
+function TestFunction() {
+ return arguments;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_5_rt/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_5_rt/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_5_rt/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_5_rt/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_5_rt/output.txt
new file mode 100644
index 000000000..02bce2ec6
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_5_rt/output.txt
@@ -0,0 +1 @@
+var n = new NUMBER() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_5_rt/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_5_rt/test.swf
new file mode 100644
index 000000000..c8ae6e8c9
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_5_rt/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_5_rt/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_5_rt/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_5_rt/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_6_rt/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_6_rt/Test.as
new file mode 100644
index 000000000..e60bb1a96
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_6_rt/Test.as
@@ -0,0 +1,43 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+import com.adobe.test.Utils;
+// var SECTION = "e11_2_2_6_n";
+// var VERSION = "ECMA_1";
+// var TITLE = "The new operator";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ var BOOLEAN = true;
+
+ try{
+ var b = new BOOLEAN();
+ }catch(e:Error){
+ thisError = e.toString();
+ }finally{
+ array[item++] = Assert.expectEq(
+ "var b = new BOOLEAN()",
+ "TypeError: Error #1007",
+ Utils.typeError(thisError) );
+ }
+
+ /*array[item++] = Assert.expectEq(
+ "BOOLEAN = true; var b = new BOOLEAN()",
+ "error",
+ b = new BOOLEAN() );*/
+ return array;
+}
+
+function TestFunction() {
+ return arguments;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_6_rt/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_6_rt/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_6_rt/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_6_rt/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_6_rt/output.txt
new file mode 100644
index 000000000..092279166
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_6_rt/output.txt
@@ -0,0 +1 @@
+var b = new BOOLEAN() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_6_rt/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_6_rt/test.swf
new file mode 100644
index 000000000..0f24131e1
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_6_rt/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_6_rt/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_6_rt/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_6_rt/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_7_rt/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_7_rt/Test.as
new file mode 100644
index 000000000..4309b0392
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_7_rt/Test.as
@@ -0,0 +1,44 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+import com.adobe.test.Utils;
+
+// var SECTION = "e11_2_2_7_n";
+// var VERSION = "ECMA_1";
+// var TITLE = "The new operator";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ var STRING = new String("hi");
+ try{
+ var s = new STRING();
+ }catch(e:Error){
+ thisError = e.toString();
+ }finally{
+ array[item++] = Assert.expectEq(
+ "var s = new STRING()",
+ "TypeError: Error #1007",
+ Utils.typeError(thisError) );
+ }
+
+
+ /* array[item++] = Assert.expectEq(
+ "var STRING = new String('hi'); var s = new STRING()",
+ "error",
+ s = new STRING() );*/
+ return array;
+}
+
+function TestFunction() {
+ return arguments;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_7_rt/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_7_rt/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_7_rt/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_7_rt/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_7_rt/output.txt
new file mode 100644
index 000000000..f0f7871e6
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_7_rt/output.txt
@@ -0,0 +1 @@
+var s = new STRING() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_7_rt/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_7_rt/test.swf
new file mode 100644
index 000000000..0836507f4
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_7_rt/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_7_rt/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_7_rt/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_7_rt/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_8_rt/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_8_rt/Test.as
new file mode 100644
index 000000000..10c59e38b
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_8_rt/Test.as
@@ -0,0 +1,44 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+import com.adobe.test.Utils;
+
+// var SECTION = "e11_2_2_8_n";
+// var VERSION = "ECMA_1";
+// var TITLE = "The new operator";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ var NUMBER = new Number(1);
+
+ try{
+ var n = new NUMBER();
+ }catch(e:Error){
+ thisError = e.toString();
+ }finally{
+ array[item++] = Assert.expectEq(
+ "var n = new NUMBER()",
+ "TypeError: Error #1007",
+ Utils.typeError(thisError) );
+ }
+
+ /*array[item++] = Assert.expectEq(
+ "var NUMBER = new Number(1); var n = new NUMBER()",
+ "error",
+ n = new NUMBER() );*/
+ return array;
+}
+
+function TestFunction() {
+ return arguments;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_8_rt/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_8_rt/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_8_rt/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_8_rt/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_8_rt/output.txt
new file mode 100644
index 000000000..02bce2ec6
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_8_rt/output.txt
@@ -0,0 +1 @@
+var n = new NUMBER() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_8_rt/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_8_rt/test.swf
new file mode 100644
index 000000000..4934b8368
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_8_rt/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_8_rt/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_8_rt/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_8_rt/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_9_rt/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_9_rt/Test.as
new file mode 100644
index 000000000..f5456fa9a
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_9_rt/Test.as
@@ -0,0 +1,43 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+import com.adobe.test.Utils;
+
+// var SECTION = "e11_2_2_9_n";
+// var VERSION = "ECMA_1";
+// var TITLE = "The new operator";
+
+
+ var testcases = getTestCases();
+
+function getTestCases():Array {
+ var array = new Array();
+ var item = 0;
+
+ var BOOLEAN = new Boolean();
+ try{
+ var b = new BOOLEAN();
+ }catch(e:Error){
+ thisError = e.toString();
+ }finally{
+ array[item++] = Assert.expectEq(
+ "var b = new BOOLEAN()",
+ "TypeError: Error #1007",
+ Utils.typeError(thisError) );
+ }
+
+ /*array[item++] = Assert.expectEq(
+ "var BOOLEAN = new Boolean(); var b = new BOOLEAN()",
+ "error",
+ b = new BOOLEAN() );*/
+ return array;
+}
+
+function TestFunction() {
+ return arguments;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_9_rt/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_9_rt/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_9_rt/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_9_rt/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_9_rt/output.txt
new file mode 100644
index 000000000..092279166
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_9_rt/output.txt
@@ -0,0 +1 @@
+var b = new BOOLEAN() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_9_rt/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_9_rt/test.swf
new file mode 100644
index 000000000..f694ae76d
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_9_rt/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_9_rt/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_9_rt/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_2_9_rt/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_1/Test.as
new file mode 100644
index 000000000..3d62026de
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_1/Test.as
@@ -0,0 +1,49 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+
+// var SECTION = "e11_2_3_1";
+// var VERSION = "ECMA_1";
+// var TITLE = "Function Calls";
+
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // MemberExpression: Identifier
+
+ var OBJECT = true;
+
+ array[item++] = Assert.expectEq(
+ "OBJECT.toString()",
+ "true",
+ OBJECT.toString() );
+
+ // MemberExpression[ Expression]
+
+ array[item++] = Assert.expectEq(
+ "(new Array())['length'].valueOf()",
+ 0,
+ (new Array())["length"].valueOf() );
+
+ // MemberExpression . Identifier
+ array[item++] = Assert.expectEq(
+ "(new Array()).length.valueOf()",
+ 0,
+ (new Array()).length.valueOf() );
+ // new MemberExpression Arguments
+
+ array[item++] = Assert.expectEq(
+ "(new Array(20))['length'].valueOf()",
+ 20,
+ (new Array(20))["length"].valueOf() );
+ return array;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_1/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_1/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_1/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_1/output.txt
new file mode 100644
index 000000000..2804a16d7
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_1/output.txt
@@ -0,0 +1,4 @@
+OBJECT.toString() PASSED!
+(new Array())['length'].valueOf() PASSED!
+(new Array()).length.valueOf() PASSED!
+(new Array(20))['length'].valueOf() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_1/test.swf
new file mode 100644
index 000000000..f5d161b44
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_1/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_1/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_3_rt/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_3_rt/Test.as
new file mode 100644
index 000000000..ea447cc12
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_3_rt/Test.as
@@ -0,0 +1,34 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+import com.adobe.test.Utils;
+
+// var SECTION = "e11_2_3_3_n";
+// var VERSION = "ECMA_1";
+// var TITLE = "Function Calls";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ try{
+ (void 0).valueOf();
+ }catch(e:Error){
+ thisError = e.toString();
+ }finally{
+ array[item++] = Assert.expectEq(
+ "(void 0).valueOf()",
+ "TypeError: Error #1010",
+ Utils.typeError(thisError) );
+ }
+ return array;
+}
+
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_3_rt/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_3_rt/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_3_rt/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_3_rt/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_3_rt/output.txt
new file mode 100644
index 000000000..3deb15322
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_3_rt/output.txt
@@ -0,0 +1 @@
+(void 0).valueOf() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_3_rt/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_3_rt/test.swf
new file mode 100644
index 000000000..4c57194d7
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_3_rt/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_3_rt/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_3_rt/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_3_rt/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_4_rt/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_4_rt/Test.as
new file mode 100644
index 000000000..490fdc8f0
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_4_rt/Test.as
@@ -0,0 +1,34 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+import com.adobe.test.Utils;
+
+// var SECTION = "e11_2_3_4_n";
+// var VERSION = "ECMA_1";
+// var TITLE = "Function Calls";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ try{
+ null.valueOf();
+ }catch(e:Error){
+ thisError = e.toString();
+ }finally{
+ array[item++] = Assert.expectEq(
+ "null.valueOf()",
+ "TypeError: Error #1009",
+ Utils.typeError(thisError) );
+ }
+ return array;
+}
+
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_4_rt/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_4_rt/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_4_rt/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_4_rt/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_4_rt/output.txt
new file mode 100644
index 000000000..2d9c8265f
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_4_rt/output.txt
@@ -0,0 +1 @@
+null.valueOf() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_4_rt/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_4_rt/test.swf
new file mode 100644
index 000000000..67f5fe01e
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_4_rt/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_4_rt/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_4_rt/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_4_rt/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_5/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_5/Test.as
new file mode 100644
index 000000000..678295380
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_5/Test.as
@@ -0,0 +1,25 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+
+// var SECTION = "e11_2_3_5_n";
+// var VERSION = "ECMA_1";
+// var TITLE = "Function Calls";
+
+
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ array[item++] = Assert.expectEq( "true.valueOf()", true, true.valueOf() );
+
+ return array;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_5/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_5/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_5/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_5/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_5/output.txt
new file mode 100644
index 000000000..50ab21437
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_5/output.txt
@@ -0,0 +1 @@
+true.valueOf() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_5/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_5/test.swf
new file mode 100644
index 000000000..81cc0e2b9
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_5/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_5/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_5/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_2_3_5/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_1/Test.as
new file mode 100644
index 000000000..602a79db5
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_1/Test.as
@@ -0,0 +1,173 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11_3_1";
+// var VERSION = "ECMA_1";
+
+
+ testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // special numbers
+ var MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR; MYVAR++", NaN, MYVAR++ );
+ var MYVAR=void 0;
+ array[item++] = Assert.expectEq( "var MYVAR= void 0; MYVAR++", NaN, MYVAR++ );
+ var MYVAR=null;
+ array[item++] = Assert.expectEq( "var MYVAR=null; MYVAR++", 0, MYVAR++ );
+ var MYVAR=true;
+ array[item++] = Assert.expectEq( "var MYVAR=true; MYVAR++", 1, MYVAR++ );
+ var MYVAR=false;
+ array[item++] = Assert.expectEq( "var MYVAR=false; MYVAR++", 0, MYVAR++ );
+
+ // verify return value
+ var MYVAR=Number.POSITIVE_INFINITY;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.POSITIVE_INFINITY;MYVAR++", Number.POSITIVE_INFINITY, MYVAR++ );
+ var MYVAR=Number.NEGATIVE_INFINITY;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.NEGATIVE_INFINITY;MYVAR++", Number.NEGATIVE_INFINITY, MYVAR++ );
+ var MYVAR=Number.NaN;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.NaN;MYVAR++", Number.NaN, MYVAR++ );
+
+ // verify value of variable
+ var MYVAR=Number.POSITIVE_INFINITY;MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.POSITIVE_INFINITY;MYVAR++;MYVAR", Number.POSITIVE_INFINITY, MYVAR );
+ var MYVAR=Number.NEGATIVE_INFINITY;MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.NEGATIVE_INFINITY;MYVAR++;MYVAR", Number.NEGATIVE_INFINITY, MYVAR );
+ var MYVAR=Number.NaN;MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.NaN;MYVAR++;MYVAR", Number.NaN, MYVAR );
+
+ // number primitives
+ var MYVAR=0;
+ array[item++] = Assert.expectEq( "var MYVAR=0;MYVAR++", 0, MYVAR++ );
+ var MYVAR=0.2345;
+ array[item++] = Assert.expectEq( "var MYVAR=0.2345;MYVAR++", 0.2345, MYVAR++ );
+ var MYVAR=-0.2345;
+ array[item++] = Assert.expectEq( "var MYVAR=-0.2345;MYVAR++", -0.2345, MYVAR++ );
+
+ // verify value of variable
+ var MYVAR=0;MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=0;MYVAR++;MYVAR", 1, MYVAR );
+ var MYVAR=0.2345;MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=0.2345;MYVAR++;MYVAR", 1.2345, MYVAR );
+ var MYVAR=-0.2345;MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=-0.2345;MYVAR++;MYVAR", 0.7655000000000001, MYVAR );
+ var MYVAR=0;MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=0;MYVAR++;MYVAR", 1, MYVAR );
+ var MYVAR=0;MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=0;MYVAR++;MYVAR", 1, MYVAR );
+ var MYVAR=0;MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=0;MYVAR++;MYVAR", 1, MYVAR );
+
+ // boolean values
+ // verify return value
+ var MYVAR=true;
+ array[item++] = Assert.expectEq( "var MYVAR=true;MYVAR++", 1, MYVAR++ );
+ var MYVAR=false;
+ array[item++] = Assert.expectEq( "var MYVAR=false;MYVAR++", 0, MYVAR++ );
+ // verify value of variable
+ var MYVAR=true;MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=true;MYVAR++;MYVAR", 2, MYVAR );
+ var MYVAR=false;MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=false;MYVAR++;MYVAR", 1, MYVAR );
+
+ // boolean objects
+ // verify return value
+ var MYVAR=true;
+ array[item++] = Assert.expectEq( "var MYVAR=new Boolean(true);MYVAR++", 1, MYVAR++ );
+ var MYVAR=false;
+ array[item++] = Assert.expectEq( "var MYVAR=new Boolean(false);MYVAR++", 0, MYVAR++ );
+ // verify value of variable
+ var MYVAR=new Boolean(true);MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=new Boolean(true);MYVAR++;MYVAR", 2, MYVAR );
+ var MYVAR=new Boolean(false);MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=new Boolean(false);MYVAR++;MYVAR", 1, MYVAR );
+
+ // string primitives
+
+ var MYVAR = 'string';
+ array[item++] = Assert.expectEq( "var MYVAR='string'; MYVAR++", Number.NaN, MYVAR++ );
+ var MYVAR = '12345';
+ array[item++] = Assert.expectEq( "var MYVAR='12345';MYVAR++", 12345, MYVAR++ );
+ var MYVAR='-12345';
+ array[item++] = Assert.expectEq( "var MYVAR='-12345';MYVAR++", -12345, MYVAR++ );
+ var MYVAR='0Xf';
+ array[item++] = Assert.expectEq( "var MYVAR='0Xf';MYVAR++", 15, MYVAR++ );
+ var MYVAR='077';
+ array[item++] = Assert.expectEq( "var MYVAR='077';MYVAR++", 77, MYVAR++ );
+ var MYVAR='';
+ array[item++] = Assert.expectEq( "var MYVAR=''; MYVAR++", 0, MYVAR++ );
+
+ // verify value of variable
+ var MYVAR='string';MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR='string';MYVAR++;MYVAR", Number.NaN, MYVAR );
+ var MYVAR='12345';MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR='12345';MYVAR++;MYVAR", 12346, MYVAR );
+ var MYVAR='-12345';MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR='-12345';MYVAR++;MYVAR", -12344, MYVAR );
+ var MYVAR='0xf';MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR='0xf';MYVAR++;MYVAR", 16, MYVAR );
+ var MYVAR='077';MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR='077';MYVAR++;MYVAR", 78, MYVAR );
+ var MYVAR='';MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR='';MYVAR++;MYVAR", 1, MYVAR );
+
+ // string objects
+ var MYVAR=new String('string');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('string');MYVAR++", Number.NaN, MYVAR++ );
+ var MYVAR=new String('12345');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('12345');MYVAR++", 12345, MYVAR++ );
+ var MYVAR=new String('-12345');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('-12345');MYVAR++", -12345, MYVAR++ );
+ var MYVAR=new String('0Xf');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('0Xf');MYVAR++", 15, MYVAR++ );
+ var MYVAR=new String('077');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('077');MYVAR++", 77, MYVAR++ );
+ var MYVAR=new String('');
+ array[item++] = Assert.expectEq( "var MYVAR=new String(''); MYVAR++", 0, MYVAR++ );
+
+ // verify value of variable
+ var MYVAR=new String('string');MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('string');MYVAR++;MYVAR", Number.NaN, MYVAR );
+ var MYVAR=new String('12345');MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('12345');MYVAR++;MYVAR", 12346, MYVAR );
+ var MYVAR=new String('-12345');MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('-12345');MYVAR++;MYVAR", -12344, MYVAR );
+ var MYVAR=new String('0xf');MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('0xf');MYVAR++;MYVAR", 16, MYVAR );
+ var MYVAR=new String('077');MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('077');MYVAR++;MYVAR", 78, MYVAR );
+ var MYVAR=new String('');MYVAR++;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('');MYVAR++;MYVAR", 1, MYVAR );
+
+ // array elements
+ var MYVAR = ["string", null, undefined, 300];
+ MYVAR[0]++;
+ array[item++] = Assert.expectEq( "increment a string in array", Number.NaN, MYVAR[0]);
+
+ MYVAR[1]++;
+ array[item++] = Assert.expectEq( "increment a null in array", 1, MYVAR[1]);
+
+ MYVAR[2]++;
+ array[item++] = Assert.expectEq( "increment a undefined in array", Number.NaN, MYVAR[2]);
+
+ MYVAR[3]++;
+ array[item++] = Assert.expectEq( "increment a number in array", 301, MYVAR[3]);
+
+ // object
+ var o = {"num":22};
+ o.x++;
+ array[item++] = Assert.expectEq( "increment a non-existant object property", Number.NaN, o.x);
+ o.num++;
+ array[item++] = Assert.expectEq( "increment an object property", 23, o.num);
+
+
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_1/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_1/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_1/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_1/output.txt
new file mode 100644
index 000000000..52c41cee2
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_1/output.txt
@@ -0,0 +1,58 @@
+var MYVAR; MYVAR++ PASSED!
+var MYVAR= void 0; MYVAR++ PASSED!
+var MYVAR=null; MYVAR++ PASSED!
+var MYVAR=true; MYVAR++ PASSED!
+var MYVAR=false; MYVAR++ PASSED!
+var MYVAR=Number.POSITIVE_INFINITY;MYVAR++ PASSED!
+var MYVAR=Number.NEGATIVE_INFINITY;MYVAR++ PASSED!
+var MYVAR=Number.NaN;MYVAR++ PASSED!
+var MYVAR=Number.POSITIVE_INFINITY;MYVAR++;MYVAR PASSED!
+var MYVAR=Number.NEGATIVE_INFINITY;MYVAR++;MYVAR PASSED!
+var MYVAR=Number.NaN;MYVAR++;MYVAR PASSED!
+var MYVAR=0;MYVAR++ PASSED!
+var MYVAR=0.2345;MYVAR++ PASSED!
+var MYVAR=-0.2345;MYVAR++ PASSED!
+var MYVAR=0;MYVAR++;MYVAR PASSED!
+var MYVAR=0.2345;MYVAR++;MYVAR PASSED!
+var MYVAR=-0.2345;MYVAR++;MYVAR PASSED!
+var MYVAR=0;MYVAR++;MYVAR PASSED!
+var MYVAR=0;MYVAR++;MYVAR PASSED!
+var MYVAR=0;MYVAR++;MYVAR PASSED!
+var MYVAR=true;MYVAR++ PASSED!
+var MYVAR=false;MYVAR++ PASSED!
+var MYVAR=true;MYVAR++;MYVAR PASSED!
+var MYVAR=false;MYVAR++;MYVAR PASSED!
+var MYVAR=new Boolean(true);MYVAR++ PASSED!
+var MYVAR=new Boolean(false);MYVAR++ PASSED!
+var MYVAR=new Boolean(true);MYVAR++;MYVAR PASSED!
+var MYVAR=new Boolean(false);MYVAR++;MYVAR PASSED!
+var MYVAR='string'; MYVAR++ PASSED!
+var MYVAR='12345';MYVAR++ PASSED!
+var MYVAR='-12345';MYVAR++ PASSED!
+var MYVAR='0Xf';MYVAR++ PASSED!
+var MYVAR='077';MYVAR++ PASSED!
+var MYVAR=''; MYVAR++ PASSED!
+var MYVAR='string';MYVAR++;MYVAR PASSED!
+var MYVAR='12345';MYVAR++;MYVAR PASSED!
+var MYVAR='-12345';MYVAR++;MYVAR PASSED!
+var MYVAR='0xf';MYVAR++;MYVAR PASSED!
+var MYVAR='077';MYVAR++;MYVAR PASSED!
+var MYVAR='';MYVAR++;MYVAR PASSED!
+var MYVAR=new String('string');MYVAR++ PASSED!
+var MYVAR=new String('12345');MYVAR++ PASSED!
+var MYVAR=new String('-12345');MYVAR++ PASSED!
+var MYVAR=new String('0Xf');MYVAR++ PASSED!
+var MYVAR=new String('077');MYVAR++ PASSED!
+var MYVAR=new String(''); MYVAR++ PASSED!
+var MYVAR=new String('string');MYVAR++;MYVAR PASSED!
+var MYVAR=new String('12345');MYVAR++;MYVAR PASSED!
+var MYVAR=new String('-12345');MYVAR++;MYVAR PASSED!
+var MYVAR=new String('0xf');MYVAR++;MYVAR PASSED!
+var MYVAR=new String('077');MYVAR++;MYVAR PASSED!
+var MYVAR=new String('');MYVAR++;MYVAR PASSED!
+increment a string in array PASSED!
+increment a null in array PASSED!
+increment a undefined in array PASSED!
+increment a number in array PASSED!
+increment a non-existant object property PASSED!
+increment an object property PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_1/test.swf
new file mode 100644
index 000000000..e25c74890
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_1/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_1/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_2/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_2/Test.as
new file mode 100644
index 000000000..bdf23ea7f
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_2/Test.as
@@ -0,0 +1,198 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_3_2";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // special numbers
+ var MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR; MYVAR--", NaN, MYVAR-- );
+ var MYVAR = void 0;
+ array[item++] = Assert.expectEq( "var MYVAR= void 0; MYVAR--", NaN, MYVAR-- );
+ var MYVAR=null;
+ array[item++] = Assert.expectEq( "var MYVAR=null; MYVAR--", 0, MYVAR-- );
+ var MYVAR=true;
+ array[item++] = Assert.expectEq( "var MYVAR=true; MYVAR--", 1, MYVAR-- );
+ var MYVAR=false;
+ array[item++] = Assert.expectEq( "var MYVAR=false; MYVAR--", 0, MYVAR-- );
+
+ // verify return value
+ var MYVAR=Number.POSITIVE_INFINITY;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.POSITIVE_INFINITY; MYVAR--", Number.POSITIVE_INFINITY, MYVAR-- );
+ var MYVAR=Number.NEGATIVE_INFINITY;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.NEGATIVE_INFINITY;MYVAR--", Number.NEGATIVE_INFINITY, MYVAR-- );
+ var MYVAR=Number.NaN;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.NaN;MYVAR--", Number.NaN, MYVAR-- );
+
+ // verify value of variable
+ var MYVAR=Number.POSITIVE_INFINITY;
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.POSITIVE_INFINITY;MYVAR--;MYVAR", Number.POSITIVE_INFINITY, MYVAR );
+
+ var MYVAR=Number.NEGATIVE_INFINITY;
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.NEGATIVE_INFINITY;MYVAR--;MYVAR", Number.NEGATIVE_INFINITY, MYVAR );
+
+ var MYVAR=Number.NaN;
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.NaN;MYVAR--;MYVAR", Number.NaN, MYVAR );
+
+ // number primitives
+ var MYVAR = 0;
+ array[item++] = Assert.expectEq( "var MYVAR=0;MYVAR--", 0, MYVAR-- );
+ var MYVAR = 0.2345;
+ array[item++] = Assert.expectEq( "var MYVAR=0.2345;MYVAR--", 0.2345, MYVAR-- );
+ var MYVAR = -0.2345;
+ array[item++] = Assert.expectEq( "var MYVAR=-0.2345;MYVAR--", -0.2345, MYVAR-- );
+
+ // verify value of variable
+ var MYVAR=0;
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=0;MYVAR--;MYVAR", -1, MYVAR );
+
+ var MYVAR=0.2345;
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=0.2345;MYVAR--;MYVAR", -0.7655000000000001, MYVAR );
+
+ var MYVAR=-0.2345;
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=-0.2345;MYVAR--;MYVAR", -1.2345, MYVAR );
+
+ var MYVAR=0;
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=0;MYVAR--;MYVAR", -1, MYVAR );
+
+ var MYVAR=0;
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=0;MYVAR--;MYVAR", -1, MYVAR );
+
+ var MYVAR=0;
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=0;MYVAR--;MYVAR", -1, MYVAR );
+
+ // boolean values
+ // verify return value
+ var MYVAR=true;
+ array[item++] = Assert.expectEq( "var MYVAR=true;MYVAR--", 1, MYVAR-- );
+ var MYVAR=false;
+ array[item++] = Assert.expectEq( "var MYVAR=false;MYVAR--", 0, MYVAR-- );
+ // verify value of variable
+
+ var MYVAR=true;
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=true;MYVAR--;MYVAR", 0, MYVAR );
+ var MYVAR=false;
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=false;MYVAR--;MYVAR", -1, MYVAR );
+
+ // boolean objects
+ // verify return value
+ var MYVAR=new Boolean(true);
+ array[item++] = Assert.expectEq( "var MYVAR=new Boolean(true);MYVAR--", 1, MYVAR-- );
+ var MYVAR=new Boolean(false);
+ array[item++] = Assert.expectEq( "var MYVAR=new Boolean(false);MYVAR--", 0, MYVAR-- );
+ // verify value of variable
+ var MYVAR=new Boolean(true);
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=new Boolean(true);MYVAR--;MYVAR", 0, MYVAR );
+ var MYVAR=new Boolean(false);
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=new Boolean(false);MYVAR--;MYVAR", -1, MYVAR );
+
+ // string primitives
+ var MYVAR='string';
+ array[item++] = Assert.expectEq( "var MYVAR='string';MYVAR--", Number.NaN, MYVAR-- );
+ var MYVAR='12345';
+ array[item++] = Assert.expectEq( "var MYVAR='12345';MYVAR--", 12345, MYVAR-- );
+ var MYVAR='-12345';
+ array[item++] = Assert.expectEq( "var MYVAR='-12345';MYVAR--", -12345, MYVAR-- );
+ var MYVAR='0Xf';
+ array[item++] = Assert.expectEq( "var MYVAR='0Xf';MYVAR--", 15, MYVAR-- );
+ var MYVAR='077';
+ array[item++] = Assert.expectEq( "var MYVAR='077';MYVAR--", 77, MYVAR-- );
+ var MYVAR='';
+ array[item++] = Assert.expectEq( "var MYVAR=''; MYVAR--", 0, MYVAR-- );
+
+ // verify value of variable
+ var MYVAR='string';
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR='string';MYVAR--;MYVAR", Number.NaN, MYVAR );
+ var MYVAR='12345';
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR='12345';MYVAR--;MYVAR", 12344, MYVAR );
+ var MYVAR='-12345';
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR='-12345';MYVAR--;MYVAR", -12346, MYVAR );
+ var MYVAR='0xf';
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR='0xf';MYVAR--;MYVAR", 14, MYVAR );
+ var MYVAR='077';
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR='077';MYVAR--;MYVAR", 76, MYVAR );
+ var MYVAR='';
+ MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR='';MYVAR--;MYVAR", -1, MYVAR );
+
+ // string objects
+ var MYVAR=new String('string');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('string');MYVAR--", Number.NaN, MYVAR-- );
+ var MYVAR=new String('12345');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('12345');MYVAR--", 12345, MYVAR-- );
+
+ var MYVAR=new String('-12345');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('-12345');MYVAR--", -12345, MYVAR-- );
+ var MYVAR=new String('0Xf');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('0Xf');MYVAR--", 15, MYVAR-- );
+ var MYVAR=new String('077');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('077');MYVAR--", 77, MYVAR-- );
+ var MYVAR=new String('');
+ array[item++] = Assert.expectEq( "var MYVAR=new String(''); MYVAR--", 0, MYVAR-- );
+
+ // verify value of variable
+ var MYVAR=new String('string');MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('string');MYVAR--;MYVAR", Number.NaN, MYVAR );
+ var MYVAR=new String('12345');MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('12345');MYVAR--;MYVAR", 12344, MYVAR );
+ var MYVAR=new String('-12345');MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('-12345');MYVAR--;MYVAR", -12346, MYVAR );
+ var MYVAR=new String('0xf');MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('0xf');MYVAR--;MYVAR", 14, MYVAR );
+ var MYVAR=new String('077');MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('077');MYVAR--;MYVAR", 76, MYVAR );
+ var MYVAR=new String('');MYVAR--;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('');MYVAR--;MYVAR", -1, MYVAR );
+
+ // array elements
+ var MYVAR = ["string", null, undefined, 300];
+ MYVAR[0]--;
+ array[item++] = Assert.expectEq( "decrement a string in array", Number.NaN, MYVAR[0]);
+
+ MYVAR[1]--;
+ array[item++] = Assert.expectEq( "decrement a null in array", -1, MYVAR[1]);
+
+ MYVAR[2]--;
+ array[item++] = Assert.expectEq( "decrement a undefined in array", Number.NaN, MYVAR[2]);
+
+ MYVAR[3]--;
+ array[item++] = Assert.expectEq( "decrement a number in array", 299, MYVAR[3]);
+
+ // object
+ var o = {"num":22};
+ o.x--;
+ array[item++] = Assert.expectEq( "decrement a non-existant object property", Number.NaN, o.x);
+ o.num--;
+ array[item++] = Assert.expectEq( "decrement an object property", 21, o.num);
+
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_2/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_2/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_2/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_2/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_2/output.txt
new file mode 100644
index 000000000..03184e7a7
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_2/output.txt
@@ -0,0 +1,58 @@
+var MYVAR; MYVAR-- PASSED!
+var MYVAR= void 0; MYVAR-- PASSED!
+var MYVAR=null; MYVAR-- PASSED!
+var MYVAR=true; MYVAR-- PASSED!
+var MYVAR=false; MYVAR-- PASSED!
+var MYVAR=Number.POSITIVE_INFINITY; MYVAR-- PASSED!
+var MYVAR=Number.NEGATIVE_INFINITY;MYVAR-- PASSED!
+var MYVAR=Number.NaN;MYVAR-- PASSED!
+var MYVAR=Number.POSITIVE_INFINITY;MYVAR--;MYVAR PASSED!
+var MYVAR=Number.NEGATIVE_INFINITY;MYVAR--;MYVAR PASSED!
+var MYVAR=Number.NaN;MYVAR--;MYVAR PASSED!
+var MYVAR=0;MYVAR-- PASSED!
+var MYVAR=0.2345;MYVAR-- PASSED!
+var MYVAR=-0.2345;MYVAR-- PASSED!
+var MYVAR=0;MYVAR--;MYVAR PASSED!
+var MYVAR=0.2345;MYVAR--;MYVAR PASSED!
+var MYVAR=-0.2345;MYVAR--;MYVAR PASSED!
+var MYVAR=0;MYVAR--;MYVAR PASSED!
+var MYVAR=0;MYVAR--;MYVAR PASSED!
+var MYVAR=0;MYVAR--;MYVAR PASSED!
+var MYVAR=true;MYVAR-- PASSED!
+var MYVAR=false;MYVAR-- PASSED!
+var MYVAR=true;MYVAR--;MYVAR PASSED!
+var MYVAR=false;MYVAR--;MYVAR PASSED!
+var MYVAR=new Boolean(true);MYVAR-- PASSED!
+var MYVAR=new Boolean(false);MYVAR-- PASSED!
+var MYVAR=new Boolean(true);MYVAR--;MYVAR PASSED!
+var MYVAR=new Boolean(false);MYVAR--;MYVAR PASSED!
+var MYVAR='string';MYVAR-- PASSED!
+var MYVAR='12345';MYVAR-- PASSED!
+var MYVAR='-12345';MYVAR-- PASSED!
+var MYVAR='0Xf';MYVAR-- PASSED!
+var MYVAR='077';MYVAR-- PASSED!
+var MYVAR=''; MYVAR-- PASSED!
+var MYVAR='string';MYVAR--;MYVAR PASSED!
+var MYVAR='12345';MYVAR--;MYVAR PASSED!
+var MYVAR='-12345';MYVAR--;MYVAR PASSED!
+var MYVAR='0xf';MYVAR--;MYVAR PASSED!
+var MYVAR='077';MYVAR--;MYVAR PASSED!
+var MYVAR='';MYVAR--;MYVAR PASSED!
+var MYVAR=new String('string');MYVAR-- PASSED!
+var MYVAR=new String('12345');MYVAR-- PASSED!
+var MYVAR=new String('-12345');MYVAR-- PASSED!
+var MYVAR=new String('0Xf');MYVAR-- PASSED!
+var MYVAR=new String('077');MYVAR-- PASSED!
+var MYVAR=new String(''); MYVAR-- PASSED!
+var MYVAR=new String('string');MYVAR--;MYVAR PASSED!
+var MYVAR=new String('12345');MYVAR--;MYVAR PASSED!
+var MYVAR=new String('-12345');MYVAR--;MYVAR PASSED!
+var MYVAR=new String('0xf');MYVAR--;MYVAR PASSED!
+var MYVAR=new String('077');MYVAR--;MYVAR PASSED!
+var MYVAR=new String('');MYVAR--;MYVAR PASSED!
+decrement a string in array PASSED!
+decrement a null in array PASSED!
+decrement a undefined in array PASSED!
+decrement a number in array PASSED!
+decrement a non-existant object property PASSED!
+decrement an object property PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_2/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_2/test.swf
new file mode 100644
index 000000000..674abbef1
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_2/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_2/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_2/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_3_2/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_1/Test.as
new file mode 100644
index 000000000..a44cd2811
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_1/Test.as
@@ -0,0 +1,70 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+
+
+// var SECTION = "e11_4_1";
+// var VERSION = "ECMA_1";
+// var TITLE = "The delete operator";
+ var obj = new Object();
+
+
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+ var x;
+
+ x=[9,8,7]; delete x[2];
+ var len = x.length;
+ array[item++] = Assert.expectEq( "x=[9,8,7];delete(x[2]);x.length", 3, len );
+ var str = x.toString();
+ array[item++] = Assert.expectEq( "x=[9,8,7];delete(x[2]);x.toString()", "9,8,", str );
+ var obj = new Object();
+ obj.name="Jeffrey";
+ delete obj.name;
+ array[item++] = Assert.expectEq( "obj=new Object();delete obj.name;", undefined, obj.name);
+ // the object obj should be deletable but failed!
+ delete obj;
+ array[item++] = Assert.expectEq( "obj=new Object();delete obj;obj.toString()", "[object Object]", obj.toString());
+
+ //array[item++] = Assert.expectEq( "delete('string primitive')", true, delete("string primitive") );
+ array[item++] = Assert.expectEq( "delete(new String( 'string object' ) )", true, delete(new String("string object")) );
+ array[item++] = Assert.expectEq( "delete(new Number(12345))", true, delete(new Number(12345)) );
+ array[item++] = Assert.expectEq( "delete(Math.PI)", false, delete(Math.PI) );
+ //array[item++] = Assert.expectEq( "delete null ", true, delete null );
+ //array[item++] = Assert.expectEq( "delete(void(0))", true, delete(void(0)) );
+
+ // variables declared with the var statement are not deletable
+ array[item++] = Assert.expectEq( "delete(x=new Date())", true, delete(x=new Date()) );
+ var abc;
+ array[item++] = Assert.expectEq( "var abc; delete abc", false, delete abc );
+ var OB = new MyObject();
+ for ( p in OB ) {
+ array[item++] = Assert.expectEq(
+ "var OB = new MyObject(); for ( p in OB ) { delete OB[p] }",
+ true, delete OB[p] );
+ //trace("after delete: p = "+p+", OB[p] = "+OB[p]);
+ }
+ delete OB;
+ array[item++] = Assert.expectEq( "var OB = new MyObject();delete OB; OB.toString()", "[object Object]", OB.toString());
+ return ( array );
+}
+
+function MyObject() {
+ this.prop1 = true;
+ this.prop2 = false;
+ this.prop3 = null
+ this.prop4 = void 0;
+ this.prop5 = "hi";
+ this.prop6 = 42;
+ this.prop7 = new Date();
+ this.prop8 = Math.PI;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_1/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_1/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_1/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_1/output.txt
new file mode 100644
index 000000000..5614d4fb7
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_1/output.txt
@@ -0,0 +1,18 @@
+x=[9,8,7];delete(x[2]);x.length PASSED!
+x=[9,8,7];delete(x[2]);x.toString() PASSED!
+obj=new Object();delete obj.name; PASSED!
+obj=new Object();delete obj;obj.toString() PASSED!
+delete(new String( 'string object' ) ) PASSED!
+delete(new Number(12345)) PASSED!
+delete(Math.PI) PASSED!
+delete(x=new Date()) PASSED!
+var abc; delete abc PASSED!
+var OB = new MyObject(); for ( p in OB ) { delete OB[p] } PASSED!
+var OB = new MyObject(); for ( p in OB ) { delete OB[p] } PASSED!
+var OB = new MyObject(); for ( p in OB ) { delete OB[p] } PASSED!
+var OB = new MyObject(); for ( p in OB ) { delete OB[p] } PASSED!
+var OB = new MyObject(); for ( p in OB ) { delete OB[p] } PASSED!
+var OB = new MyObject(); for ( p in OB ) { delete OB[p] } PASSED!
+var OB = new MyObject(); for ( p in OB ) { delete OB[p] } PASSED!
+var OB = new MyObject(); for ( p in OB ) { delete OB[p] } PASSED!
+var OB = new MyObject();delete OB; OB.toString() PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_1/test.swf
new file mode 100644
index 000000000..6597c0ae8
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_1/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_1/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_2/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_2/Test.as
new file mode 100644
index 000000000..ac8a67ee8
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_2/Test.as
@@ -0,0 +1,61 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_4_2";
+// var VERSION = "ECMA_1";
+// var TITLE = "The void operator";
+
+
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ array[item++] = Assert.expectEq( "void(new String('string object'))", void 0, void(new String( 'string object' )) );
+ array[item++] = Assert.expectEq( "void('string primitive')", void 0, void("string primitive") );
+ array[item++] = Assert.expectEq( "void(Number.NaN)", void 0, void(Number.NaN) );
+ array[item++] = Assert.expectEq( "void(Number.POSITIVE_INFINITY)", void 0, void(Number.POSITIVE_INFINITY) );
+ array[item++] = Assert.expectEq( "void(1)", void 0, void(1) );
+ array[item++] = Assert.expectEq( "void(0)", void 0, void(0) );
+ array[item++] = Assert.expectEq( "void(-1)", void 0, void(-1) );
+ array[item++] = Assert.expectEq( "void(Number.NEGATIVE_INFINITY)", void 0, void(Number.NEGATIVE_INFINITY) );
+ array[item++] = Assert.expectEq( "void(Math.PI)", void 0, void(Math.PI) );
+ array[item++] = Assert.expectEq( "void(true)", void 0, void(true) );
+ array[item++] = Assert.expectEq( "void(false)", void 0, void(false) );
+ array[item++] = Assert.expectEq( "void(null)", void 0, void(null) );
+ array[item++] = Assert.expectEq( "void new String('string object')", void 0, void new String( 'string object' ) );
+ array[item++] = Assert.expectEq( "void 'string primitive'", void 0, void "string primitive" );
+ array[item++] = Assert.expectEq( "void Number.NaN", void 0, void Number.NaN );
+ array[item++] = Assert.expectEq( "void Number.POSITIVE_INFINITY", void 0, void Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "void 1", void 0, void 1 );
+ array[item++] = Assert.expectEq( "void 0", void 0, void 0 );
+ array[item++] = Assert.expectEq( "void -1", void 0, void -1 );
+ array[item++] = Assert.expectEq( "void Number.NEGATIVE_INFINITY", void 0, void Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "void Math.PI", void 0, void Math.PI );
+ array[item++] = Assert.expectEq( "void true", void 0, void true );
+ array[item++] = Assert.expectEq( "void false", void 0, void false );
+ array[item++] = Assert.expectEq( "void null", void 0, void null );
+
+// array[item++] = Assert.expectEq( "void()", void 0, void() );
+
+ return ( array );
+}
+
+function test() {
+ for ( i = 0; i < testcases.length; i++ ) {
+ testcases[i].passed = writeTestCaseResult(
+ testcases[i].expect,
+ testcases[i].actual,
+ testcases[i].description +" = "+ testcases[i].actual );
+ testcases[i].reason += ( testcases[i].passed ) ? "" : "wrong value "
+ }
+ stopTest();
+ return ( testcases );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_2/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_2/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_2/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_2/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_2/output.txt
new file mode 100644
index 000000000..c3e4e2906
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_2/output.txt
@@ -0,0 +1,24 @@
+void(new String('string object')) PASSED!
+void('string primitive') PASSED!
+void(Number.NaN) PASSED!
+void(Number.POSITIVE_INFINITY) PASSED!
+void(1) PASSED!
+void(0) PASSED!
+void(-1) PASSED!
+void(Number.NEGATIVE_INFINITY) PASSED!
+void(Math.PI) PASSED!
+void(true) PASSED!
+void(false) PASSED!
+void(null) PASSED!
+void new String('string object') PASSED!
+void 'string primitive' PASSED!
+void Number.NaN PASSED!
+void Number.POSITIVE_INFINITY PASSED!
+void 1 PASSED!
+void 0 PASSED!
+void -1 PASSED!
+void Number.NEGATIVE_INFINITY PASSED!
+void Math.PI PASSED!
+void true PASSED!
+void false PASSED!
+void null PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_2/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_2/test.swf
new file mode 100644
index 000000000..e62fb3d39
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_2/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_2/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_2/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_2/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_4/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_4/Test.as
new file mode 100644
index 000000000..e995a4c10
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_4/Test.as
@@ -0,0 +1,151 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_4_4";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // special case: var is not defined
+ var MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR; ++MYVAR", NaN, ++MYVAR );
+ var MYVAR=void 0;
+ array[item++] = Assert.expectEq( "var MYVAR= void 0; ++MYVAR", NaN, ++MYVAR );
+ var MYVAR=null;
+ array[item++] = Assert.expectEq( "var MYVAR=null; ++MYVAR", 1, ++MYVAR );
+ var MYVAR=true;
+ array[item++] = Assert.expectEq( "var MYVAR=true; ++MYVAR", 2, ++MYVAR );
+ var MYVAR=false;
+ array[item++] = Assert.expectEq( "var MYVAR=false; ++MYVAR", 1, ++MYVAR );
+
+ // special numbers
+ // verify return value
+ var MYVAR=Number.POSITIVE_INFINITY;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.POSITIVE_INFINITY;++MYVAR", Number.POSITIVE_INFINITY, ++MYVAR );
+ var MYVAR=Number.NEGATIVE_INFINITY;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.NEGATIVE_INFINITY;++MYVAR", Number.NEGATIVE_INFINITY, ++MYVAR );
+ var MYVAR=Number.NaN;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.NaN;++MYVAR", Number.NaN, ++MYVAR );
+
+ // verify value of variable
+ var MYVAR=Number.POSITIVE_INFINITY;++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.POSITIVE_INFINITY;++MYVAR;MYVAR", Number.POSITIVE_INFINITY, MYVAR );
+ var MYVAR=Number.NEGATIVE_INFINITY;++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.NEGATIVE_INFINITY;++MYVAR;MYVAR", Number.NEGATIVE_INFINITY, MYVAR );
+ var MYVAR=Number.NaN;++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.NaN;++MYVAR;MYVAR", Number.NaN, MYVAR );
+
+
+ // number primitives
+ var MYVAR=0;
+ array[item++] = Assert.expectEq( "var MYVAR=0;++MYVAR", 1, ++MYVAR );
+ var MYVAR=0.2345;
+ array[item++] = Assert.expectEq( "var MYVAR=0.2345;++MYVAR", 1.2345, ++MYVAR );
+ var MYVAR=-0.2345;
+ array[item++] = Assert.expectEq( "var MYVAR=-0.2345;++MYVAR", 0.7655000000000001, ++MYVAR );
+
+ // verify value of variable
+ var MYVAR=0;++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=0;++MYVAR;MYVAR", 1, MYVAR );
+ var MYVAR=0.2345;++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=0.2345;++MYVAR;MYVAR", 1.2345, MYVAR );
+ var MYVAR=-0.2345;++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=-0.2345;++MYVAR;MYVAR", 0.7655000000000001, MYVAR );
+ var MYVAR=0;++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=0;++MYVAR;MYVAR", 1, MYVAR );
+ var MYVAR=0;++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=0;++MYVAR;MYVAR", 1, MYVAR );
+ var MYVAR=0;++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=0;++MYVAR;MYVAR", 1, MYVAR );
+
+ // boolean values
+ // verify return value
+ var MYVAR=true;
+ array[item++] = Assert.expectEq( "var MYVAR=true;++MYVAR", 2, ++MYVAR );
+ var MYVAR=false;
+ array[item++] = Assert.expectEq( "var MYVAR=false;++MYVAR", 1, ++MYVAR );
+ // verify value of variable
+ var MYVAR=true;++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=true;++MYVAR;MYVAR", 2, MYVAR );
+ var MYVAR=false;++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=false;++MYVAR;MYVAR", 1, MYVAR );
+
+ // boolean objects
+ // verify return value
+ var MYVAR=true;
+ array[item++] = Assert.expectEq( "var MYVAR=new Boolean(true);++MYVAR", 2, ++MYVAR );
+ var MYVAR=false;
+ array[item++] = Assert.expectEq( "var MYVAR=new Boolean(false);++MYVAR", 1, ++MYVAR );
+ // verify value of variable
+ var MYVAR=new Boolean(true);++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=new Boolean(true);++MYVAR;MYVAR", 2, MYVAR );
+ var MYVAR=new Boolean(false);++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=new Boolean(false);++MYVAR;MYVAR", 1, MYVAR );
+
+ // string primitives
+ var MYVAR='string';
+ array[item++] = Assert.expectEq( "var MYVAR='string';++MYVAR", Number.NaN, ++MYVAR );
+ var MYVAR='12345';
+ array[item++] = Assert.expectEq( "var MYVAR='12345';++MYVAR", 12346, ++MYVAR );
+ var MYVAR='-12345';
+ array[item++] = Assert.expectEq( "var MYVAR='-12345';++MYVAR", -12344, ++MYVAR );
+ var MYVAR='0Xf';
+ array[item++] = Assert.expectEq( "var MYVAR='0Xf';++MYVAR", 16, ++MYVAR );
+ var MYVAR='077';
+ array[item++] = Assert.expectEq( "var MYVAR='077';++MYVAR", 78, ++MYVAR );
+ var MYVAR='';
+ array[item++] = Assert.expectEq( "var MYVAR=''; ++MYVAR", 1, ++MYVAR );
+
+ // verify value of variable
+ var MYVAR='string';++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR='string';++MYVAR;MYVAR", Number.NaN, MYVAR );
+ var MYVAR='12345';++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR='12345';++MYVAR;MYVAR", 12346, MYVAR );
+ var MYVAR='-12345';++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR='-12345';++MYVAR;MYVAR", -12344, MYVAR );
+ var MYVAR='0xf';++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR='0xf';++MYVAR;MYVAR", 16, MYVAR );
+ var MYVAR='077';++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR='077';++MYVAR;MYVAR", 78, MYVAR );
+ var MYVAR='';++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR='';++MYVAR;MYVAR", 1, MYVAR );
+
+ // string objects
+ var MYVAR=new String('string');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('string');++MYVAR", Number.NaN, ++MYVAR );
+ var MYVAR=new String('12345');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('12345');++MYVAR", 12346, ++MYVAR );
+ var MYVAR=new String('-12345');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('-12345');++MYVAR", -12344, ++MYVAR );
+ var MYVAR=new String('0Xf');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('0Xf');++MYVAR", 16, ++MYVAR );
+ var MYVAR=new String('077');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('077');++MYVAR", 78, ++MYVAR );
+ var MYVAR=new String('');
+ array[item++] = Assert.expectEq( "var MYVAR=new String(''); ++MYVAR", 1, ++MYVAR );
+
+ // verify value of variable
+ var MYVAR=new String('string');++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('string');++MYVAR;MYVAR", Number.NaN, MYVAR );
+ var MYVAR=new String('12345');++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('12345');++MYVAR;MYVAR", 12346, MYVAR );
+ var MYVAR=new String('-12345');++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('-12345');++MYVAR;MYVAR", -12344, MYVAR );
+ var MYVAR=new String('0xf');++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('0xf');++MYVAR;MYVAR", 16, MYVAR );
+ var MYVAR=new String('077');++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('077');++MYVAR;MYVAR", 78, MYVAR );
+ var MYVAR=new String('');++MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('');++MYVAR;MYVAR", 1, MYVAR );
+
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_4/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_4/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_4/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_4/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_4/output.txt
new file mode 100644
index 000000000..2da7c920f
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_4/output.txt
@@ -0,0 +1,52 @@
+var MYVAR; ++MYVAR PASSED!
+var MYVAR= void 0; ++MYVAR PASSED!
+var MYVAR=null; ++MYVAR PASSED!
+var MYVAR=true; ++MYVAR PASSED!
+var MYVAR=false; ++MYVAR PASSED!
+var MYVAR=Number.POSITIVE_INFINITY;++MYVAR PASSED!
+var MYVAR=Number.NEGATIVE_INFINITY;++MYVAR PASSED!
+var MYVAR=Number.NaN;++MYVAR PASSED!
+var MYVAR=Number.POSITIVE_INFINITY;++MYVAR;MYVAR PASSED!
+var MYVAR=Number.NEGATIVE_INFINITY;++MYVAR;MYVAR PASSED!
+var MYVAR=Number.NaN;++MYVAR;MYVAR PASSED!
+var MYVAR=0;++MYVAR PASSED!
+var MYVAR=0.2345;++MYVAR PASSED!
+var MYVAR=-0.2345;++MYVAR PASSED!
+var MYVAR=0;++MYVAR;MYVAR PASSED!
+var MYVAR=0.2345;++MYVAR;MYVAR PASSED!
+var MYVAR=-0.2345;++MYVAR;MYVAR PASSED!
+var MYVAR=0;++MYVAR;MYVAR PASSED!
+var MYVAR=0;++MYVAR;MYVAR PASSED!
+var MYVAR=0;++MYVAR;MYVAR PASSED!
+var MYVAR=true;++MYVAR PASSED!
+var MYVAR=false;++MYVAR PASSED!
+var MYVAR=true;++MYVAR;MYVAR PASSED!
+var MYVAR=false;++MYVAR;MYVAR PASSED!
+var MYVAR=new Boolean(true);++MYVAR PASSED!
+var MYVAR=new Boolean(false);++MYVAR PASSED!
+var MYVAR=new Boolean(true);++MYVAR;MYVAR PASSED!
+var MYVAR=new Boolean(false);++MYVAR;MYVAR PASSED!
+var MYVAR='string';++MYVAR PASSED!
+var MYVAR='12345';++MYVAR PASSED!
+var MYVAR='-12345';++MYVAR PASSED!
+var MYVAR='0Xf';++MYVAR PASSED!
+var MYVAR='077';++MYVAR PASSED!
+var MYVAR=''; ++MYVAR PASSED!
+var MYVAR='string';++MYVAR;MYVAR PASSED!
+var MYVAR='12345';++MYVAR;MYVAR PASSED!
+var MYVAR='-12345';++MYVAR;MYVAR PASSED!
+var MYVAR='0xf';++MYVAR;MYVAR PASSED!
+var MYVAR='077';++MYVAR;MYVAR PASSED!
+var MYVAR='';++MYVAR;MYVAR PASSED!
+var MYVAR=new String('string');++MYVAR PASSED!
+var MYVAR=new String('12345');++MYVAR PASSED!
+var MYVAR=new String('-12345');++MYVAR PASSED!
+var MYVAR=new String('0Xf');++MYVAR PASSED!
+var MYVAR=new String('077');++MYVAR PASSED!
+var MYVAR=new String(''); ++MYVAR PASSED!
+var MYVAR=new String('string');++MYVAR;MYVAR PASSED!
+var MYVAR=new String('12345');++MYVAR;MYVAR PASSED!
+var MYVAR=new String('-12345');++MYVAR;MYVAR PASSED!
+var MYVAR=new String('0xf');++MYVAR;MYVAR PASSED!
+var MYVAR=new String('077');++MYVAR;MYVAR PASSED!
+var MYVAR=new String('');++MYVAR;MYVAR PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_4/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_4/test.swf
new file mode 100644
index 000000000..b54a89afa
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_4/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_4/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_4/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_4/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_5/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_5/Test.as
new file mode 100644
index 000000000..a92565614
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_5/Test.as
@@ -0,0 +1,151 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_4_5";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ //
+ var MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR; --MYVAR", NaN, --MYVAR );
+ var MYVAR=void 0;
+ array[item++] = Assert.expectEq( "var MYVAR= void 0; --MYVAR", NaN, --MYVAR );
+ var MYVAR=null;
+ array[item++] = Assert.expectEq( "var MYVAR=null; --MYVAR", -1, --MYVAR );
+ var MYVAR=true;
+ array[item++] = Assert.expectEq( "var MYVAR=true; --MYVAR", 0, --MYVAR );
+ var MYVAR=false;
+ array[item++] = Assert.expectEq( "var MYVAR=false; --MYVAR", -1, --MYVAR );
+
+ // special numbers
+ // verify return value
+ var MYVAR=Number.POSITIVE_INFINITY;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.POSITIVE_INFINITY;--MYVAR", Number.POSITIVE_INFINITY, --MYVAR );
+ var MYVAR=Number.NEGATIVE_INFINITY;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.NEGATIVE_INFINITY;--MYVAR", Number.NEGATIVE_INFINITY, --MYVAR );
+ var MYVAR=Number.NaN;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.NaN;--MYVAR", Number.NaN, --MYVAR );
+
+ // verify value of variable
+ var MYVAR=Number.POSITIVE_INFINITY;--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.POSITIVE_INFINITY;--MYVAR;MYVAR", Number.POSITIVE_INFINITY, MYVAR );
+ var MYVAR=Number.NEGATIVE_INFINITY;--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.NEGATIVE_INFINITY;--MYVAR;MYVAR", Number.NEGATIVE_INFINITY, MYVAR );
+ var MYVAR=Number.NaN;--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=Number.NaN;--MYVAR;MYVAR", Number.NaN, MYVAR );
+
+
+ // number primitives
+ var MYVAR=0;
+ array[item++] = Assert.expectEq( "var MYVAR=0;--MYVAR", -1, --MYVAR );
+ var MYVAR=0.2345;
+ array[item++] = Assert.expectEq( "var MYVAR=0.2345;--MYVAR", -0.7655000000000001, --MYVAR );
+ var MYVAR=-0.2345;
+ array[item++] = Assert.expectEq( "var MYVAR=-0.2345;--MYVAR", -1.2345, --MYVAR );
+
+ // verify value of variable
+ var MYVAR=0;--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=0;--MYVAR;MYVAR", -1, MYVAR );
+ var MYVAR=0.2345;--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=0.2345;--MYVAR;MYVAR", -0.7655000000000001, MYVAR );
+ var MYVAR=-0.2345;--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=-0.2345;--MYVAR;MYVAR", -1.2345, MYVAR );
+ var MYVAR=0;--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=0;--MYVAR;MYVAR", -1, MYVAR );
+ var MYVAR=0;--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=0;--MYVAR;MYVAR", -1, MYVAR );
+ var MYVAR=0;--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=0;--MYVAR;MYVAR", -1, MYVAR );
+
+ // boolean values
+ // verify return value
+ var MYVAR=true;
+ array[item++] = Assert.expectEq( "var MYVAR=true;--MYVAR", 0, --MYVAR );
+ var MYVAR=false;
+ array[item++] = Assert.expectEq( "var MYVAR=false;--MYVAR", -1, --MYVAR );
+ // verify value of variable
+ var MYVAR=true;--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=true;--MYVAR;MYVAR", 0, MYVAR );
+ var MYVAR=false;--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=false;--MYVAR;MYVAR", -1, MYVAR );
+
+ // boolean objects
+ // verify return value
+ var MYVAR=true;
+ array[item++] = Assert.expectEq( "var MYVAR=new Boolean(true);--MYVAR", 0, --MYVAR );
+ var MYVAR=false;
+ array[item++] = Assert.expectEq( "var MYVAR=new Boolean(false);--MYVAR", -1, --MYVAR );
+ // verify value of variable
+ var MYVAR=new Boolean(true);--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=new Boolean(true);--MYVAR;MYVAR", 0, MYVAR );
+ var MYVAR=new Boolean(false);--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=new Boolean(false);--MYVAR;MYVAR", -1, MYVAR );
+
+ // string primitives
+ var MYVAR='string';
+ array[item++] = Assert.expectEq( "var MYVAR='string';--MYVAR", Number.NaN, --MYVAR );
+ var MYVAR='12345';
+ array[item++] = Assert.expectEq( "var MYVAR='12345';--MYVAR", 12344, --MYVAR );
+ var MYVAR='-12345';
+ array[item++] = Assert.expectEq( "var MYVAR='-12345';--MYVAR", -12346, --MYVAR );
+ var MYVAR='0Xf';
+ array[item++] = Assert.expectEq( "var MYVAR='0Xf';--MYVAR", 14, --MYVAR );
+ var MYVAR='077';
+ array[item++] = Assert.expectEq( "var MYVAR='077';--MYVAR", 76, --MYVAR );
+ var MYVAR='';
+ array[item++] = Assert.expectEq( "var MYVAR=''; --MYVAR", -1, --MYVAR );
+
+ // verify value of variable
+ var MYVAR='string';--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR='string';--MYVAR;MYVAR", Number.NaN, MYVAR );
+ var MYVAR='12345';--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR='12345';--MYVAR;MYVAR", 12344, MYVAR );
+ var MYVAR='-12345';--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR='-12345';--MYVAR;MYVAR", -12346, MYVAR );
+ var MYVAR='0xf';--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR='0xf';--MYVAR;MYVAR", 14, MYVAR );
+ var MYVAR='077';--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR='077';--MYVAR;MYVAR", 76, MYVAR );
+ var MYVAR='';--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR='';--MYVAR;MYVAR", -1, MYVAR );
+
+ // string objects
+ var MYVAR=new String('string');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('string');--MYVAR", Number.NaN, --MYVAR );
+ var MYVAR=new String('12345');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('12345');--MYVAR", 12344, --MYVAR );
+ var MYVAR=new String('-12345');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('-12345');--MYVAR", -12346, --MYVAR );
+ var MYVAR=new String('0Xf');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('0Xf');--MYVAR", 14, --MYVAR );
+ var MYVAR=new String('077');
+ array[item++] = Assert.expectEq( "var MYVAR=new String('077');--MYVAR", 76, --MYVAR );
+ var MYVAR=new String('');
+ array[item++] = Assert.expectEq( "var MYVAR=new String(''); --MYVAR", -1, --MYVAR );
+
+ // verify value of variable
+ var MYVAR=new String('string');--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('string');--MYVAR;MYVAR", Number.NaN, MYVAR );
+ var MYVAR=new String('12345');--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('12345');--MYVAR;MYVAR", 12344, MYVAR );
+ var MYVAR=new String('-12345');--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('-12345');--MYVAR;MYVAR", -12346, MYVAR );
+ var MYVAR=new String('0xf');--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('0xf');--MYVAR;MYVAR", 14, MYVAR );
+ var MYVAR=new String('077');--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('077');--MYVAR;MYVAR", 76, MYVAR );
+ var MYVAR=new String('');--MYVAR;
+ array[item++] = Assert.expectEq( "var MYVAR=new String('');--MYVAR;MYVAR", -1, MYVAR );
+
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_5/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_5/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_5/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_5/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_5/output.txt
new file mode 100644
index 000000000..c30ebec8f
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_5/output.txt
@@ -0,0 +1,52 @@
+var MYVAR; --MYVAR PASSED!
+var MYVAR= void 0; --MYVAR PASSED!
+var MYVAR=null; --MYVAR PASSED!
+var MYVAR=true; --MYVAR PASSED!
+var MYVAR=false; --MYVAR PASSED!
+var MYVAR=Number.POSITIVE_INFINITY;--MYVAR PASSED!
+var MYVAR=Number.NEGATIVE_INFINITY;--MYVAR PASSED!
+var MYVAR=Number.NaN;--MYVAR PASSED!
+var MYVAR=Number.POSITIVE_INFINITY;--MYVAR;MYVAR PASSED!
+var MYVAR=Number.NEGATIVE_INFINITY;--MYVAR;MYVAR PASSED!
+var MYVAR=Number.NaN;--MYVAR;MYVAR PASSED!
+var MYVAR=0;--MYVAR PASSED!
+var MYVAR=0.2345;--MYVAR PASSED!
+var MYVAR=-0.2345;--MYVAR PASSED!
+var MYVAR=0;--MYVAR;MYVAR PASSED!
+var MYVAR=0.2345;--MYVAR;MYVAR PASSED!
+var MYVAR=-0.2345;--MYVAR;MYVAR PASSED!
+var MYVAR=0;--MYVAR;MYVAR PASSED!
+var MYVAR=0;--MYVAR;MYVAR PASSED!
+var MYVAR=0;--MYVAR;MYVAR PASSED!
+var MYVAR=true;--MYVAR PASSED!
+var MYVAR=false;--MYVAR PASSED!
+var MYVAR=true;--MYVAR;MYVAR PASSED!
+var MYVAR=false;--MYVAR;MYVAR PASSED!
+var MYVAR=new Boolean(true);--MYVAR PASSED!
+var MYVAR=new Boolean(false);--MYVAR PASSED!
+var MYVAR=new Boolean(true);--MYVAR;MYVAR PASSED!
+var MYVAR=new Boolean(false);--MYVAR;MYVAR PASSED!
+var MYVAR='string';--MYVAR PASSED!
+var MYVAR='12345';--MYVAR PASSED!
+var MYVAR='-12345';--MYVAR PASSED!
+var MYVAR='0Xf';--MYVAR PASSED!
+var MYVAR='077';--MYVAR PASSED!
+var MYVAR=''; --MYVAR PASSED!
+var MYVAR='string';--MYVAR;MYVAR PASSED!
+var MYVAR='12345';--MYVAR;MYVAR PASSED!
+var MYVAR='-12345';--MYVAR;MYVAR PASSED!
+var MYVAR='0xf';--MYVAR;MYVAR PASSED!
+var MYVAR='077';--MYVAR;MYVAR PASSED!
+var MYVAR='';--MYVAR;MYVAR PASSED!
+var MYVAR=new String('string');--MYVAR PASSED!
+var MYVAR=new String('12345');--MYVAR PASSED!
+var MYVAR=new String('-12345');--MYVAR PASSED!
+var MYVAR=new String('0Xf');--MYVAR PASSED!
+var MYVAR=new String('077');--MYVAR PASSED!
+var MYVAR=new String(''); --MYVAR PASSED!
+var MYVAR=new String('string');--MYVAR;MYVAR PASSED!
+var MYVAR=new String('12345');--MYVAR;MYVAR PASSED!
+var MYVAR=new String('-12345');--MYVAR;MYVAR PASSED!
+var MYVAR=new String('0xf');--MYVAR;MYVAR PASSED!
+var MYVAR=new String('077');--MYVAR;MYVAR PASSED!
+var MYVAR=new String('');--MYVAR;MYVAR PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_5/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_5/test.swf
new file mode 100644
index 000000000..0e7171052
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_5/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_5/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_5/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_5/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_6/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_6/Test.as
new file mode 100644
index 000000000..00d962fb0
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_6/Test.as
@@ -0,0 +1,264 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+
+// var SECTION = "e11_4_6";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+ var BUGNUMBER="77391";
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+ array[item++] = Assert.expectEq( "+('a string')", Number.NaN, +("a string") );
+ array[item++] = Assert.expectEq( "+('')", 0, +("") );
+ array[item++] = Assert.expectEq( "+(' ')", 0, +(" ") );
+ array[item++] = Assert.expectEq( "+(\\t)", 0, +("\t") );
+ array[item++] = Assert.expectEq( "+(\\n)", 0, +("\n") );
+ array[item++] = Assert.expectEq( "+(\\r)", 0, +("\r") );
+ array[item++] = Assert.expectEq( "+(\\f)", 0, +("\f") );
+
+ array[item++] = Assert.expectEq( "+(String.fromCharCode(0x0009)", 0, +(String.fromCharCode(0x0009)) );
+ array[item++] = Assert.expectEq( "+(String.fromCharCode(0x0020)", 0, +(String.fromCharCode(0x0020)) );
+ array[item++] = Assert.expectEq( "+(String.fromCharCode(0x000C)", 0, +(String.fromCharCode(0x000C)) );
+ array[item++] = Assert.expectEq( "+(String.fromCharCode(0x000B)", 0, +(String.fromCharCode(0x000B)) );
+ array[item++] = Assert.expectEq( "+(String.fromCharCode(0x000D)", 0, +(String.fromCharCode(0x000D)) );
+ array[item++] = Assert.expectEq( "+(String.fromCharCode(0x000A)", 0, +(String.fromCharCode(0x000A)) );
+
+ // a StringNumericLiteral may be preceeded or followed by whitespace and/or
+ // line terminators
+
+ array[item++] = Assert.expectEq( "+( ' ' + 999 )", 999, +( ' '+999) );
+ array[item++] = Assert.expectEq( "+( '\\n' + 999 )", 999, +( '\n' +999) );
+ array[item++] = Assert.expectEq( "+( '\\r' + 999 )", 999, +( '\r' +999) );
+ array[item++] = Assert.expectEq( "+( '\\t' + 999 )", 999, +( '\t' +999) );
+ array[item++] = Assert.expectEq( "+( '\\f' + 999 )", 999, +( '\f' +999) );
+
+ array[item++] = Assert.expectEq( "+( 999 + ' ' )", 999, +( 999+' ') );
+ array[item++] = Assert.expectEq( "+( 999 + '\\n' )", 999, +( 999+'\n' ) );
+ array[item++] = Assert.expectEq( "+( 999 + '\\r' )", 999, +( 999+'\r' ) );
+ array[item++] = Assert.expectEq( "+( 999 + '\\t' )", 999, +( 999+'\t' ) );
+ array[item++] = Assert.expectEq( "+( 999 + '\\f' )", 999, +( 999+'\f' ) );
+
+ array[item++] = Assert.expectEq( "+( '\\n' + 999 + '\\n' )", 999, +( '\n' +999+'\n' ) );
+ array[item++] = Assert.expectEq( "+( '\\r' + 999 + '\\r' )", 999, +( '\r' +999+'\r' ) );
+ array[item++] = Assert.expectEq( "+( '\\t' + 999 + '\\t' )", 999, +( '\t' +999+'\t' ) );
+ array[item++] = Assert.expectEq( "+( '\\f' + 999 + '\\f' )", 999, +( '\f' +999+'\f' ) );
+
+ array[item++] = Assert.expectEq( "+( ' ' + '999' )", 999, +( ' '+'999') );
+ array[item++] = Assert.expectEq( "+( '\\n' + '999' )", 999, +( '\n' +'999') );
+ array[item++] = Assert.expectEq( "+( '\\r' + '999' )", 999, +( '\r' +'999') );
+ array[item++] = Assert.expectEq( "+( '\\t' + '999' )", 999, +( '\t' +'999') );
+ array[item++] = Assert.expectEq( "+( '\\f' + '999' )", 999, +( '\f' +'999') );
+
+ array[item++] = Assert.expectEq( "+( '999' + ' ' )", 999, +( '999'+' ') );
+ array[item++] = Assert.expectEq( "+( '999' + '\\n' )", 999, +( '999'+'\n' ) );
+ array[item++] = Assert.expectEq( "+( '999' + '\\r' )", 999, +( '999'+'\r' ) );
+ array[item++] = Assert.expectEq( "+( '999' + '\\t' )", 999, +( '999'+'\t' ) );
+ array[item++] = Assert.expectEq( "+( '999' + '\\f' )", 999, +( '999'+'\f' ) );
+
+ array[item++] = Assert.expectEq( "+( '\\n' + '999' + '\\n' )", 999, +( '\n' +'999'+'\n' ) );
+ array[item++] = Assert.expectEq( "+( '\\r' + '999' + '\\r' )", 999, +( '\r' +'999'+'\r' ) );
+ array[item++] = Assert.expectEq( "+( '\\t' + '999' + '\\t' )", 999, +( '\t' +'999'+'\t' ) );
+ array[item++] = Assert.expectEq( "+( '\\f' + '999' + '\\f' )", 999, +( '\f' +'999'+'\f' ) );
+
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x0009) + '99' )", 99, +( String.fromCharCode(0x0009) + '99' ) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x0020) + '99' )", 99, +( String.fromCharCode(0x0020) + '99' ) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x000C) + '99' )", 99, +( String.fromCharCode(0x000C) + '99' ) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x000B) + '99' )", 99, +( String.fromCharCode(0x000B) + '99' ) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x000D) + '99' )", 99, +( String.fromCharCode(0x000D) + '99' ) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x000A) + '99' )", 99, +( String.fromCharCode(0x000A) + '99' ) );
+
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x0009)", 99, +( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x0009)) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x0020) + '99' + String.fromCharCode(0x0020)", 99, +( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x0020)) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x000C) + '99' + String.fromCharCode(0x000C)", 99, +( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x000C)) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x000D) + '99' + String.fromCharCode(0x000D)", 99, +( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x000D)) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x000B) + '99' + String.fromCharCode(0x000B)", 99, +( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x000B)) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x000A) + '99' + String.fromCharCode(0x000A)", 99, +( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x000A)) );
+
+ array[item++] = Assert.expectEq( "+( '99' + String.fromCharCode(0x0009)", 99, +( '99' + String.fromCharCode(0x0009)) );
+ array[item++] = Assert.expectEq( "+( '99' + String.fromCharCode(0x0020)", 99, +( '99' + String.fromCharCode(0x0020)) );
+ array[item++] = Assert.expectEq( "+( '99' + String.fromCharCode(0x000C)", 99, +( '99' + String.fromCharCode(0x000C)) );
+ array[item++] = Assert.expectEq( "+( '99' + String.fromCharCode(0x000D)", 99, +( '99' + String.fromCharCode(0x000D)) );
+ array[item++] = Assert.expectEq( "+( '99' + String.fromCharCode(0x000B)", 99, +( '99' + String.fromCharCode(0x000B)) );
+ array[item++] = Assert.expectEq( "+( '99' + String.fromCharCode(0x000A)", 99, +( '99' + String.fromCharCode(0x000A)) );
+
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x0009) + 99 )", 99, +( String.fromCharCode(0x0009) + 99 ) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x0020) + 99 )", 99, +( String.fromCharCode(0x0020) + 99 ) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x000C) + 99 )", 99, +( String.fromCharCode(0x000C) + 99 ) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x000B) + 99 )", 99, +( String.fromCharCode(0x000B) + 99 ) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x000D) + 99 )", 99, +( String.fromCharCode(0x000D) + 99 ) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x000A) + 99 )", 99, +( String.fromCharCode(0x000A) + 99 ) );
+
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x0009)", 99, +( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x0009)) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x0020) + 99 + String.fromCharCode(0x0020)", 99, +( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x0020)) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x000C) + 99 + String.fromCharCode(0x000C)", 99, +( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x000C)) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x000D) + 99 + String.fromCharCode(0x000D)", 99, +( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x000D)) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x000B) + 99 + String.fromCharCode(0x000B)", 99, +( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x000B)) );
+ array[item++] = Assert.expectEq( "+( String.fromCharCode(0x000A) + 99 + String.fromCharCode(0x000A)", 99, +( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x000A)) );
+
+ array[item++] = Assert.expectEq( "+( 99 + String.fromCharCode(0x0009)", 99, +( 99 + String.fromCharCode(0x0009)) );
+ array[item++] = Assert.expectEq( "+( 99 + String.fromCharCode(0x0020)", 99, +( 99 + String.fromCharCode(0x0020)) );
+ array[item++] = Assert.expectEq( "+( 99 + String.fromCharCode(0x000C)", 99, +( 99 + String.fromCharCode(0x000C)) );
+ array[item++] = Assert.expectEq( "+( 99 + String.fromCharCode(0x000D)", 99, +( 99 + String.fromCharCode(0x000D)) );
+ array[item++] = Assert.expectEq( "+( 99 + String.fromCharCode(0x000B)", 99, +( 99 + String.fromCharCode(0x000B)) );
+ array[item++] = Assert.expectEq( "+( 99 + String.fromCharCode(0x000A)", 99, +( 99 + String.fromCharCode(0x000A)) );
+
+
+ // StrNumericLiteral:::StrDecimalLiteral:::Infinity
+
+ array[item++] = Assert.expectEq( "+('Infinity')", Math.pow(10,10000), +("Infinity") );
+ array[item++] = Assert.expectEq( "+('-Infinity')", -Math.pow(10,10000), +("-Infinity") );
+ array[item++] = Assert.expectEq( "+('+Infinity')", Math.pow(10,10000), +("+Infinity") );
+
+ // StrNumericLiteral::: StrDecimalLiteral ::: DecimalDigits . DecimalDigits opt ExponentPart opt
+
+ array[item++] = Assert.expectEq( "+('0')", 0, +("0") );
+ array[item++] = Assert.expectEq( "+('-0')", -0, +("-0") );
+ array[item++] = Assert.expectEq( "+('+0')", 0, +("+0") );
+
+ array[item++] = Assert.expectEq( "+('1')", 1, +("1") );
+ array[item++] = Assert.expectEq( "+('-1')", -1, +("-1") );
+ array[item++] = Assert.expectEq( "+('+1')", 1, +("+1") );
+
+ array[item++] = Assert.expectEq( "+('2')", 2, +("2") );
+ array[item++] = Assert.expectEq( "+('-2')", -2, +("-2") );
+ array[item++] = Assert.expectEq( "+('+2')", 2, +("+2") );
+
+ array[item++] = Assert.expectEq( "+('3')", 3, +("3") );
+ array[item++] = Assert.expectEq( "+('-3')", -3, +("-3") );
+ array[item++] = Assert.expectEq( "+('+3')", 3, +("+3") );
+
+ array[item++] = Assert.expectEq( "+('4')", 4, +("4") );
+ array[item++] = Assert.expectEq( "+('-4')", -4, +("-4") );
+ array[item++] = Assert.expectEq( "+('+4')", 4, +("+4") );
+
+ array[item++] = Assert.expectEq( "+('5')", 5, +("5") );
+ array[item++] = Assert.expectEq( "+('-5')", -5, +("-5") );
+ array[item++] = Assert.expectEq( "+('+5')", 5, +("+5") );
+
+ array[item++] = Assert.expectEq( "+('6')", 6, +("6") );
+ array[item++] = Assert.expectEq( "+('-6')", -6, +("-6") );
+ array[item++] = Assert.expectEq( "+('+6')", 6, +("+6") );
+
+ array[item++] = Assert.expectEq( "+('7')", 7, +("7") );
+ array[item++] = Assert.expectEq( "+('-7')", -7, +("-7") );
+ array[item++] = Assert.expectEq( "+('+7')", 7, +("+7") );
+
+ array[item++] = Assert.expectEq( "+('8')", 8, +("8") );
+ array[item++] = Assert.expectEq( "+('-8')", -8, +("-8") );
+ array[item++] = Assert.expectEq( "+('+8')", 8, +("+8") );
+
+ array[item++] = Assert.expectEq( "+('9')", 9, +("9") );
+ array[item++] = Assert.expectEq( "+('-9')", -9, +("-9") );
+ array[item++] = Assert.expectEq( "+('+9')", 9, +("+9") );
+
+ array[item++] = Assert.expectEq( "+('3.14159')", 3.14159, +("3.14159") );
+ array[item++] = Assert.expectEq( "+('-3.14159')", -3.14159, +("-3.14159") );
+ array[item++] = Assert.expectEq( "+('+3.14159')", 3.14159, +("+3.14159") );
+
+ array[item++] = Assert.expectEq( "+('3.')", 3, +("3.") );
+ array[item++] = Assert.expectEq( "+('-3.')", -3, +("-3.") );
+ array[item++] = Assert.expectEq( "+('+3.')", 3, +("+3.") );
+
+ array[item++] = Assert.expectEq( "+('3.e1')", 30, +("3.e1") );
+ array[item++] = Assert.expectEq( "+('-3.e1')", -30, +("-3.e1") );
+ array[item++] = Assert.expectEq( "+('+3.e1')", 30, +("+3.e1") );
+
+ array[item++] = Assert.expectEq( "+('3.e+1')", 30, +("3.e+1") );
+ array[item++] = Assert.expectEq( "+('-3.e+1')", -30, +("-3.e+1") );
+ array[item++] = Assert.expectEq( "+('+3.e+1')", 30, +("+3.e+1") );
+
+ array[item++] = Assert.expectEq( "+('3.e-1')", .30, +("3.e-1") );
+ array[item++] = Assert.expectEq( "+('-3.e-1')", -.30, +("-3.e-1") );
+ array[item++] = Assert.expectEq( "+('+3.e-1')", .30, +("+3.e-1") );
+
+ // StrDecimalLiteral::: .DecimalDigits ExponentPart opt
+
+ array[item++] = Assert.expectEq( "+('.00001')", 0.00001, +(".00001") );
+ array[item++] = Assert.expectEq( "+('+.00001')", 0.00001, +("+.00001") );
+ array[item++] = Assert.expectEq( "+('-0.0001')", -0.00001, +("-.00001") );
+
+ array[item++] = Assert.expectEq( "+('.01e2')", 1, +(".01e2") );
+ array[item++] = Assert.expectEq( "+('+.01e2')", 1, +("+.01e2") );
+ array[item++] = Assert.expectEq( "+('-.01e2')", -1, +("-.01e2") );
+
+ array[item++] = Assert.expectEq( "+('.01e+2')", 1, +(".01e+2") );
+ array[item++] = Assert.expectEq( "+('+.01e+2')", 1, +("+.01e+2") );
+ array[item++] = Assert.expectEq( "+('-.01e+2')", -1, +("-.01e+2") );
+
+ array[item++] = Assert.expectEq( "+('.01e-2')", 0.0001, +(".01e-2") );
+ array[item++] = Assert.expectEq( "+('+.01e-2')", 0.0001, +("+.01e-2") );
+ array[item++] = Assert.expectEq( "+('-.01e-2')", -0.0001, +("-.01e-2") );
+
+ // StrDecimalLiteral::: DecimalDigits ExponentPart opt
+
+ array[item++] = Assert.expectEq( "+('1234e5')", 123400000, +("1234e5") );
+ array[item++] = Assert.expectEq( "+('+1234e5')", 123400000, +("+1234e5") );
+ array[item++] = Assert.expectEq( "+('-1234e5')", -123400000, +("-1234e5") );
+
+ array[item++] = Assert.expectEq( "+('1234e+5')", 123400000, +("1234e+5") );
+ array[item++] = Assert.expectEq( "+('+1234e+5')", 123400000, +("+1234e+5") );
+ array[item++] = Assert.expectEq( "+('-1234e+5')", -123400000, +("-1234e+5") );
+
+ array[item++] = Assert.expectEq( "+('1234e-5')", 0.01234, +("1234e-5") );
+ array[item++] = Assert.expectEq( "+('+1234e-5')", 0.01234, +("+1234e-5") );
+ array[item++] = Assert.expectEq( "+('-1234e-5')", -0.01234, +("-1234e-5") );
+
+ // StrNumericLiteral::: HexIntegerLiteral
+
+ array[item++] = Assert.expectEq( "+('0x0')", 0, +("0x0"));
+ array[item++] = Assert.expectEq( "+('0x1')", 1, +("0x1"));
+ array[item++] = Assert.expectEq( "+('0x2')", 2, +("0x2"));
+ array[item++] = Assert.expectEq( "+('0x3')", 3, +("0x3"));
+ array[item++] = Assert.expectEq( "+('0x4')", 4, +("0x4"));
+ array[item++] = Assert.expectEq( "+('0x5')", 5, +("0x5"));
+ array[item++] = Assert.expectEq( "+('0x6')", 6, +("0x6"));
+ array[item++] = Assert.expectEq( "+('0x7')", 7, +("0x7"));
+ array[item++] = Assert.expectEq( "+('0x8')", 8, +("0x8"));
+ array[item++] = Assert.expectEq( "+('0x9')", 9, +("0x9"));
+ array[item++] = Assert.expectEq( "+('0xa')", 10, +("0xa"));
+ array[item++] = Assert.expectEq( "+('0xb')", 11, +("0xb"));
+ array[item++] = Assert.expectEq( "+('0xc')", 12, +("0xc"));
+ array[item++] = Assert.expectEq( "+('0xd')", 13, +("0xd"));
+ array[item++] = Assert.expectEq( "+('0xe')", 14, +("0xe"));
+ array[item++] = Assert.expectEq( "+('0xf')", 15, +("0xf"));
+ array[item++] = Assert.expectEq( "+('0xA')", 10, +("0xA"));
+ array[item++] = Assert.expectEq( "+('0xB')", 11, +("0xB"));
+ array[item++] = Assert.expectEq( "+('0xC')", 12, +("0xC"));
+ array[item++] = Assert.expectEq( "+('0xD')", 13, +("0xD"));
+ array[item++] = Assert.expectEq( "+('0xE')", 14, +("0xE"));
+ array[item++] = Assert.expectEq( "+('0xF')", 15, +("0xF"));
+
+ array[item++] = Assert.expectEq( "+('0X0')", 0, +("0X0"));
+ array[item++] = Assert.expectEq( "+('0X1')", 1, +("0X1"));
+ array[item++] = Assert.expectEq( "+('0X2')", 2, +("0X2"));
+ array[item++] = Assert.expectEq( "+('0X3')", 3, +("0X3"));
+ array[item++] = Assert.expectEq( "+('0X4')", 4, +("0X4"));
+ array[item++] = Assert.expectEq( "+('0X5')", 5, +("0X5"));
+ array[item++] = Assert.expectEq( "+('0X6')", 6, +("0X6"));
+ array[item++] = Assert.expectEq( "+('0X7')", 7, +("0X7"));
+ array[item++] = Assert.expectEq( "+('0X8')", 8, +("0X8"));
+ array[item++] = Assert.expectEq( "+('0X9')", 9, +("0X9"));
+ array[item++] = Assert.expectEq( "+('0Xa')", 10, +("0Xa"));
+ array[item++] = Assert.expectEq( "+('0Xb')", 11, +("0Xb"));
+ array[item++] = Assert.expectEq( "+('0Xc')", 12, +("0Xc"));
+ array[item++] = Assert.expectEq( "+('0Xd')", 13, +("0Xd"));
+ array[item++] = Assert.expectEq( "+('0Xe')", 14, +("0Xe"));
+ array[item++] = Assert.expectEq( "+('0Xf')", 15, +("0Xf"));
+ array[item++] = Assert.expectEq( "+('0XA')", 10, +("0XA"));
+ array[item++] = Assert.expectEq( "+('0XB')", 11, +("0XB"));
+ array[item++] = Assert.expectEq( "+('0XC')", 12, +("0XC"));
+ array[item++] = Assert.expectEq( "+('0XD')", 13, +("0XD"));
+ array[item++] = Assert.expectEq( "+('0XE')", 14, +("0XE"));
+ array[item++] = Assert.expectEq( "+('0XF')", 15, +("0XF"));
+
+ return array;
+
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_6/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_6/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_6/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_6/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_6/output.txt
new file mode 100644
index 000000000..b63ab0740
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_6/output.txt
@@ -0,0 +1,190 @@
++('a string') PASSED!
++('') PASSED!
++(' ') PASSED!
++(\t) PASSED!
++(\n) PASSED!
++(\r) PASSED!
++(\f) PASSED!
++(String.fromCharCode(0x0009) PASSED!
++(String.fromCharCode(0x0020) PASSED!
++(String.fromCharCode(0x000C) PASSED!
++(String.fromCharCode(0x000B) PASSED!
++(String.fromCharCode(0x000D) PASSED!
++(String.fromCharCode(0x000A) PASSED!
++( ' ' + 999 ) PASSED!
++( '\n' + 999 ) PASSED!
++( '\r' + 999 ) PASSED!
++( '\t' + 999 ) PASSED!
++( '\f' + 999 ) PASSED!
++( 999 + ' ' ) PASSED!
++( 999 + '\n' ) PASSED!
++( 999 + '\r' ) PASSED!
++( 999 + '\t' ) PASSED!
++( 999 + '\f' ) PASSED!
++( '\n' + 999 + '\n' ) PASSED!
++( '\r' + 999 + '\r' ) PASSED!
++( '\t' + 999 + '\t' ) PASSED!
++( '\f' + 999 + '\f' ) PASSED!
++( ' ' + '999' ) PASSED!
++( '\n' + '999' ) PASSED!
++( '\r' + '999' ) PASSED!
++( '\t' + '999' ) PASSED!
++( '\f' + '999' ) PASSED!
++( '999' + ' ' ) PASSED!
++( '999' + '\n' ) PASSED!
++( '999' + '\r' ) PASSED!
++( '999' + '\t' ) PASSED!
++( '999' + '\f' ) PASSED!
++( '\n' + '999' + '\n' ) PASSED!
++( '\r' + '999' + '\r' ) PASSED!
++( '\t' + '999' + '\t' ) PASSED!
++( '\f' + '999' + '\f' ) PASSED!
++( String.fromCharCode(0x0009) + '99' ) PASSED!
++( String.fromCharCode(0x0020) + '99' ) PASSED!
++( String.fromCharCode(0x000C) + '99' ) PASSED!
++( String.fromCharCode(0x000B) + '99' ) PASSED!
++( String.fromCharCode(0x000D) + '99' ) PASSED!
++( String.fromCharCode(0x000A) + '99' ) PASSED!
++( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x0009) PASSED!
++( String.fromCharCode(0x0020) + '99' + String.fromCharCode(0x0020) PASSED!
++( String.fromCharCode(0x000C) + '99' + String.fromCharCode(0x000C) PASSED!
++( String.fromCharCode(0x000D) + '99' + String.fromCharCode(0x000D) PASSED!
++( String.fromCharCode(0x000B) + '99' + String.fromCharCode(0x000B) PASSED!
++( String.fromCharCode(0x000A) + '99' + String.fromCharCode(0x000A) PASSED!
++( '99' + String.fromCharCode(0x0009) PASSED!
++( '99' + String.fromCharCode(0x0020) PASSED!
++( '99' + String.fromCharCode(0x000C) PASSED!
++( '99' + String.fromCharCode(0x000D) PASSED!
++( '99' + String.fromCharCode(0x000B) PASSED!
++( '99' + String.fromCharCode(0x000A) PASSED!
++( String.fromCharCode(0x0009) + 99 ) PASSED!
++( String.fromCharCode(0x0020) + 99 ) PASSED!
++( String.fromCharCode(0x000C) + 99 ) PASSED!
++( String.fromCharCode(0x000B) + 99 ) PASSED!
++( String.fromCharCode(0x000D) + 99 ) PASSED!
++( String.fromCharCode(0x000A) + 99 ) PASSED!
++( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x0009) PASSED!
++( String.fromCharCode(0x0020) + 99 + String.fromCharCode(0x0020) PASSED!
++( String.fromCharCode(0x000C) + 99 + String.fromCharCode(0x000C) PASSED!
++( String.fromCharCode(0x000D) + 99 + String.fromCharCode(0x000D) PASSED!
++( String.fromCharCode(0x000B) + 99 + String.fromCharCode(0x000B) PASSED!
++( String.fromCharCode(0x000A) + 99 + String.fromCharCode(0x000A) PASSED!
++( 99 + String.fromCharCode(0x0009) PASSED!
++( 99 + String.fromCharCode(0x0020) PASSED!
++( 99 + String.fromCharCode(0x000C) PASSED!
++( 99 + String.fromCharCode(0x000D) PASSED!
++( 99 + String.fromCharCode(0x000B) PASSED!
++( 99 + String.fromCharCode(0x000A) PASSED!
++('Infinity') PASSED!
++('-Infinity') PASSED!
++('+Infinity') PASSED!
++('0') PASSED!
++('-0') PASSED!
++('+0') PASSED!
++('1') PASSED!
++('-1') PASSED!
++('+1') PASSED!
++('2') PASSED!
++('-2') PASSED!
++('+2') PASSED!
++('3') PASSED!
++('-3') PASSED!
++('+3') PASSED!
++('4') PASSED!
++('-4') PASSED!
++('+4') PASSED!
++('5') PASSED!
++('-5') PASSED!
++('+5') PASSED!
++('6') PASSED!
++('-6') PASSED!
++('+6') PASSED!
++('7') PASSED!
++('-7') PASSED!
++('+7') PASSED!
++('8') PASSED!
++('-8') PASSED!
++('+8') PASSED!
++('9') PASSED!
++('-9') PASSED!
++('+9') PASSED!
++('3.14159') PASSED!
++('-3.14159') PASSED!
++('+3.14159') PASSED!
++('3.') PASSED!
++('-3.') PASSED!
++('+3.') PASSED!
++('3.e1') PASSED!
++('-3.e1') PASSED!
++('+3.e1') PASSED!
++('3.e+1') PASSED!
++('-3.e+1') PASSED!
++('+3.e+1') PASSED!
++('3.e-1') PASSED!
++('-3.e-1') PASSED!
++('+3.e-1') PASSED!
++('.00001') PASSED!
++('+.00001') PASSED!
++('-0.0001') PASSED!
++('.01e2') PASSED!
++('+.01e2') PASSED!
++('-.01e2') PASSED!
++('.01e+2') PASSED!
++('+.01e+2') PASSED!
++('-.01e+2') PASSED!
++('.01e-2') PASSED!
++('+.01e-2') PASSED!
++('-.01e-2') PASSED!
++('1234e5') PASSED!
++('+1234e5') PASSED!
++('-1234e5') PASSED!
++('1234e+5') PASSED!
++('+1234e+5') PASSED!
++('-1234e+5') PASSED!
++('1234e-5') PASSED!
++('+1234e-5') PASSED!
++('-1234e-5') PASSED!
++('0x0') PASSED!
++('0x1') PASSED!
++('0x2') PASSED!
++('0x3') PASSED!
++('0x4') PASSED!
++('0x5') PASSED!
++('0x6') PASSED!
++('0x7') PASSED!
++('0x8') PASSED!
++('0x9') PASSED!
++('0xa') PASSED!
++('0xb') PASSED!
++('0xc') PASSED!
++('0xd') PASSED!
++('0xe') PASSED!
++('0xf') PASSED!
++('0xA') PASSED!
++('0xB') PASSED!
++('0xC') PASSED!
++('0xD') PASSED!
++('0xE') PASSED!
++('0xF') PASSED!
++('0X0') PASSED!
++('0X1') PASSED!
++('0X2') PASSED!
++('0X3') PASSED!
++('0X4') PASSED!
++('0X5') PASSED!
++('0X6') PASSED!
++('0X7') PASSED!
++('0X8') PASSED!
++('0X9') PASSED!
++('0Xa') PASSED!
++('0Xb') PASSED!
++('0Xc') PASSED!
++('0Xd') PASSED!
++('0Xe') PASSED!
++('0Xf') PASSED!
++('0XA') PASSED!
++('0XB') PASSED!
++('0XC') PASSED!
++('0XD') PASSED!
++('0XE') PASSED!
++('0XF') PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_6/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_6/test.swf
new file mode 100644
index 000000000..183d93c7f
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_6/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_6/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_6/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_6/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_7/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_7/Test.as
new file mode 100644
index 000000000..8a470984f
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_7/Test.as
@@ -0,0 +1,213 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+
+// var SECTION = "e11_4_7";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+ var BUGNUMBER="77392";
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+ array[item++] = Assert.expectEq( "-('a string')", Number.NaN, -("a string") );
+ array[item++] = Assert.expectEq( "-('34string')", Number.NaN, -("34string") );
+ array[item++] = Assert.expectEq( "-('string63')", Number.NaN, -("string63") );
+ array[item++] = Assert.expectEq( "-('e47')", Number.NaN, -("e47") );
+ array[item++] = Assert.expectEq( "-('1e47')", -1e47, -("1e47") );
+ array[item++] = Assert.expectEq( "-1e47", -1e47, -1e47 );
+ array[item++] = Assert.expectEq( "-('')", 0, -("") );
+ array[item++] = Assert.expectEq( "-(' ')", 0, -(" ") );
+ array[item++] = Assert.expectEq( "-(\\t)", 0, -("\t") );
+ array[item++] = Assert.expectEq( "-(\\n)", 0, -("\n") );
+ array[item++] = Assert.expectEq( "-(\\r)", 0, -("\r") );
+ array[item++] = Assert.expectEq( "-(\\f)", 0, -("\f") );
+
+ array[item++] = Assert.expectEq( "-(String.fromCharCode(0x0009)", 0, -(String.fromCharCode(0x0009)) );
+ array[item++] = Assert.expectEq( "-(String.fromCharCode(0x0020)", 0, -(String.fromCharCode(0x0020)) );
+ array[item++] = Assert.expectEq( "-(String.fromCharCode(0x000C)", 0, -(String.fromCharCode(0x000C)) );
+ array[item++] = Assert.expectEq( "-(String.fromCharCode(0x000B)", 0, -(String.fromCharCode(0x000B)) );
+ array[item++] = Assert.expectEq( "-(String.fromCharCode(0x000D)", 0, -(String.fromCharCode(0x000D)) );
+ array[item++] = Assert.expectEq( "-(String.fromCharCode(0x000A)", 0, -(String.fromCharCode(0x000A)) );
+
+ // a StringNumericLiteral may be preceeded or followed by whitespace and/or
+ // line terminators
+
+ array[item++] = Assert.expectEq( "-( ' ' + 999 )", -999, -( ' '+999) );
+ array[item++] = Assert.expectEq( "-( '\\n' + 999 )", -999, -( '\n' +999) );
+ array[item++] = Assert.expectEq( "-( '\\r' + 999 )", -999, -( '\r' +999) );
+ array[item++] = Assert.expectEq( "-( '\\t' + 999 )", -999, -( '\t' +999) );
+ array[item++] = Assert.expectEq( "-( '\\f' + 999 )", -999, -( '\f' +999) );
+
+ array[item++] = Assert.expectEq( "-( 999 + ' ' )", -999, -( 999+' ') );
+ array[item++] = Assert.expectEq( "-( 999 + '\\n' )", -999, -( 999+'\n' ) );
+ array[item++] = Assert.expectEq( "-( 999 + '\\r' )", -999, -( 999+'\r' ) );
+ array[item++] = Assert.expectEq( "-( 999 + '\\t' )", -999, -( 999+'\t' ) );
+ array[item++] = Assert.expectEq( "-( 999 + '\\f' )", -999, -( 999+'\f' ) );
+
+ array[item++] = Assert.expectEq( "-( '\\n' + 999 + '\\n' )", -999, -( '\n' +999+'\n' ) );
+ array[item++] = Assert.expectEq( "-( '\\r' + 999 + '\\r' )", -999, -( '\r' +999+'\r' ) );
+ array[item++] = Assert.expectEq( "-( '\\t' + 999 + '\\t' )", -999, -( '\t' +999+'\t' ) );
+ array[item++] = Assert.expectEq( "-( '\\f' + 999 + '\\f' )", -999, -( '\f' +999+'\f' ) );
+
+ array[item++] = Assert.expectEq( "-( ' ' + '999' )", -999, -( ' '+'999') );
+ array[item++] = Assert.expectEq( "-( '\\n' + '999' )", -999, -( '\n' +'999') );
+ array[item++] = Assert.expectEq( "-( '\\r' + '999' )", -999, -( '\r' +'999') );
+ array[item++] = Assert.expectEq( "-( '\\t' + '999' )", -999, -( '\t' +'999') );
+ array[item++] = Assert.expectEq( "-( '\\f' + '999' )", -999, -( '\f' +'999') );
+
+ array[item++] = Assert.expectEq( "-( '999' + ' ' )", -999, -( '999'+' ') );
+ array[item++] = Assert.expectEq( "-( '999' + '\\n' )", -999, -( '999'+'\n' ) );
+ array[item++] = Assert.expectEq( "-( '999' + '\\r' )", -999, -( '999'+'\r' ) );
+ array[item++] = Assert.expectEq( "-( '999' + '\\t' )", -999, -( '999'+'\t' ) );
+ array[item++] = Assert.expectEq( "-( '999' + '\\f' )", -999, -( '999'+'\f' ) );
+
+ array[item++] = Assert.expectEq( "-( '\\n' + '999' + '\\n' )", -999, -( '\n' +'999'+'\n' ) );
+ array[item++] = Assert.expectEq( "-( '\\r' + '999' + '\\r' )", -999, -( '\r' +'999'+'\r' ) );
+ array[item++] = Assert.expectEq( "-( '\\t' + '999' + '\\t' )", -999, -( '\t' +'999'+'\t' ) );
+ array[item++] = Assert.expectEq( "-( '\\f' + '999' + '\\f' )", -999, -( '\f' +'999'+'\f' ) );
+
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x0009) + '99' )", -99, -( String.fromCharCode(0x0009) + '99' ) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x0020) + '99' )", -99, -( String.fromCharCode(0x0020) + '99' ) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x000C) + '99' )", -99, -( String.fromCharCode(0x000C) + '99' ) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x000B) + '99' )", -99, -( String.fromCharCode(0x000B) + '99' ) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x000D) + '99' )", -99, -( String.fromCharCode(0x000D) + '99' ) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x000A) + '99' )", -99, -( String.fromCharCode(0x000A) + '99' ) );
+
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x0009)", -99, -( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x0009)) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x0020) + '99' + String.fromCharCode(0x0020)", -99, -( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x0020)) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x000C) + '99' + String.fromCharCode(0x000C)", -99, -( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x000C)) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x000D) + '99' + String.fromCharCode(0x000D)", -99, -( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x000D)) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x000B) + '99' + String.fromCharCode(0x000B)", -99, -( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x000B)) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x000A) + '99' + String.fromCharCode(0x000A)", -99, -( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x000A)) );
+
+ array[item++] = Assert.expectEq( "-( '99' + String.fromCharCode(0x0009)", -99, -( '99' + String.fromCharCode(0x0009)) );
+ array[item++] = Assert.expectEq( "-( '99' + String.fromCharCode(0x0020)", -99, -( '99' + String.fromCharCode(0x0020)) );
+ array[item++] = Assert.expectEq( "-( '99' + String.fromCharCode(0x000C)", -99, -( '99' + String.fromCharCode(0x000C)) );
+ array[item++] = Assert.expectEq( "-( '99' + String.fromCharCode(0x000D)", -99, -( '99' + String.fromCharCode(0x000D)) );
+ array[item++] = Assert.expectEq( "-( '99' + String.fromCharCode(0x000B)", -99, -( '99' + String.fromCharCode(0x000B)) );
+ array[item++] = Assert.expectEq( "-( '99' + String.fromCharCode(0x000A)", -99, -( '99' + String.fromCharCode(0x000A)) );
+
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x0009) + 99 )", -99, -( String.fromCharCode(0x0009) + 99 ) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x0020) + 99 )", -99, -( String.fromCharCode(0x0020) + 99 ) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x000C) + 99 )", -99, -( String.fromCharCode(0x000C) + 99 ) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x000B) + 99 )", -99, -( String.fromCharCode(0x000B) + 99 ) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x000D) + 99 )", -99, -( String.fromCharCode(0x000D) + 99 ) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x000A) + 99 )", -99, -( String.fromCharCode(0x000A) + 99 ) );
+
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x0009)", -99, -( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x0009)) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x0020) + 99 + String.fromCharCode(0x0020)", -99, -( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x0020)) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x000C) + 99 + String.fromCharCode(0x000C)", -99, -( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x000C)) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x000D) + 99 + String.fromCharCode(0x000D)", -99, -( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x000D)) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x000B) + 99 + String.fromCharCode(0x000B)", -99, -( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x000B)) );
+ array[item++] = Assert.expectEq( "-( String.fromCharCode(0x000A) + 99 + String.fromCharCode(0x000A)", -99, -( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x000A)) );
+
+ array[item++] = Assert.expectEq( "-( 99 + String.fromCharCode(0x0009)", -99, -( 99 + String.fromCharCode(0x0009)) );
+ array[item++] = Assert.expectEq( "-( 99 + String.fromCharCode(0x0020)", -99, -( 99 + String.fromCharCode(0x0020)) );
+ array[item++] = Assert.expectEq( "-( 99 + String.fromCharCode(0x000C)", -99, -( 99 + String.fromCharCode(0x000C)) );
+ array[item++] = Assert.expectEq( "-( 99 + String.fromCharCode(0x000D)", -99, -( 99 + String.fromCharCode(0x000D)) );
+ array[item++] = Assert.expectEq( "-( 99 + String.fromCharCode(0x000B)", -99, -( 99 + String.fromCharCode(0x000B)) );
+ array[item++] = Assert.expectEq( "-( 99 + String.fromCharCode(0x000A)", -99, -( 99 + String.fromCharCode(0x000A)) );
+
+
+ // StrNumericLiteral:::StrDecimalLiteral:::Infinity
+
+ array[item++] = Assert.expectEq( "-('Infinity')", -Math.pow(10,10000), -("Infinity") );
+ array[item++] = Assert.expectEq( "-('-Infinity')", Math.pow(10,10000), -("-Infinity") );
+ array[item++] = Assert.expectEq( "+-('+Infinity')", -Math.pow(10,10000), -("+Infinity") );
+
+ // StrNumericLiteral::: StrDecimalLiteral ::: DecimalDigits . DecimalDigits opt ExponentPart opt
+
+ array[item++] = Assert.expectEq( "-('0')", -0, -("0") );
+ array[item++] = Assert.expectEq( "-('-0')", 0, -("-0") );
+ array[item++] = Assert.expectEq( "-('+0')", -0, - ("+0") );
+
+ array[item++] = Assert.expectEq( "-('1')", -1, -("1") );
+ array[item++] = Assert.expectEq( "-('-1')", 1, -("-1") );
+ array[item++] = Assert.expectEq( "-('+1')", -1, -("+1") );
+
+ array[item++] = Assert.expectEq( "-('2')", -2, -("2") );
+ array[item++] = Assert.expectEq( "-('-2')", 2, -("-2") );
+ array[item++] = Assert.expectEq( "-('+2')", -2, -("+2") );
+
+ array[item++] = Assert.expectEq( "-('3.14159')", -3.14159, -("3.14159") );
+ array[item++] = Assert.expectEq( "-('-3.14159')", 3.14159, -("-3.14159") );
+ array[item++] = Assert.expectEq( "-('+3.14159')", -3.14159, -("+3.14159") );
+
+ array[item++] = Assert.expectEq( "-('3.')", -3, -("3.") );
+ array[item++] = Assert.expectEq( "-('-3.')", 3, -("-3.") );
+ array[item++] = Assert.expectEq( "-('+3.')", -3, -("+3.") );
+
+ array[item++] = Assert.expectEq( "-('3.e1')", -30, -("3.e1") );
+ array[item++] = Assert.expectEq( "-('-3.e1')", 30, -("-3.e1") );
+ array[item++] = Assert.expectEq( "-('+3.e1')", -30, -("+3.e1") );
+
+ array[item++] = Assert.expectEq( "-(3.e+1)", -30, -(3.e+1) );
+ array[item++] = Assert.expectEq( "-(-3.e+1)", 30, -(-3.e+1) );
+ array[item++] = Assert.expectEq( "-(+3.e+1)", -30, -(+3.e+1) );
+
+ array[item++] = Assert.expectEq( "-('3.e-1')", -.30, -("3.e-1") );
+ array[item++] = Assert.expectEq( "-('-3.e-1')", .30, -("-3.e-1") );
+ array[item++] = Assert.expectEq( "-('+3.e-1')", -.30, -("+3.e-1") );
+
+ // StrDecimalLiteral::: .DecimalDigits ExponentPart opt
+
+ array[item++] = Assert.expectEq( "-('.00001')", -0.00001, -(".00001") );
+ array[item++] = Assert.expectEq( "-('+.00001')", -0.00001, -("+.00001") );
+ array[item++] = Assert.expectEq( "-('-0.0001')", 0.00001, -("-.00001") );
+
+ array[item++] = Assert.expectEq( "-('.01e2')", -1, -(".01e2") );
+ array[item++] = Assert.expectEq( "-('+.01e2')", -1, -("+.01e2") );
+ array[item++] = Assert.expectEq( "-('-.01e2')", 1, -("-.01e2") );
+
+ array[item++] = Assert.expectEq( "-.01e+2", -1, -.01e+2 );
+ array[item++] = Assert.expectEq( "-(+.01e+2)", -1, -(+.01e+2) );
+ array[item++] = Assert.expectEq( "-(-.01e+2)", 1, -(-.01e+2) );
+
+ array[item++] = Assert.expectEq( "-('.01e-2')", -0.0001, -(".01e-2") );
+ array[item++] = Assert.expectEq( "-('+.01e-2')", -0.0001, -("+.01e-2") );
+ array[item++] = Assert.expectEq( "-('-.01e-2')", 0.0001, -("-.01e-2") );
+
+ // StrDecimalLiteral::: DecimalDigits ExponentPart opt
+
+ array[item++] = Assert.expectEq( "-('1234e5')", -123400000, -("1234e5") );
+ array[item++] = Assert.expectEq( "-('+1234e5')", -123400000, -("+1234e5") );
+ array[item++] = Assert.expectEq( "-('-1234e5')", 123400000, -("-1234e5") );
+
+ array[item++] = Assert.expectEq( "-('1234e+5')", -123400000, -("1234e+5") );
+ array[item++] = Assert.expectEq( "-('+1234e+5')", -123400000, -("+1234e+5") );
+ array[item++] = Assert.expectEq( "-('-1234e+5')", 123400000, -("-1234e+5") );
+
+ array[item++] = Assert.expectEq( "-('1234e-5')", -0.01234, -("1234e-5") );
+ array[item++] = Assert.expectEq( "-('+1234e-5')", -0.01234, -("+1234e-5") );
+ array[item++] = Assert.expectEq( "-('-1234e-5')", 0.01234, -("-1234e-5") );
+
+ // StrNumericLiteral::: HexIntegerLiteral
+
+ array[item++] = Assert.expectEq( "-('0x0')", 0, -("0x0"));
+ array[item++] = Assert.expectEq( "-('0x1')", -1, -("0x1"));
+ array[item++] = Assert.expectEq( "-('0x2')", -2, -("0x2"));
+ array[item++] = Assert.expectEq( "-('0xd')", -13, -("0xd"));
+ array[item++] = Assert.expectEq( "-('0xe')", -14, -("0xe"));
+ array[item++] = Assert.expectEq( "-('0xf')", -15, -("0xf"));
+ array[item++] = Assert.expectEq( "-('0xA')", -10, -("0xA"));
+ array[item++] = Assert.expectEq( "-('0xB')", -11, -("0xB"));
+ array[item++] = Assert.expectEq( "-('0xC')", -12, -("0xC"));
+
+ array[item++] = Assert.expectEq( "-0X0", -0, -0X0);
+ array[item++] = Assert.expectEq( "-('0X8')", -8, -("0X8"));
+ array[item++] = Assert.expectEq( "-('0X9')", -9, -("0X9"));
+ array[item++] = Assert.expectEq( "-0Xa", -10, -0Xa);
+ array[item++] = Assert.expectEq( "-('0Xb')", -11, -("0Xb"));
+ array[item++] = Assert.expectEq( "-('0XE')", -14, -("0XE"));
+ array[item++] = Assert.expectEq( "-0XF", -15, -0XF);
+
+ return array;
+
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_7/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_7/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_7/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_7/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_7/output.txt
new file mode 100644
index 000000000..d7ebf163a
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_7/output.txt
@@ -0,0 +1,146 @@
+-('a string') PASSED!
+-('34string') PASSED!
+-('string63') PASSED!
+-('e47') PASSED!
+-('1e47') PASSED!
+-1e47 PASSED!
+-('') PASSED!
+-(' ') PASSED!
+-(\t) PASSED!
+-(\n) PASSED!
+-(\r) PASSED!
+-(\f) PASSED!
+-(String.fromCharCode(0x0009) PASSED!
+-(String.fromCharCode(0x0020) PASSED!
+-(String.fromCharCode(0x000C) PASSED!
+-(String.fromCharCode(0x000B) PASSED!
+-(String.fromCharCode(0x000D) PASSED!
+-(String.fromCharCode(0x000A) PASSED!
+-( ' ' + 999 ) PASSED!
+-( '\n' + 999 ) PASSED!
+-( '\r' + 999 ) PASSED!
+-( '\t' + 999 ) PASSED!
+-( '\f' + 999 ) PASSED!
+-( 999 + ' ' ) PASSED!
+-( 999 + '\n' ) PASSED!
+-( 999 + '\r' ) PASSED!
+-( 999 + '\t' ) PASSED!
+-( 999 + '\f' ) PASSED!
+-( '\n' + 999 + '\n' ) PASSED!
+-( '\r' + 999 + '\r' ) PASSED!
+-( '\t' + 999 + '\t' ) PASSED!
+-( '\f' + 999 + '\f' ) PASSED!
+-( ' ' + '999' ) PASSED!
+-( '\n' + '999' ) PASSED!
+-( '\r' + '999' ) PASSED!
+-( '\t' + '999' ) PASSED!
+-( '\f' + '999' ) PASSED!
+-( '999' + ' ' ) PASSED!
+-( '999' + '\n' ) PASSED!
+-( '999' + '\r' ) PASSED!
+-( '999' + '\t' ) PASSED!
+-( '999' + '\f' ) PASSED!
+-( '\n' + '999' + '\n' ) PASSED!
+-( '\r' + '999' + '\r' ) PASSED!
+-( '\t' + '999' + '\t' ) PASSED!
+-( '\f' + '999' + '\f' ) PASSED!
+-( String.fromCharCode(0x0009) + '99' ) PASSED!
+-( String.fromCharCode(0x0020) + '99' ) PASSED!
+-( String.fromCharCode(0x000C) + '99' ) PASSED!
+-( String.fromCharCode(0x000B) + '99' ) PASSED!
+-( String.fromCharCode(0x000D) + '99' ) PASSED!
+-( String.fromCharCode(0x000A) + '99' ) PASSED!
+-( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x0009) PASSED!
+-( String.fromCharCode(0x0020) + '99' + String.fromCharCode(0x0020) PASSED!
+-( String.fromCharCode(0x000C) + '99' + String.fromCharCode(0x000C) PASSED!
+-( String.fromCharCode(0x000D) + '99' + String.fromCharCode(0x000D) PASSED!
+-( String.fromCharCode(0x000B) + '99' + String.fromCharCode(0x000B) PASSED!
+-( String.fromCharCode(0x000A) + '99' + String.fromCharCode(0x000A) PASSED!
+-( '99' + String.fromCharCode(0x0009) PASSED!
+-( '99' + String.fromCharCode(0x0020) PASSED!
+-( '99' + String.fromCharCode(0x000C) PASSED!
+-( '99' + String.fromCharCode(0x000D) PASSED!
+-( '99' + String.fromCharCode(0x000B) PASSED!
+-( '99' + String.fromCharCode(0x000A) PASSED!
+-( String.fromCharCode(0x0009) + 99 ) PASSED!
+-( String.fromCharCode(0x0020) + 99 ) PASSED!
+-( String.fromCharCode(0x000C) + 99 ) PASSED!
+-( String.fromCharCode(0x000B) + 99 ) PASSED!
+-( String.fromCharCode(0x000D) + 99 ) PASSED!
+-( String.fromCharCode(0x000A) + 99 ) PASSED!
+-( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x0009) PASSED!
+-( String.fromCharCode(0x0020) + 99 + String.fromCharCode(0x0020) PASSED!
+-( String.fromCharCode(0x000C) + 99 + String.fromCharCode(0x000C) PASSED!
+-( String.fromCharCode(0x000D) + 99 + String.fromCharCode(0x000D) PASSED!
+-( String.fromCharCode(0x000B) + 99 + String.fromCharCode(0x000B) PASSED!
+-( String.fromCharCode(0x000A) + 99 + String.fromCharCode(0x000A) PASSED!
+-( 99 + String.fromCharCode(0x0009) PASSED!
+-( 99 + String.fromCharCode(0x0020) PASSED!
+-( 99 + String.fromCharCode(0x000C) PASSED!
+-( 99 + String.fromCharCode(0x000D) PASSED!
+-( 99 + String.fromCharCode(0x000B) PASSED!
+-( 99 + String.fromCharCode(0x000A) PASSED!
+-('Infinity') PASSED!
+-('-Infinity') PASSED!
++-('+Infinity') PASSED!
+-('0') PASSED!
+-('-0') PASSED!
+-('+0') PASSED!
+-('1') PASSED!
+-('-1') PASSED!
+-('+1') PASSED!
+-('2') PASSED!
+-('-2') PASSED!
+-('+2') PASSED!
+-('3.14159') PASSED!
+-('-3.14159') PASSED!
+-('+3.14159') PASSED!
+-('3.') PASSED!
+-('-3.') PASSED!
+-('+3.') PASSED!
+-('3.e1') PASSED!
+-('-3.e1') PASSED!
+-('+3.e1') PASSED!
+-(3.e+1) PASSED!
+-(-3.e+1) PASSED!
+-(+3.e+1) PASSED!
+-('3.e-1') PASSED!
+-('-3.e-1') PASSED!
+-('+3.e-1') PASSED!
+-('.00001') PASSED!
+-('+.00001') PASSED!
+-('-0.0001') PASSED!
+-('.01e2') PASSED!
+-('+.01e2') PASSED!
+-('-.01e2') PASSED!
+-.01e+2 PASSED!
+-(+.01e+2) PASSED!
+-(-.01e+2) PASSED!
+-('.01e-2') PASSED!
+-('+.01e-2') PASSED!
+-('-.01e-2') PASSED!
+-('1234e5') PASSED!
+-('+1234e5') PASSED!
+-('-1234e5') PASSED!
+-('1234e+5') PASSED!
+-('+1234e+5') PASSED!
+-('-1234e+5') PASSED!
+-('1234e-5') PASSED!
+-('+1234e-5') PASSED!
+-('-1234e-5') PASSED!
+-('0x0') PASSED!
+-('0x1') PASSED!
+-('0x2') PASSED!
+-('0xd') PASSED!
+-('0xe') PASSED!
+-('0xf') PASSED!
+-('0xA') PASSED!
+-('0xB') PASSED!
+-('0xC') PASSED!
+-0X0 PASSED!
+-('0X8') PASSED!
+-('0X9') PASSED!
+-0Xa PASSED!
+-('0Xb') PASSED!
+-('0XE') PASSED!
+-0XF PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_7/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_7/test.swf
new file mode 100644
index 000000000..f53793285
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_7/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_7/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_7/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_7/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_8/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_8/Test.as
new file mode 100644
index 000000000..fb89a48b2
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_8/Test.as
@@ -0,0 +1,170 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+
+// var SECTION = "e11_4_8";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ for ( var i = 0; i < 35; i++ ) {
+ var p = Math.pow(2,i);
+
+ array[item++] = Assert.expectEq( "~"+p, Not(p), ~p );
+
+ }
+ for ( i = 0; i < 35; i++ ) {
+ var p = -Math.pow(2,i);
+
+ array[item++] = Assert.expectEq( "~"+p, Not(p), ~p );
+
+ }
+
+ return ( array );
+}
+function ToInteger( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( n != n ) {
+ return 0;
+ }
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY ) {
+ return n;
+ }
+ return ( sign * Math.floor(Math.abs(n)) );
+}
+function ToInt32( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+
+ n = (sign * Math.floor( Math.abs(n) )) % Math.pow(2,32);
+ n = ( n >= Math.pow(2,31) ) ? n - Math.pow(2,32) : n;
+
+ return ( n );
+}
+function ToUint32( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+ n = sign * Math.floor( Math.abs(n) )
+
+ n = n % Math.pow(2,32);
+
+ if ( n < 0 ){
+ n += Math.pow(2,32);
+ }
+
+ return ( n );
+}
+function ToUint16( n ) {
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+
+ n = ( sign * Math.floor( Math.abs(n) ) ) % Math.pow(2,16);
+
+ if (n <0) {
+ n += Math.pow(2,16);
+ }
+
+ return ( n );
+}
+function Mask( b, n ) {
+ b = ToUint32BitString( b );
+ b = b.substring( b.length - n );
+ b = ToUint32Decimal( b );
+ return ( b );
+}
+function ToUint32BitString( n ) {
+ var b = "";
+ for ( p = 31; p >=0; p-- ) {
+ if ( n >= Math.pow(2,p) ) {
+ b += "1";
+ n -= Math.pow(2,p);
+ } else {
+ b += "0";
+ }
+ }
+ return b;
+}
+function ToInt32BitString( n ) {
+ var b = "";
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ b += ( sign == 1 ) ? "0" : "1";
+
+ for ( p = 30; p >=0; p-- ) {
+ if ( (sign == 1 ) ? sign * n >= Math.pow(2,p) : sign * n > Math.pow(2,p) ) {
+ b += ( sign == 1 ) ? "1" : "0";
+ n -= sign * Math.pow( 2, p );
+ } else {
+ b += ( sign == 1 ) ? "0" : "1";
+ }
+ }
+
+ return b;
+}
+function ToInt32Decimal( bin ) {
+ var r = 0;
+ var sign;
+
+ if ( Number(bin.charAt(0)) == 0 ) {
+ sign = 1;
+ r = 0;
+ } else {
+ sign = -1;
+ r = -(Math.pow(2,31));
+ }
+
+ for ( var j = 0; j < 31; j++ ) {
+ r += Math.pow( 2, j ) * Number(bin.charAt(31-j));
+ }
+
+ return r;
+}
+function ToUint32Decimal( bin ) {
+ var r = 0;
+
+ for ( l = bin.length; l < 32; l++ ) {
+ bin = "0" + bin;
+ }
+
+ for ( j = 0; j < 31; j++ ) {
+ r += Math.pow( 2, j ) * Number(bin.charAt(31-j));
+ }
+
+ return r;
+}
+function Not( n ) {
+ n = ToInt32(n);
+ n = ToInt32BitString(n);
+
+ r = ""
+
+ for( var l = 0; l < n.length; l++ ) {
+ r += ( n.charAt(l) == "0" ) ? "1" : "0";
+ }
+
+ n = ToInt32Decimal(r);
+
+ return n;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_8/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_8/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_8/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_8/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_8/output.txt
new file mode 100644
index 000000000..a7cab5835
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_8/output.txt
@@ -0,0 +1,70 @@
+~1 PASSED!
+~2 PASSED!
+~4 PASSED!
+~8 PASSED!
+~16 PASSED!
+~32 PASSED!
+~64 PASSED!
+~128 PASSED!
+~256 PASSED!
+~512 PASSED!
+~1024 PASSED!
+~2048 PASSED!
+~4096 PASSED!
+~8192 PASSED!
+~16384 PASSED!
+~32768 PASSED!
+~65536 PASSED!
+~131072 PASSED!
+~262144 PASSED!
+~524288 PASSED!
+~1048576 PASSED!
+~2097152 PASSED!
+~4194304 PASSED!
+~8388608 PASSED!
+~16777216 PASSED!
+~33554432 PASSED!
+~67108864 PASSED!
+~134217728 PASSED!
+~268435456 PASSED!
+~536870912 PASSED!
+~1073741824 PASSED!
+~2147483648 PASSED!
+~4294967296 PASSED!
+~8589934592 PASSED!
+~17179869184 PASSED!
+~-1 PASSED!
+~-2 PASSED!
+~-4 PASSED!
+~-8 PASSED!
+~-16 PASSED!
+~-32 PASSED!
+~-64 PASSED!
+~-128 PASSED!
+~-256 PASSED!
+~-512 PASSED!
+~-1024 PASSED!
+~-2048 PASSED!
+~-4096 PASSED!
+~-8192 PASSED!
+~-16384 PASSED!
+~-32768 PASSED!
+~-65536 PASSED!
+~-131072 PASSED!
+~-262144 PASSED!
+~-524288 PASSED!
+~-1048576 PASSED!
+~-2097152 PASSED!
+~-4194304 PASSED!
+~-8388608 PASSED!
+~-16777216 PASSED!
+~-33554432 PASSED!
+~-67108864 PASSED!
+~-134217728 PASSED!
+~-268435456 PASSED!
+~-536870912 PASSED!
+~-1073741824 PASSED!
+~-2147483648 PASSED!
+~-4294967296 PASSED!
+~-8589934592 PASSED!
+~-17179869184 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_8/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_8/test.swf
new file mode 100644
index 000000000..684a49813
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_8/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_8/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_8/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_8/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_9/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_9/Test.as
new file mode 100644
index 000000000..ddfba3726
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_9/Test.as
@@ -0,0 +1,53 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_4_9";
+// var VERSION = "ECMA_1";
+// var TITLE = "Logical NOT operator (!)";
+
+
+// version("130")
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ array[item++] = Assert.expectEq( "!(null)", true, !(null) );
+ array[item++] = Assert.expectEq( "!(void 0)", true, !(void 0) );
+
+ array[item++] = Assert.expectEq( "!(false)", true, !(false) );
+ array[item++] = Assert.expectEq( "!(true)", false, !(true) );
+ array[item++] = Assert.expectEq( "!(0)", true, !(0) );
+ array[item++] = Assert.expectEq( "!(-0)", true, !(-0) );
+ array[item++] = Assert.expectEq( "!(NaN)", true, !(Number.NaN) );
+ array[item++] = Assert.expectEq( "!(Infinity)", false, !(Number.POSITIVE_INFINITY) );
+ array[item++] = Assert.expectEq( "!(-Infinity)", false, !(Number.NEGATIVE_INFINITY) );
+ array[item++] = Assert.expectEq( "!(Math.PI)", false, !(Math.PI) );
+ array[item++] = Assert.expectEq( "!(1)", false, !(1) );
+ array[item++] = Assert.expectEq( "!(-1)", false, !(-1) );
+ array[item++] = Assert.expectEq( "!('')", true, !("") );
+ array[item++] = Assert.expectEq( "!('\t')", false, !("\t") );
+ array[item++] = Assert.expectEq( "!('0')", false, !("0") );
+ array[item++] = Assert.expectEq( "!('string')", false, !("string") );
+ array[item++] = Assert.expectEq( "!(new String(''))", true, !(new String("")) );
+ array[item++] = Assert.expectEq( "!(new String('string'))", false, !(new String("string")) );
+ array[item++] = Assert.expectEq( "!(new String())", true, !(new String()) );
+ array[item++] = Assert.expectEq( "!(new Boolean(true))", false, !(new Boolean(true)) );
+ array[item++] = Assert.expectEq( "!(new Boolean(false))", true, !(new Boolean(false)) );
+ array[item++] = Assert.expectEq( "!(new Array())", false, !(new Array()) );
+ array[item++] = Assert.expectEq( "!(new Array(1,2,3)", false, !(new Array(1,2,3)) );
+ array[item++] = Assert.expectEq( "!(new Number())", true, !(new Number()) );
+ array[item++] = Assert.expectEq( "!(new Number(0))", true, !(new Number(0)) );
+ array[item++] = Assert.expectEq( "!(new Number(NaN))", true, !(new Number(Number.NaN)) );
+ array[item++] = Assert.expectEq( "!(new Number(Infinity))", false, !(new Number(Number.POSITIVE_INFINITY)) );
+
+ return (array);
+}
+
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_9/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_9/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_9/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_9/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_9/output.txt
new file mode 100644
index 000000000..5ec1fbe1f
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_9/output.txt
@@ -0,0 +1,27 @@
+!(null) PASSED!
+!(void 0) PASSED!
+!(false) PASSED!
+!(true) PASSED!
+!(0) PASSED!
+!(-0) PASSED!
+!(NaN) PASSED!
+!(Infinity) PASSED!
+!(-Infinity) PASSED!
+!(Math.PI) PASSED!
+!(1) PASSED!
+!(-1) PASSED!
+!('') PASSED!
+!(' ') PASSED!
+!('0') PASSED!
+!('string') PASSED!
+!(new String('')) PASSED!
+!(new String('string')) PASSED!
+!(new String()) PASSED!
+!(new Boolean(true)) PASSED!
+!(new Boolean(false)) PASSED!
+!(new Array()) PASSED!
+!(new Array(1,2,3) PASSED!
+!(new Number()) PASSED!
+!(new Number(0)) PASSED!
+!(new Number(NaN)) PASSED!
+!(new Number(Infinity)) PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_9/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_9/test.swf
new file mode 100644
index 000000000..e5df2fd8d
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_9/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_9/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_9/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_4_9/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_1/Test.as
new file mode 100644
index 000000000..ab29ea5d8
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_1/Test.as
@@ -0,0 +1,78 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_5_1";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ array[item++] = Assert.expectEq( "Number.NaN * Number.NaN", Number.NaN, Number.NaN * Number.NaN );
+ array[item++] = Assert.expectEq( "Number.NaN * 1", Number.NaN, Number.NaN * 1 );
+ array[item++] = Assert.expectEq( "1 * Number.NaN", Number.NaN, 1 * Number.NaN );
+
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY * 0", Number.NaN, Number.POSITIVE_INFINITY * 0 );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY * 0", Number.NaN, Number.NEGATIVE_INFINITY * 0 );
+ array[item++] = Assert.expectEq( "0 * Number.POSITIVE_INFINITY", Number.NaN, 0 * Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "0 * Number.NEGATIVE_INFINITY", Number.NaN, 0 * Number.NEGATIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "-0 * Number.POSITIVE_INFINITY", Number.NaN, -0 * Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-0 * Number.NEGATIVE_INFINITY", Number.NaN, -0 * Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY * -0", Number.NaN, Number.POSITIVE_INFINITY * -0 );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY * -0", Number.NaN, Number.NEGATIVE_INFINITY * -0 );
+
+ array[item++] = Assert.expectEq( "0 * -0", -0, 0 * -0 );
+ array[item++] = Assert.expectEq( "-0 * 0", -0, -0 * 0 );
+ array[item++] = Assert.expectEq( "-0 * -0", 0, -0 * -0 );
+ array[item++] = Assert.expectEq( "0 * 0", 0, 0 * 0 );
+
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY * Number.NEGATIVE_INFINITY", Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY * Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY * Number.NEGATIVE_INFINITY", Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY * Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY * Number.POSITIVE_INFINITY", Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY * Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY * Number.POSITIVE_INFINITY", Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY * Number.POSITIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY * 1 ", Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY * 1 );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY * -1 ", Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY * -1 );
+ array[item++] = Assert.expectEq( "1 * Number.NEGATIVE_INFINITY", Number.NEGATIVE_INFINITY, 1 * Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-1 * Number.NEGATIVE_INFINITY", Number.POSITIVE_INFINITY, -1 * Number.NEGATIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY * 1 ", Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY * 1 );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY * -1 ", Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY * -1 );
+ array[item++] = Assert.expectEq( "1 * Number.POSITIVE_INFINITY", Number.POSITIVE_INFINITY, 1 * Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-1 * Number.POSITIVE_INFINITY", Number.NEGATIVE_INFINITY, -1 * Number.POSITIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "-1.0 * Number.MAX_VALUE", -Number.MAX_VALUE, -1.0 * Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "1.1 * Number.MAX_VALUE", Number.POSITIVE_INFINITY, 1.1 * Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "-1.1 * Number.MAX_VALUE", Number.NEGATIVE_INFINITY, -1.1 * Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE * Number.MAX_VALUE", Number.POSITIVE_INFINITY, Number.MAX_VALUE * Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "(Number.MAX_VALUE-1) * (Number.MAX_VALUE-1)", Number.POSITIVE_INFINITY, (Number.MAX_VALUE-1) * (Number.MAX_VALUE-1) );
+ array[item++] = Assert.expectEq( "-1 * Number.MAX_VALUE * Number.MAX_VALUE", Number.NEGATIVE_INFINITY, -1 * Number.MAX_VALUE * Number.MAX_VALUE );
+
+ array[item++] = Assert.expectEq( "-1 * Number.MIN_VALUE", -4.9406564584124654e-324, -1 * Number.MIN_VALUE );
+ array[item++] = Assert.expectEq( "0.9 * Number.MIN_VALUE", 4.9406564584124654e-324, 0.9 * Number.MIN_VALUE );
+ array[item++] = Assert.expectEq( "-0.9 * Number.MIN_VALUE", -4.9406564584124654e-324, -0.9 * Number.MIN_VALUE );
+ array[item++] = Assert.expectEq( "0.51 * Number.MIN_VALUE", 4.9406564584124654e-324, 0.51 * Number.MIN_VALUE );
+ array[item++] = Assert.expectEq( "-0.51 * Number.MIN_VALUE", -4.9406564584124654e-324, -0.51 * Number.MIN_VALUE );
+ array[item++] = Assert.expectEq( "0.5 * Number.MIN_VALUE", 0, 0.5 * Number.MIN_VALUE );
+ array[item++] = Assert.expectEq( "-0.5 * Number.MIN_VALUE", -0, -0.5 * Number.MIN_VALUE );
+ array[item++] = Assert.expectEq( "0.1 * Number.MIN_VALUE", 0, 0.1 * Number.MIN_VALUE );
+ array[item++] = Assert.expectEq( "-0.1 * Number.MIN_VALUE", -0, -0.1 * Number.MIN_VALUE );
+ array[item++] = Assert.expectEq( "Number.MIN_VALUE * Number.MIN_VALUE", 0, Number.MIN_VALUE * Number.MIN_VALUE );
+
+ array[item++] = Assert.expectEq( "1 * 1", 1, 1 * 1 );
+ array[item++] = Assert.expectEq( "-1 * 1", -1, -1 * 1 );
+ array[item++] = Assert.expectEq( "1 * (-1)", -1, 1 * (-1) );
+ array[item++] = Assert.expectEq( "-1 * (-1)", 1, -1 * (-1) );
+
+
+
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_1/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_1/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_1/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_1/output.txt
new file mode 100644
index 000000000..4ab13e3c6
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_1/output.txt
@@ -0,0 +1,47 @@
+Number.NaN * Number.NaN PASSED!
+Number.NaN * 1 PASSED!
+1 * Number.NaN PASSED!
+Number.POSITIVE_INFINITY * 0 PASSED!
+Number.NEGATIVE_INFINITY * 0 PASSED!
+0 * Number.POSITIVE_INFINITY PASSED!
+0 * Number.NEGATIVE_INFINITY PASSED!
+-0 * Number.POSITIVE_INFINITY PASSED!
+-0 * Number.NEGATIVE_INFINITY PASSED!
+Number.POSITIVE_INFINITY * -0 PASSED!
+Number.NEGATIVE_INFINITY * -0 PASSED!
+0 * -0 PASSED!
+-0 * 0 PASSED!
+-0 * -0 PASSED!
+0 * 0 PASSED!
+Number.NEGATIVE_INFINITY * Number.NEGATIVE_INFINITY PASSED!
+Number.POSITIVE_INFINITY * Number.NEGATIVE_INFINITY PASSED!
+Number.NEGATIVE_INFINITY * Number.POSITIVE_INFINITY PASSED!
+Number.POSITIVE_INFINITY * Number.POSITIVE_INFINITY PASSED!
+Number.NEGATIVE_INFINITY * 1 PASSED!
+Number.NEGATIVE_INFINITY * -1 PASSED!
+1 * Number.NEGATIVE_INFINITY PASSED!
+-1 * Number.NEGATIVE_INFINITY PASSED!
+Number.POSITIVE_INFINITY * 1 PASSED!
+Number.POSITIVE_INFINITY * -1 PASSED!
+1 * Number.POSITIVE_INFINITY PASSED!
+-1 * Number.POSITIVE_INFINITY PASSED!
+-1.0 * Number.MAX_VALUE PASSED!
+1.1 * Number.MAX_VALUE PASSED!
+-1.1 * Number.MAX_VALUE PASSED!
+Number.MAX_VALUE * Number.MAX_VALUE PASSED!
+(Number.MAX_VALUE-1) * (Number.MAX_VALUE-1) PASSED!
+-1 * Number.MAX_VALUE * Number.MAX_VALUE PASSED!
+-1 * Number.MIN_VALUE PASSED!
+0.9 * Number.MIN_VALUE PASSED!
+-0.9 * Number.MIN_VALUE PASSED!
+0.51 * Number.MIN_VALUE PASSED!
+-0.51 * Number.MIN_VALUE PASSED!
+0.5 * Number.MIN_VALUE PASSED!
+-0.5 * Number.MIN_VALUE PASSED!
+0.1 * Number.MIN_VALUE PASSED!
+-0.1 * Number.MIN_VALUE PASSED!
+Number.MIN_VALUE * Number.MIN_VALUE PASSED!
+1 * 1 PASSED!
+-1 * 1 PASSED!
+1 * (-1) PASSED!
+-1 * (-1) PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_1/test.swf
new file mode 100644
index 000000000..994803c8d
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_1/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_1/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_2/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_2/Test.as
new file mode 100644
index 000000000..6b8ae2fea
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_2/Test.as
@@ -0,0 +1,112 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_5_2";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+ var BUGNUMBER="111202";
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // if either operand is NaN, the result is NaN.
+
+ array[item++] = Assert.expectEq( "Number.NaN / Number.NaN", Number.NaN, Number.NaN / Number.NaN );
+ array[item++] = Assert.expectEq( "Number.NaN / 1", Number.NaN, Number.NaN / 1 );
+ array[item++] = Assert.expectEq( "1 / Number.NaN", Number.NaN, 1 / Number.NaN );
+
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY / Number.NaN", Number.NaN, Number.POSITIVE_INFINITY / Number.NaN );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY / Number.NaN", Number.NaN, Number.NEGATIVE_INFINITY / Number.NaN );
+
+ // Division of an infinity by an infinity results in NaN.
+
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY / Number.NEGATIVE_INFINITY", Number.NaN, Number.NEGATIVE_INFINITY / Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY / Number.NEGATIVE_INFINITY", Number.NaN, Number.POSITIVE_INFINITY / Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY / Number.POSITIVE_INFINITY", Number.NaN, Number.NEGATIVE_INFINITY / Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY / Number.POSITIVE_INFINITY", Number.NaN, Number.POSITIVE_INFINITY / Number.POSITIVE_INFINITY );
+
+ // Division of an infinity by a zero results in an infinity.
+
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY / 0", Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY / 0 );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY / 0", Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY / 0 );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY / -0", Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY / -0 );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY / -0", Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY / -0 );
+
+ // Division of an infinity by a non-zero finite value results in a signed infinity.
+
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY / 1 ", Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY / 1 );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY / -1 ", Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY / -1 );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY / 1 ", Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY / 1 );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY / -1 ", Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY / -1 );
+
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY / Number.MAX_VALUE ", Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY / Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY / -Number.MAX_VALUE ", Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY / -Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY / Number.MAX_VALUE ", Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY / Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY / -Number.MAX_VALUE ", Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY / -Number.MAX_VALUE );
+
+ // Division of a finite value by an infinity results in zero.
+
+ array[item++] = Assert.expectEq( "1 / Number.NEGATIVE_INFINITY", -0, 1 / Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "1 / Number.POSITIVE_INFINITY", 0, 1 / Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-1 / Number.POSITIVE_INFINITY", -0, -1 / Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-1 / Number.NEGATIVE_INFINITY", 0, -1 / Number.NEGATIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE / Number.NEGATIVE_INFINITY", -0, Number.MAX_VALUE / Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE / Number.POSITIVE_INFINITY", 0, Number.MAX_VALUE / Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-Number.MAX_VALUE / Number.POSITIVE_INFINITY", -0, -Number.MAX_VALUE / Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-Number.MAX_VALUE / Number.NEGATIVE_INFINITY", 0, -Number.MAX_VALUE / Number.NEGATIVE_INFINITY );
+
+ // Division of a zero by a zero results in NaN
+
+ array[item++] = Assert.expectEq( "0 / -0", Number.NaN, 0 / -0 );
+ array[item++] = Assert.expectEq( "-0 / 0", Number.NaN, -0 / 0 );
+ array[item++] = Assert.expectEq( "-0 / -0", Number.NaN, -0 / -0 );
+ array[item++] = Assert.expectEq( "0 / 0", Number.NaN, 0 / 0 );
+
+ // division of zero by any other finite value results in zero
+
+ array[item++] = Assert.expectEq( "0 / 1", 0, 0 / 1 );
+ array[item++] = Assert.expectEq( "0 / -1", -0, 0 / -1 );
+ array[item++] = Assert.expectEq( "-0 / 1", -0, -0 / 1 );
+ array[item++] = Assert.expectEq( "-0 / -1", 0, -0 / -1 );
+
+ // Division of a non-zero finite value by a zero results in a signed infinity.
+
+ array[item++] = Assert.expectEq( "1 / 0", Number.POSITIVE_INFINITY, 1/0 );
+ array[item++] = Assert.expectEq( "1 / -0", Number.NEGATIVE_INFINITY, 1/-0 );
+ array[item++] = Assert.expectEq( "-1 / 0", Number.NEGATIVE_INFINITY, -1/0 );
+ array[item++] = Assert.expectEq( "-1 / -0", Number.POSITIVE_INFINITY, -1/-0 );
+
+ array[item++] = Assert.expectEq( "0 / Number.POSITIVE_INFINITY", 0, 0 / Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "0 / Number.NEGATIVE_INFINITY", -0, 0 / Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-0 / Number.POSITIVE_INFINITY", -0, -0 / Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-0 / Number.NEGATIVE_INFINITY", 0, -0 / Number.NEGATIVE_INFINITY );
+
+ // the sign of the result is positive if both operands have the same sign
+ // the sign of the result is negative if the operands have different signs
+
+ array[item++] = Assert.expectEq( "1 / 1", 1, 1 / 1 );
+ array[item++] = Assert.expectEq( "1 / -1", -1, 1 / -1 );
+ array[item++] = Assert.expectEq( "-1 / 1", -1, -1 / 1 );
+ var q = -1 / -1;
+ array[item++] = Assert.expectEq( "-1 / -1", 1, q );
+
+ array[item++] = Assert.expectEq( "Number.MIN_VALUE / Number.MAX_VALUE ", 0, Number.MIN_VALUE / Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE / Number.MIN_VALUE ", Number.POSITIVE_INFINITY, Number.MAX_VALUE / Number.MIN_VALUE );
+ array[item++] = Assert.expectEq( "10.3 / 5e-324", Number.POSITIVE_INFINITY, 10.3 / 5e-324 );
+ array[item++] = Assert.expectEq( "Number.MIN_VALUE / 1.1 ", 4.9406564584124654e-324, Number.MIN_VALUE / 1.1 );
+ array[item++] = Assert.expectEq( "Number.MIN_VALUE / 1.9 ", 4.9406564584124654e-324, Number.MIN_VALUE / 1.9 );
+ array[item++] = Assert.expectEq( "Number.MIN_VALUE / 2.0 ", 0, Number.MIN_VALUE / 2.0 );
+ array[item++] = Assert.expectEq( "Number.MIN_VALUE / 3 ", 0, Number.MIN_VALUE / 3 );
+ array[item++] = Assert.expectEq( "Number.MIN_VALUE / 5 ", 0, Number.MIN_VALUE / 5 );
+ array[item++] = Assert.expectEq( "Number.MIN_VALUE / 9 ", 0, Number.MIN_VALUE / 9 );
+
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_2/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_2/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_2/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_2/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_2/output.txt
new file mode 100644
index 000000000..8aee85128
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_2/output.txt
@@ -0,0 +1,58 @@
+Number.NaN / Number.NaN PASSED!
+Number.NaN / 1 PASSED!
+1 / Number.NaN PASSED!
+Number.POSITIVE_INFINITY / Number.NaN PASSED!
+Number.NEGATIVE_INFINITY / Number.NaN PASSED!
+Number.NEGATIVE_INFINITY / Number.NEGATIVE_INFINITY PASSED!
+Number.POSITIVE_INFINITY / Number.NEGATIVE_INFINITY PASSED!
+Number.NEGATIVE_INFINITY / Number.POSITIVE_INFINITY PASSED!
+Number.POSITIVE_INFINITY / Number.POSITIVE_INFINITY PASSED!
+Number.POSITIVE_INFINITY / 0 PASSED!
+Number.NEGATIVE_INFINITY / 0 PASSED!
+Number.POSITIVE_INFINITY / -0 PASSED!
+Number.NEGATIVE_INFINITY / -0 PASSED!
+Number.NEGATIVE_INFINITY / 1 PASSED!
+Number.NEGATIVE_INFINITY / -1 PASSED!
+Number.POSITIVE_INFINITY / 1 PASSED!
+Number.POSITIVE_INFINITY / -1 PASSED!
+Number.NEGATIVE_INFINITY / Number.MAX_VALUE PASSED!
+Number.NEGATIVE_INFINITY / -Number.MAX_VALUE PASSED!
+Number.POSITIVE_INFINITY / Number.MAX_VALUE PASSED!
+Number.POSITIVE_INFINITY / -Number.MAX_VALUE PASSED!
+1 / Number.NEGATIVE_INFINITY PASSED!
+1 / Number.POSITIVE_INFINITY PASSED!
+-1 / Number.POSITIVE_INFINITY PASSED!
+-1 / Number.NEGATIVE_INFINITY PASSED!
+Number.MAX_VALUE / Number.NEGATIVE_INFINITY PASSED!
+Number.MAX_VALUE / Number.POSITIVE_INFINITY PASSED!
+-Number.MAX_VALUE / Number.POSITIVE_INFINITY PASSED!
+-Number.MAX_VALUE / Number.NEGATIVE_INFINITY PASSED!
+0 / -0 PASSED!
+-0 / 0 PASSED!
+-0 / -0 PASSED!
+0 / 0 PASSED!
+0 / 1 PASSED!
+0 / -1 PASSED!
+-0 / 1 PASSED!
+-0 / -1 PASSED!
+1 / 0 PASSED!
+1 / -0 PASSED!
+-1 / 0 PASSED!
+-1 / -0 PASSED!
+0 / Number.POSITIVE_INFINITY PASSED!
+0 / Number.NEGATIVE_INFINITY PASSED!
+-0 / Number.POSITIVE_INFINITY PASSED!
+-0 / Number.NEGATIVE_INFINITY PASSED!
+1 / 1 PASSED!
+1 / -1 PASSED!
+-1 / 1 PASSED!
+-1 / -1 PASSED!
+Number.MIN_VALUE / Number.MAX_VALUE PASSED!
+Number.MAX_VALUE / Number.MIN_VALUE PASSED!
+10.3 / 5e-324 PASSED!
+Number.MIN_VALUE / 1.1 PASSED!
+Number.MIN_VALUE / 1.9 PASSED!
+Number.MIN_VALUE / 2.0 PASSED!
+Number.MIN_VALUE / 3 PASSED!
+Number.MIN_VALUE / 5 PASSED!
+Number.MIN_VALUE / 9 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_2/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_2/test.swf
new file mode 100644
index 000000000..7077e1b9c
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_2/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_2/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_2/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_2/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_3/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_3/Test.as
new file mode 100644
index 000000000..d7f7473c1
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_3/Test.as
@@ -0,0 +1,126 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_5_3";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+ var BUGNUMBER="111202";
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // if either operand is NaN, the result is NaN.
+
+ array[item++] = Assert.expectEq( "Number.NaN % Number.NaN", Number.NaN, Number.NaN % Number.NaN );
+ array[item++] = Assert.expectEq( "Number.NaN % 1", Number.NaN, Number.NaN % 1 );
+ array[item++] = Assert.expectEq( "1 % Number.NaN", Number.NaN, 1 % Number.NaN );
+
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY % Number.NaN", Number.NaN, Number.POSITIVE_INFINITY % Number.NaN );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY % Number.NaN", Number.NaN, Number.NEGATIVE_INFINITY % Number.NaN );
+
+ // If the dividend is an infinity, or the divisor is a zero, or both, the result is NaN.
+ // dividend is an infinity
+
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY % Number.NEGATIVE_INFINITY", Number.NaN, Number.NEGATIVE_INFINITY % Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY % Number.NEGATIVE_INFINITY", Number.NaN, Number.POSITIVE_INFINITY % Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY % Number.POSITIVE_INFINITY", Number.NaN, Number.NEGATIVE_INFINITY % Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY % Number.POSITIVE_INFINITY", Number.NaN, Number.POSITIVE_INFINITY % Number.POSITIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY % 0", Number.NaN, Number.POSITIVE_INFINITY % 0 );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY % 0", Number.NaN, Number.NEGATIVE_INFINITY % 0 );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY % -0", Number.NaN, Number.POSITIVE_INFINITY % -0 );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY % -0", Number.NaN, Number.NEGATIVE_INFINITY % -0 );
+
+ array[item++] = Assert.expectEq( "65 % 0", Number.NaN, 65 % 0 );
+ array[item++] = Assert.expectEq( "-866.65 % 0", Number.NaN, -866.65 % 0 );
+ array[item++] = Assert.expectEq( "54354 % -0", Number.NaN, 54354 % -0 );
+ array[item++] = Assert.expectEq( "876.4565 % -0", Number.NaN, 876.4565 % -0 );
+
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY % 1 ", Number.NaN, Number.NEGATIVE_INFINITY % 1 );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY % -1 ", Number.NaN, Number.NEGATIVE_INFINITY % -1 );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY % 1 ", Number.NaN, Number.POSITIVE_INFINITY % 1 );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY % -1 ", Number.NaN, Number.POSITIVE_INFINITY % -1 );
+
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY % Number.MAX_VALUE ", Number.NaN, Number.NEGATIVE_INFINITY % Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY % -Number.MAX_VALUE ", Number.NaN, Number.NEGATIVE_INFINITY % -Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY % Number.MAX_VALUE ", Number.NaN, Number.POSITIVE_INFINITY % Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY % -Number.MAX_VALUE ", Number.NaN, Number.POSITIVE_INFINITY % -Number.MAX_VALUE );
+
+ // divisor is 0
+ array[item++] = Assert.expectEq( "0 % -0", Number.NaN, 0 % -0 );
+ array[item++] = Assert.expectEq( "-0 % 0", Number.NaN, -0 % 0 );
+ array[item++] = Assert.expectEq( "-0 % -0", Number.NaN, -0 % -0 );
+ array[item++] = Assert.expectEq( "0 % 0", Number.NaN, 0 % 0 );
+
+ array[item++] = Assert.expectEq( "1 % 0", Number.NaN, 1%0 );
+ array[item++] = Assert.expectEq( "1 % -0", Number.NaN, 1%-0 );
+ array[item++] = Assert.expectEq( "-1 % 0", Number.NaN, -1%0 );
+ array[item++] = Assert.expectEq( "-1 % -0", Number.NaN, -1%-0 );
+
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE % 0", Number.NaN, Number.MAX_VALUE%0 );
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE % -0", Number.NaN, Number.MAX_VALUE%-0 );
+ array[item++] = Assert.expectEq( "-Number.MAX_VALUE % 0", Number.NaN, -Number.MAX_VALUE%0 );
+ array[item++] = Assert.expectEq( "-Number.MAX_VALUE % -0", Number.NaN, -Number.MAX_VALUE%-0 );
+
+ // If the dividend is finite and the divisor is an infinity, the result equals the dividend.
+
+ array[item++] = Assert.expectEq( "1 % Number.NEGATIVE_INFINITY", 1, 1 % Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "1 % Number.POSITIVE_INFINITY", 1, 1 % Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-1 % Number.POSITIVE_INFINITY", -1, -1 % Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-1 % Number.NEGATIVE_INFINITY", -1, -1 % Number.NEGATIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE % Number.NEGATIVE_INFINITY", Number.MAX_VALUE, Number.MAX_VALUE % Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE % Number.POSITIVE_INFINITY", Number.MAX_VALUE, Number.MAX_VALUE % Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-Number.MAX_VALUE % Number.POSITIVE_INFINITY", -Number.MAX_VALUE, -Number.MAX_VALUE % Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-Number.MAX_VALUE % Number.NEGATIVE_INFINITY", -Number.MAX_VALUE, -Number.MAX_VALUE % Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.MIN_VALUE % Number.NEGATIVE_INFINITY", Number.MIN_VALUE, Number.MIN_VALUE % Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.MIN_VALUE % Number.POSITIVE_INFINITY", Number.MIN_VALUE, Number.MIN_VALUE % Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-Number.MIN_VALUE % Number.POSITIVE_INFINITY", -Number.MIN_VALUE, -Number.MIN_VALUE % Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-Number.MIN_VALUE % Number.NEGATIVE_INFINITY", -Number.MIN_VALUE, -Number.MIN_VALUE % Number.NEGATIVE_INFINITY );
+
+
+ array[item++] = Assert.expectEq( "0 % Number.POSITIVE_INFINITY", 0, 0 % Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "0 % Number.NEGATIVE_INFINITY", 0, 0 % Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-0 % Number.POSITIVE_INFINITY", -0, -0 % Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-0 % Number.NEGATIVE_INFINITY", -0, -0 % Number.NEGATIVE_INFINITY );
+
+ // If the dividend is a zero and the divisor is finite, the result is the same as the dividend.
+
+ array[item++] = Assert.expectEq( "0 % 1", 0, 0 % 1 );
+ array[item++] = Assert.expectEq( "0 % -1", 0, 0 % -1 );
+ array[item++] = Assert.expectEq( "-0 % 1", -0, -0 % 1 );
+ array[item++] = Assert.expectEq( "-0 % -1", -0, -0 % -1 );
+
+ // the sign of the result equals the sign of the dividend
+
+ array[item++] = Assert.expectEq( "10 % 3", 1, 10 % 3 );
+ array[item++] = Assert.expectEq( "-10 % 3", -1, -10 % 3 );
+ array[item++] = Assert.expectEq( "10 % -3", 1, 10 % -3 );
+ array[item++] = Assert.expectEq( "-10 % -3", -1, -10 % -3 );
+
+// In the remaining cases, where neither an infinity, nor a zero, nor NaN is involved, the floating-point remainder r
+// from a dividend n and a divisor d is defined by the mathematical relation r = n - (d * q) where q is an integer that
+// is negative only if n/d is negative and positive only if n/d is positive, and whose magnitude is as large as
+// possible without exceeding the magnitude of the true mathematical quotient of n and d.
+
+ array[item++] = Assert.expectEq( "66.6 % 25.4", 15.799999999999997, 66.6 % 25.4 );
+ array[item++] = Assert.expectEq( "66.6 % -25.4", 15.799999999999997, 66.6 % -25.4);
+ array[item++] = Assert.expectEq( "-66.6 % 25.4", -15.799999999999997, -66.6 % 25.4 );
+ array[item++] = Assert.expectEq( "-66.6 % -25.4", -15.799999999999997, -66.6 % -25.4 );
+
+ // Regression for https://bugzilla.mozilla.org/show_bug.cgi?id=491084
+ array[item++] = Assert.expectEq( "null % null", NaN, null % null);
+ array[item++] = Assert.expectEq( "'a string' % null", NaN, 'a string' % null);
+ array[item++] = Assert.expectEq( "null % 'a string'", NaN, null % 'a string');
+ array[item++] = Assert.expectEq( "Math.PI % null", NaN, Math.PI % null);
+ array[item++] = Assert.expectEq( "null % Math.PI", 0, null % Math.PI);
+
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_3/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_3/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_3/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_3/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_3/output.txt
new file mode 100644
index 000000000..b411e5134
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_3/output.txt
@@ -0,0 +1,70 @@
+Number.NaN % Number.NaN PASSED!
+Number.NaN % 1 PASSED!
+1 % Number.NaN PASSED!
+Number.POSITIVE_INFINITY % Number.NaN PASSED!
+Number.NEGATIVE_INFINITY % Number.NaN PASSED!
+Number.NEGATIVE_INFINITY % Number.NEGATIVE_INFINITY PASSED!
+Number.POSITIVE_INFINITY % Number.NEGATIVE_INFINITY PASSED!
+Number.NEGATIVE_INFINITY % Number.POSITIVE_INFINITY PASSED!
+Number.POSITIVE_INFINITY % Number.POSITIVE_INFINITY PASSED!
+Number.POSITIVE_INFINITY % 0 PASSED!
+Number.NEGATIVE_INFINITY % 0 PASSED!
+Number.POSITIVE_INFINITY % -0 PASSED!
+Number.NEGATIVE_INFINITY % -0 PASSED!
+65 % 0 PASSED!
+-866.65 % 0 PASSED!
+54354 % -0 PASSED!
+876.4565 % -0 PASSED!
+Number.NEGATIVE_INFINITY % 1 PASSED!
+Number.NEGATIVE_INFINITY % -1 PASSED!
+Number.POSITIVE_INFINITY % 1 PASSED!
+Number.POSITIVE_INFINITY % -1 PASSED!
+Number.NEGATIVE_INFINITY % Number.MAX_VALUE PASSED!
+Number.NEGATIVE_INFINITY % -Number.MAX_VALUE PASSED!
+Number.POSITIVE_INFINITY % Number.MAX_VALUE PASSED!
+Number.POSITIVE_INFINITY % -Number.MAX_VALUE PASSED!
+0 % -0 PASSED!
+-0 % 0 PASSED!
+-0 % -0 PASSED!
+0 % 0 PASSED!
+1 % 0 PASSED!
+1 % -0 PASSED!
+-1 % 0 PASSED!
+-1 % -0 PASSED!
+Number.MAX_VALUE % 0 PASSED!
+Number.MAX_VALUE % -0 PASSED!
+-Number.MAX_VALUE % 0 PASSED!
+-Number.MAX_VALUE % -0 PASSED!
+1 % Number.NEGATIVE_INFINITY PASSED!
+1 % Number.POSITIVE_INFINITY PASSED!
+-1 % Number.POSITIVE_INFINITY PASSED!
+-1 % Number.NEGATIVE_INFINITY PASSED!
+Number.MAX_VALUE % Number.NEGATIVE_INFINITY PASSED!
+Number.MAX_VALUE % Number.POSITIVE_INFINITY PASSED!
+-Number.MAX_VALUE % Number.POSITIVE_INFINITY PASSED!
+-Number.MAX_VALUE % Number.NEGATIVE_INFINITY PASSED!
+Number.MIN_VALUE % Number.NEGATIVE_INFINITY PASSED!
+Number.MIN_VALUE % Number.POSITIVE_INFINITY PASSED!
+-Number.MIN_VALUE % Number.POSITIVE_INFINITY PASSED!
+-Number.MIN_VALUE % Number.NEGATIVE_INFINITY PASSED!
+0 % Number.POSITIVE_INFINITY PASSED!
+0 % Number.NEGATIVE_INFINITY PASSED!
+-0 % Number.POSITIVE_INFINITY PASSED!
+-0 % Number.NEGATIVE_INFINITY PASSED!
+0 % 1 PASSED!
+0 % -1 PASSED!
+-0 % 1 PASSED!
+-0 % -1 PASSED!
+10 % 3 PASSED!
+-10 % 3 PASSED!
+10 % -3 PASSED!
+-10 % -3 PASSED!
+66.6 % 25.4 PASSED!
+66.6 % -25.4 PASSED!
+-66.6 % 25.4 PASSED!
+-66.6 % -25.4 PASSED!
+null % null PASSED!
+'a string' % null PASSED!
+null % 'a string' PASSED!
+Math.PI % null PASSED!
+null % Math.PI PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_3/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_3/test.swf
new file mode 100644
index 000000000..8689e5422
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_3/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_3/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_3/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_5_3/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_1/Test.as
new file mode 100644
index 000000000..c48a17d66
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_1/Test.as
@@ -0,0 +1,119 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_6_1_1";
+// var VERSION = "ECMA_1";
+
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // tests for boolean primitive, boolean object, Object object, a "MyObject" whose value is
+ // a boolean primitive and a boolean object,
+ var EXP_1 = true; var EXP_2 = false;
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = true; var EXP_2 = false; EXP_1 + EXP_2",
+ 1,
+ EXP_1 + EXP_2 );
+ var EXP_1 = new Boolean(true); var EXP_2 = new Boolean(false);
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Boolean(true); var EXP_2 = new Boolean(false); EXP_1 + EXP_2",
+ 1,
+ EXP_1 + EXP_2 );
+ var EXP_1 = new Object(true); var EXP_2 = new Object(false);
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Object(true); var EXP_2 = new Object(false); EXP_1 + EXP_2",
+ 1,
+ EXP_1 + EXP_2 );
+ var EXP_1 = new Object(new Boolean(true)); var EXP_2 = new Object(new Boolean(false));
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Object(new Boolean(true)); var EXP_2 = new Object(new Boolean(false)); EXP_1 + EXP_2",
+ 1,
+ EXP_1 + EXP_2 );
+ var EXP_1 = new MyObject(true); var EXP_2 = new MyObject(false);
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyObject(true); var EXP_2 = new MyObject(false); EXP_1 + EXP_2",
+ 1,
+ EXP_1 + EXP_2 );
+ var EXP_1 = new MyObject(new Boolean(true)); var EXP_2 = new MyObject(new Boolean(false));
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyObject(new Boolean(true)); var EXP_2 = new MyObject(new Boolean(false)); EXP_1 + EXP_2",
+ 1,
+ EXP_1 + EXP_2 );
+ //var EXP_1 = new MyValuelessObject(true); var EXP_2 = new MyValuelessObject(false);
+ //array[item++] = Assert.expectEq(
+ // "var EXP_1 = new MyValuelessObject(true); var EXP_2 = new MyValuelessObject(false); EXP_1 + EXP_2",
+ // 1,
+ // EXP_1 + EXP_2 );
+ //var EXP_1 = new MyValuelessObject(new Boolean(true)); var EXP_2 = new MyValuelessObject(new Boolean(false));
+ //array[item++] = Assert.expectEq(
+ // "var EXP_1 = new MyValuelessObject(new Boolean(true)); var EXP_2 = new MyValuelessObject(new Boolean(false)); EXP_1 + EXP_2",
+ // "truefalse",
+ // EXP_1 + EXP_2 );
+
+ // tests for number primitive, number object, Object object, a "MyObject" whose value is
+ // a number primitive and a number object
+ var EXP_1 = 100; var EXP_2 = -1;
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = 100; var EXP_2 = -1; EXP_1 + EXP_2",
+ 99,
+ EXP_1 + EXP_2 );
+ var EXP_1 = new Number(100); var EXP_2 = new Number(-1);
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Number(100); var EXP_2 = new Number(-1); EXP_1 + EXP_2",
+ 99,
+ EXP_1 + EXP_2 );
+ var EXP_1 = new Object(100); var EXP_2 = new Object(-1);
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Object(100); var EXP_2 = new Object(-1); EXP_1 + EXP_2",
+ 99,
+ EXP_1 + EXP_2 );
+ var EXP_1 = new Object(new Number(100)); var EXP_2 = new Object(new Number(-1));
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Object(new Number(100)); var EXP_2 = new Object(new Number(-1)); EXP_1 + EXP_2",
+ 99,
+ EXP_1 + EXP_2 );
+ var EXP_1 = new MyObject(100); var EXP_2 = new MyObject(-1);
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyObject(100); var EXP_2 = new MyObject(-1); EXP_1 + EXP_2",
+ 99,
+ EXP_1 + EXP_2 );
+ var EXP_1 = new MyObject(new Number(100)); var EXP_2 = new MyObject(new Number(-1));
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyObject(new Number(100)); var EXP_2 = new MyObject(new Number(-1)); EXP_1 + EXP_2",
+ 99,
+ EXP_1 + EXP_2 );
+
+ //var EXP_1 = new MyValuelessObject(100); var EXP_2 = new MyValuelessObject(-1);
+ //array[item++] = Assert.expectEq(
+ // "var EXP_1 = new MyValuelessObject(100); var EXP_2 = new MyValuelessObject(-1); EXP_1 + EXP_2",
+ // 99,
+ // EXP_1 + EXP_2 );
+ //var EXP_1 = new MyValuelessObject(new Number(100)); var EXP_2 = new MyValuelessObject(new Number(-1));
+ //array[item++] = Assert.expectEq(
+ // "var EXP_1 = new MyValuelessObject(new Number(100)); var EXP_2 = new MyValuelessObject(new Number(-1)); EXP_1 + EXP_2",
+ // "100-1",
+ // EXP_1 + EXP_2 );
+ //var EXP_1 = new MyValuelessObject( new MyValuelessObject( new Boolean(true) ) );
+ //array[item++] = Assert.expectEq(
+ // "var EXP_1 = new MyValuelessObject( new MyValuelessObject( new Boolean(true) ) ); EXP_1 + EXP_1",
+ // "truetrue",
+ // EXP_1 + EXP_1 );
+ //
+ return ( array );
+}
+
+function MyObject( value ) {
+ this.toString = function(){return this.value + ''};
+ this.valueOf = function(){return this.value};
+ this.value = value;
+}
+
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_1/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_1/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_1/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_1/output.txt
new file mode 100644
index 000000000..bf95f6225
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_1/output.txt
@@ -0,0 +1,12 @@
+var EXP_1 = true; var EXP_2 = false; EXP_1 + EXP_2 PASSED!
+var EXP_1 = new Boolean(true); var EXP_2 = new Boolean(false); EXP_1 + EXP_2 PASSED!
+var EXP_1 = new Object(true); var EXP_2 = new Object(false); EXP_1 + EXP_2 PASSED!
+var EXP_1 = new Object(new Boolean(true)); var EXP_2 = new Object(new Boolean(false)); EXP_1 + EXP_2 PASSED!
+var EXP_1 = new MyObject(true); var EXP_2 = new MyObject(false); EXP_1 + EXP_2 PASSED!
+var EXP_1 = new MyObject(new Boolean(true)); var EXP_2 = new MyObject(new Boolean(false)); EXP_1 + EXP_2 PASSED!
+var EXP_1 = 100; var EXP_2 = -1; EXP_1 + EXP_2 PASSED!
+var EXP_1 = new Number(100); var EXP_2 = new Number(-1); EXP_1 + EXP_2 PASSED!
+var EXP_1 = new Object(100); var EXP_2 = new Object(-1); EXP_1 + EXP_2 PASSED!
+var EXP_1 = new Object(new Number(100)); var EXP_2 = new Object(new Number(-1)); EXP_1 + EXP_2 PASSED!
+var EXP_1 = new MyObject(100); var EXP_2 = new MyObject(-1); EXP_1 + EXP_2 PASSED!
+var EXP_1 = new MyObject(new Number(100)); var EXP_2 = new MyObject(new Number(-1)); EXP_1 + EXP_2 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_1/test.swf
new file mode 100644
index 000000000..895c0ef40
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_1/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_1/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_2/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_2/Test.as
new file mode 100644
index 000000000..5bca5e896
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_2/Test.as
@@ -0,0 +1,141 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_6_1_2";
+// var VERSION = "ECMA_1";
+
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // tests for boolean primitive, boolean object, Object object, a "MyObject" whose value is
+ // a boolean primitive and a boolean object
+ var EXP_1 = 'string'; var EXP_2 = false;
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = 'string'; var EXP_2 = false; EXP_1 + EXP_2",
+ "stringfalse",
+ EXP_1 + EXP_2 );
+ var EXP_1 = true; var EXP_2 = 'string';
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = true; var EXP_2 = 'string'; EXP_1 + EXP_2",
+ "truestring",
+ EXP_1 + EXP_2 );
+ var EXP_1 = new Boolean(true); var EXP_2 = new String('string');
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Boolean(true); var EXP_2 = new String('string'); EXP_1 + EXP_2",
+ "truestring",
+ EXP_1 + EXP_2 );
+ var EXP_1 = new Object(true); var EXP_2 = new Object('string');
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Object(true); var EXP_2 = new Object('string'); EXP_1 + EXP_2",
+ "truestring",
+ EXP_1 + EXP_2 );
+ var EXP_1 = new Object(new String('string')); var EXP_2 = new Object(new Boolean(false));
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Object(new String('string')); var EXP_2 = new Object(new Boolean(false)); EXP_1 + EXP_2",
+ "stringfalse",
+ EXP_1 + EXP_2 );
+ var EXP_1 = new MyObject(true); var EXP_2 = new MyObject('string');
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyObject(true); var EXP_2 = new MyObject('string'); EXP_1 + EXP_2",
+ "truestring",
+ EXP_1 + EXP_2 );
+ var EXP_1 = new MyObject(new String('string')); var EXP_2 = new MyObject(new Boolean(false));
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyObject(new String('string')); var EXP_2 = new MyObject(new Boolean(false)); EXP_1 + EXP_2",
+ "stringfalse",
+ EXP_1 + EXP_2 );
+ //var EXP_1 = new MyValuelessObject('string'); var EXP_2 = new MyValuelessObject(false);
+ //array[item++] = Assert.expectEq(
+ // "var EXP_1 = new MyValuelessObject('string'); var EXP_2 = new MyValuelessObject(false); EXP_1 + EXP_2",
+ // "stringfalse",
+ // EXP_1 + EXP_2 );
+ //var EXP_1 = new MyValuelessObject(new String('string')); var EXP_2 = new MyValuelessObject(new Boolean(false));
+ //array[item++] = Assert.expectEq(
+ // "var EXP_1 = new MyValuelessObject(new String('string')); var EXP_2 = new MyValuelessObject(new Boolean(false)); EXP_1 + EXP_2",
+ // "stringfalse",
+ // EXP_1 + EXP_2 );
+
+ // tests for number primitive, number object, Object object, a "MyObject" whose value is
+ // a number primitive and a number object
+ var EXP_1 = 100; var EXP_2 = 'string';
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = 100; var EXP_2 = 'string'; EXP_1 + EXP_2",
+ "100string",
+ EXP_1 + EXP_2 );
+ var EXP_1 = new String('string'); var EXP_2 = new Number(-1);
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new String('string'); var EXP_2 = new Number(-1); EXP_1 + EXP_2",
+ "string-1",
+ EXP_1 + EXP_2 );
+ var EXP_1 = new Object(100); var EXP_2 = new Object('string');
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Object(100); var EXP_2 = new Object('string'); EXP_1 + EXP_2",
+ "100string",
+ EXP_1 + EXP_2 );
+ var EXP_1 = new Object(new String('string')); var EXP_2 = new Object(new Number(-1));
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Object(new String('string')); var EXP_2 = new Object(new Number(-1)); EXP_1 + EXP_2",
+ "string-1",
+ EXP_1 + EXP_2 );
+
+ var EXP_1 = new MyObject(100); var EXP_2 = new MyObject('string');
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyObject(100); var EXP_2 = new MyObject('string'); EXP_1 + EXP_2",
+ "100string",
+ EXP_1 + EXP_2 );
+ var EXP_1 = new MyObject(new String('string')); var EXP_2 = new MyObject(new Number(-1));
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyObject(new String('string')); var EXP_2 = new MyObject(new Number(-1)); EXP_1 + EXP_2",
+ "string-1",
+ EXP_1 + EXP_2 );
+ //var EXP_1 = new MyValuelessObject(100); var EXP_2 = new MyValuelessObject('string');
+ //array[item++] = Assert.expectEq(
+ // "var EXP_1 = new MyValuelessObject(100); var EXP_2 = new MyValuelessObject('string'); EXP_1 + EXP_2",
+ // "100string",
+ // EXP_1 + EXP_2 );
+ //var EXP_1 = new MyValuelessObject(new String('string')); var EXP_2 = new MyValuelessObject(new Number(-1));
+ //array[item++] = Assert.expectEq(
+ // "var EXP_1 = new MyValuelessObject(new String('string')); var EXP_2 = new MyValuelessObject(new Number(-1)); EXP_1 + EXP_2",
+ // "string-1",
+ // EXP_1 + EXP_2 );
+ return ( array );
+}
+
+// cn: __proto__ is not ecma3 compliant
+/*
+function MyProtoValuelessObject() {
+//this.valueOf = new Function ( "" );
+ this.valueOf = function (){""};
+ this.__proto__ = null;
+}
+function MyProtolessObject( value ) {
+//this.valueOf = new Function( "return this.value" );
+ this.valueOf = 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.valueOf = function(){return this.value};
+ this.toString = function(){return this.value + ''};
+ this.value = value;
+}
+function MyObject( value ) {
+//this.valueOf = new Function( "return this.value" );
+ this.valueOf = function(){return this.value};
+ this.value = value;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_2/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_2/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_2/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_2/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_2/output.txt
new file mode 100644
index 000000000..402d87f9e
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_2/output.txt
@@ -0,0 +1,13 @@
+var EXP_1 = 'string'; var EXP_2 = false; EXP_1 + EXP_2 PASSED!
+var EXP_1 = true; var EXP_2 = 'string'; EXP_1 + EXP_2 PASSED!
+var EXP_1 = new Boolean(true); var EXP_2 = new String('string'); EXP_1 + EXP_2 PASSED!
+var EXP_1 = new Object(true); var EXP_2 = new Object('string'); EXP_1 + EXP_2 PASSED!
+var EXP_1 = new Object(new String('string')); var EXP_2 = new Object(new Boolean(false)); EXP_1 + EXP_2 PASSED!
+var EXP_1 = new MyObject(true); var EXP_2 = new MyObject('string'); EXP_1 + EXP_2 PASSED!
+var EXP_1 = new MyObject(new String('string')); var EXP_2 = new MyObject(new Boolean(false)); EXP_1 + EXP_2 PASSED!
+var EXP_1 = 100; var EXP_2 = 'string'; EXP_1 + EXP_2 PASSED!
+var EXP_1 = new String('string'); var EXP_2 = new Number(-1); EXP_1 + EXP_2 PASSED!
+var EXP_1 = new Object(100); var EXP_2 = new Object('string'); EXP_1 + EXP_2 PASSED!
+var EXP_1 = new Object(new String('string')); var EXP_2 = new Object(new Number(-1)); EXP_1 + EXP_2 PASSED!
+var EXP_1 = new MyObject(100); var EXP_2 = new MyObject('string'); EXP_1 + EXP_2 PASSED!
+var EXP_1 = new MyObject(new String('string')); var EXP_2 = new MyObject(new Number(-1)); EXP_1 + EXP_2 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_2/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_2/test.swf
new file mode 100644
index 000000000..3801bce1b
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_2/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_2/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_2/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_2/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_3/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_3/Test.as
new file mode 100644
index 000000000..9e060bd7d
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_3/Test.as
@@ -0,0 +1,117 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_6_1_3";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // tests for boolean primitive, boolean object, Object object, a "MyObject" whose value is
+ // a boolean primitive and a boolean object,
+
+ var DATE1 = new Date(0);
+
+ array[item++] = Assert.expectEq(
+ "var DATE1 = new Date(); DATE1 + DATE1",
+ DATE1.toString() + DATE1.toString(),
+ DATE1 + DATE1 );
+
+ array[item++] = Assert.expectEq(
+ "var DATE1 = new Date(); DATE1 + 0",
+ DATE1.toString() + 0,
+ DATE1 + 0 );
+
+ array[item++] = Assert.expectEq(
+ "var DATE1 = new Date(); DATE1 + new Number(0)",
+ DATE1.toString() + 0,
+ DATE1 + new Number(0) );
+
+ array[item++] = Assert.expectEq(
+ "var DATE1 = new Date(); DATE1 + true",
+ DATE1.toString() + "true",
+ DATE1 + true );
+
+ array[item++] = Assert.expectEq(
+ "var DATE1 = new Date(); DATE1 + new Boolean(true)",
+ DATE1.toString() + "true",
+ DATE1 + new Boolean(true) );
+
+ array[item++] = Assert.expectEq(
+ "var DATE1 = new Date(); DATE1 + new Boolean(true)",
+ DATE1.toString() + "true",
+ DATE1 + new Boolean(true) );
+
+ var MYOB1 = new MyObject( DATE1 );
+ var MYOB2 = new MyValuelessObject( DATE1 );
+ //var MYOB3 = new MyProtolessObject( DATE1 );
+ //var MYOB4 = new MyProtoValuelessObject( DATE1 );
+
+ array[item++] = Assert.expectEq(
+ "MYOB1 = new MyObject(DATE1); MYOB1 + new Number(1)",
+ "[object Object]1",
+ MYOB1 + new Number(1) );
+
+ array[item++] = Assert.expectEq(
+ "MYOB1 = new MyObject(DATE1); MYOB1 + 1",
+ "[object Object]1",
+ MYOB1 + 1 );
+
+/* array[item++] = Assert.expectEq(
+ "MYOB2 = new MyValuelessObject(DATE1); MYOB3 + 'string'",
+ DATE1.toString() + "string",
+ MYOB2 + 'string' );
+
+ array[item++] = Assert.expectEq(
+ "MYOB2 = new MyValuelessObject(DATE1); MYOB3 + new String('string')",
+ DATE1.toString() + "string",
+ MYOB2 + new String('string') );
+
+ array[item++] = Assert.expectEq(
+ "MYOB3 = new MyProtolessObject(DATE1); MYOB3 + new Boolean(true)",
+ DATE1.toString() + "true",
+ MYOB3 + new Boolean(true) );
+*/
+ array[item++] = Assert.expectEq(
+ "MYOB1 = new MyObject(DATE1); MYOB1 + true",
+ "[object Object]true",
+ MYOB1 + true );
+
+ return ( array );
+}
+
+/* cn: __proto__ is not ecma3 compliant
+
+function MyProtoValuelessObject() {
+//this.valueOf = new Function ( "" );
+ this.valueOf = function (){ ""};
+ this.__proto__ = null;
+}
+function MyProtolessObject( value ) {
+// this.valueOf = new Function( "return this.value" );
+ this.valueOf = function(){return this.value};
+ this.__proto__ = null;
+ this.value = value;
+}
+*/
+function MyValuelessObject(value) {
+ //this.__proto__ = new MyPrototypeObject(value);
+ this.constructor.prototype = new MyPrototypeObject(value);
+}
+function MyPrototypeObject(value) {
+ this.valueOf = function(){return this.value};
+ this.toString = function(){return this.value + ''};
+ this.value = value;
+}
+function MyObject( value ) {
+ this.valueOf = function(){return this.value};
+ this.value = value;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_3/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_3/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_3/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_3/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_3/output.txt
new file mode 100644
index 000000000..41652cf42
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_3/output.txt
@@ -0,0 +1,9 @@
+var DATE1 = new Date(); DATE1 + DATE1 PASSED!
+var DATE1 = new Date(); DATE1 + 0 PASSED!
+var DATE1 = new Date(); DATE1 + new Number(0) PASSED!
+var DATE1 = new Date(); DATE1 + true PASSED!
+var DATE1 = new Date(); DATE1 + new Boolean(true) PASSED!
+var DATE1 = new Date(); DATE1 + new Boolean(true) PASSED!
+MYOB1 = new MyObject(DATE1); MYOB1 + new Number(1) PASSED!
+MYOB1 = new MyObject(DATE1); MYOB1 + 1 PASSED!
+MYOB1 = new MyObject(DATE1); MYOB1 + true PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_3/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_3/test.swf
new file mode 100644
index 000000000..ad540b94d
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_3/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_3/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_3/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_1_3/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_2_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_2_1/Test.as
new file mode 100644
index 000000000..9f8d26a09
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_2_1/Test.as
@@ -0,0 +1,150 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_6_2_1";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // tests for boolean primitive, boolean object, Object object, a "MyObject" whose value is
+ // a boolean primitive and a boolean object, and "MyValuelessObject", where the value is
+ // set in the object's prototype, not the object itself.
+ var EXP_1 = true; var EXP_2 = false;
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = true; var EXP_2 = false; EXP_1 - EXP_2",
+ 1,
+ EXP_1 - EXP_2 );
+ var EXP_1 = new Boolean(true); var EXP_2 = new Boolean(false);
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Boolean(true); var EXP_2 = new Boolean(false); EXP_1 - EXP_2",
+ 1,
+ EXP_1 - EXP_2 );
+ var EXP_1 = new Object(true); var EXP_2 = new Object(false);
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Object(true); var EXP_2 = new Object(false); EXP_1 - EXP_2",
+ 1,
+ EXP_1 - EXP_2 );
+ var EXP_1 = new Object(new Boolean(true)); var EXP_2 = new Object(new Boolean(false));
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Object(new Boolean(true)); var EXP_2 = new Object(new Boolean(false)); EXP_1 - EXP_2",
+ 1,
+ EXP_1 - EXP_2 );
+ var EXP_1 = new MyObject(true); var EXP_2 = new MyObject(false);
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyObject(true); var EXP_2 = new MyObject(false); EXP_1 - EXP_2",
+ 1,
+ EXP_1 - EXP_2 );
+ var EXP_1 = new MyObject(new Boolean(true)); var EXP_2 = new MyObject(new Boolean(false));
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyObject(new Boolean(true)); var EXP_2 = new MyObject(new Boolean(false)); EXP_1 - EXP_2",
+ 1,
+ EXP_1 - EXP_2 );
+ var EXP_1 = new MyOtherObject(new Boolean(true)); var EXP_2 = new MyOtherObject(new Boolean(false));
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyOtherObject(new Boolean(true)); var EXP_2 = new MyOtherObject(new Boolean(false)); EXP_1 - EXP_2",
+ 1,
+ EXP_1 - EXP_2 );
+ var EXP_1 = new MyValuelessObject(true);
+ var EXP_2 = new MyValuelessObject(false);
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyValuelessObject(true); var EXP_2 = new MyValuelessObject(false); EXP_1 - EXP_2",
+ NaN,
+ EXP_1 - EXP_2 );
+ var EXP_1 = new MyValuelessObject(new Boolean(true));
+ var EXP_2 = new MyValuelessObject(new Boolean(false));
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyValuelessObject(new Boolean(true)); var EXP_2 = new MyValuelessObject(new Boolean(false)); EXP_1 - EXP_2",
+ 0, // true - true = 0 not NaN
+ EXP_1 - EXP_2 );
+
+ // tests for number primitive, number object, Object object, a "MyObject" whose value is
+ // a number primitive and a number object, and "MyValuelessObject", where the value is
+ // set in the object's prototype, not the object itself.
+ var EXP_1 = 100; var EXP_2 = 1;
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = 100; var EXP_2 = 1; EXP_1 - EXP_2",
+ 99,
+ EXP_1 - EXP_2 );
+ var EXP_1 = new Number(100);
+ var EXP_2 = new Number(1);
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Number(100); var EXP_2 = new Number(1); EXP_1 - EXP_2",
+ 99,
+ EXP_1 - EXP_2 );
+ var EXP_1 = new Object(100);
+ var EXP_2 = new Object(1);
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Object(100); var EXP_2 = new Object(1); EXP_1 - EXP_2",
+ 99,
+ EXP_1 - EXP_2 );
+ var EXP_1 = new Object(new Number(100)); var EXP_2 = new Object(new Number(1));
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new Object(new Number(100)); var EXP_2 = new Object(new Number(1)); EXP_1 - EXP_2",
+ 99,
+ EXP_1 - EXP_2 );
+ var EXP_1 = new MyObject(100); var EXP_2 = new MyObject(1);
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyObject(100); var EXP_2 = new MyObject(1); EXP_1 - EXP_2",
+ 99,
+ EXP_1 - EXP_2 );
+ var EXP_1 = new MyObject(new Number(100));
+ var EXP_2 = new MyObject(new Number(1));
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyObject(new Number(100)); var EXP_2 = new MyObject(new Number(1)); EXP_1 - EXP_2",
+ 99,
+ EXP_1 - EXP_2 );
+ var EXP_1 = new MyOtherObject(new Number(100)); var EXP_2 = new MyOtherObject(new Number(1));
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyOtherObject(new Number(100)); var EXP_2 = new MyOtherObject(new Number(1)); EXP_1 - EXP_2",
+ 99,
+ EXP_1 - EXP_2 );
+ var EXP_1 = new MyValuelessObject(100);
+ var EXP_2 = new MyValuelessObject(1);
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyValuelessObject(100); var EXP_2 = new MyValuelessObject(1); EXP_1 - EXP_2",
+ 0,
+ EXP_1 - EXP_2 );
+ // same thing with string!
+ var EXP_1 = new MyOtherObject(new String('0xff')); var EXP_2 = new MyOtherObject(new String('1'));
+ array[item++] = Assert.expectEq(
+ "var EXP_1 = new MyOtherObject(new String('0xff')); var EXP_2 = new MyOtherObject(new String('1'); EXP_1 - EXP_2",
+ 254,
+ EXP_1 - EXP_2 );
+
+ return ( array );
+}
+function MyProtoValuelessObject() {
+ this.valueOf = function (){ "" };
+ this.constructor.prototype = null;
+}
+function MyProtolessObject( value ) {
+ this.valueOf = function(){return this.value};
+ this.constructor.prototype= null;
+ this.value = value;
+}
+function MyValuelessObject(value) {
+ this.constructor.prototype= new MyPrototypeObject(value);
+}
+function MyPrototypeObject(value) {
+ this.valueOf = function(){return this.value};
+ this.toString = function(){return this.value + ''};
+ this.value = value;
+}
+function MyObject( value ) {
+ this.valueOf = function( ){return this.value};
+ this.value = value;
+}
+function MyOtherObject( value ) {
+ this.valueOf = function( ) { return this.value; };
+ this.toString = function( ) { return this.value + ''; };
+ this.value = value;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_2_1/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_2_1/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_2_1/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_2_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_2_1/output.txt
new file mode 100644
index 000000000..d2bc03ccf
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_2_1/output.txt
@@ -0,0 +1,18 @@
+var EXP_1 = true; var EXP_2 = false; EXP_1 - EXP_2 PASSED!
+var EXP_1 = new Boolean(true); var EXP_2 = new Boolean(false); EXP_1 - EXP_2 PASSED!
+var EXP_1 = new Object(true); var EXP_2 = new Object(false); EXP_1 - EXP_2 PASSED!
+var EXP_1 = new Object(new Boolean(true)); var EXP_2 = new Object(new Boolean(false)); EXP_1 - EXP_2 PASSED!
+var EXP_1 = new MyObject(true); var EXP_2 = new MyObject(false); EXP_1 - EXP_2 PASSED!
+var EXP_1 = new MyObject(new Boolean(true)); var EXP_2 = new MyObject(new Boolean(false)); EXP_1 - EXP_2 PASSED!
+var EXP_1 = new MyOtherObject(new Boolean(true)); var EXP_2 = new MyOtherObject(new Boolean(false)); EXP_1 - EXP_2 PASSED!
+var EXP_1 = new MyValuelessObject(true); var EXP_2 = new MyValuelessObject(false); EXP_1 - EXP_2 PASSED!
+var EXP_1 = new MyValuelessObject(new Boolean(true)); var EXP_2 = new MyValuelessObject(new Boolean(false)); EXP_1 - EXP_2 PASSED!
+var EXP_1 = 100; var EXP_2 = 1; EXP_1 - EXP_2 PASSED!
+var EXP_1 = new Number(100); var EXP_2 = new Number(1); EXP_1 - EXP_2 PASSED!
+var EXP_1 = new Object(100); var EXP_2 = new Object(1); EXP_1 - EXP_2 PASSED!
+var EXP_1 = new Object(new Number(100)); var EXP_2 = new Object(new Number(1)); EXP_1 - EXP_2 PASSED!
+var EXP_1 = new MyObject(100); var EXP_2 = new MyObject(1); EXP_1 - EXP_2 PASSED!
+var EXP_1 = new MyObject(new Number(100)); var EXP_2 = new MyObject(new Number(1)); EXP_1 - EXP_2 PASSED!
+var EXP_1 = new MyOtherObject(new Number(100)); var EXP_2 = new MyOtherObject(new Number(1)); EXP_1 - EXP_2 PASSED!
+var EXP_1 = new MyValuelessObject(100); var EXP_2 = new MyValuelessObject(1); EXP_1 - EXP_2 PASSED!
+var EXP_1 = new MyOtherObject(new String('0xff')); var EXP_2 = new MyOtherObject(new String('1'); EXP_1 - EXP_2 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_2_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_2_1/test.swf
new file mode 100644
index 000000000..743ac6ffd
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_2_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_2_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_2_1/test.toml
new file mode 100644
index 000000000..29f3cef79
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_2_1/test.toml
@@ -0,0 +1,2 @@
+num_ticks = 1
+known_failure = true
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_3/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_3/Test.as
new file mode 100644
index 000000000..46bff2830
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_3/Test.as
@@ -0,0 +1,73 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_6_3";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ array[item++] = Assert.expectEq( "Number.NaN + 1", Number.NaN, Number.NaN + 1 );
+ array[item++] = Assert.expectEq( "1 + Number.NaN", Number.NaN, 1 + Number.NaN );
+
+ array[item++] = Assert.expectEq( "Number.NaN - 1", Number.NaN, Number.NaN - 1 );
+ array[item++] = Assert.expectEq( "1 - Number.NaN", Number.NaN, 1 - Number.NaN );
+
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY + Number.POSITIVE_INFINITY", Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY + Number.POSITIVE_INFINITY);
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY + Number.NEGATIVE_INFINITY", Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY + Number.NEGATIVE_INFINITY);
+
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY + Number.NEGATIVE_INFINITY", Number.NaN, Number.POSITIVE_INFINITY + Number.NEGATIVE_INFINITY);
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY + Number.POSITIVE_INFINITY", Number.NaN, Number.NEGATIVE_INFINITY + Number.POSITIVE_INFINITY);
+
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY - Number.POSITIVE_INFINITY", Number.NaN, Number.POSITIVE_INFINITY - Number.POSITIVE_INFINITY);
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY - Number.NEGATIVE_INFINITY", Number.NaN, Number.NEGATIVE_INFINITY - Number.NEGATIVE_INFINITY);
+
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY - Number.NEGATIVE_INFINITY", Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY - Number.NEGATIVE_INFINITY);
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY - Number.POSITIVE_INFINITY", Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY - Number.POSITIVE_INFINITY);
+
+ array[item++] = Assert.expectEq( "-0 + -0", -0, -0 + -0 );
+ array[item++] = Assert.expectEq( "-0 - 0", -0, -0 - 0 );
+
+ array[item++] = Assert.expectEq( "0 + 0", 0, 0 + 0 );
+ array[item++] = Assert.expectEq( "0 + -0", 0, 0 + -0 );
+ array[item++] = Assert.expectEq( "0 - -0", 0, 0 - -0 );
+ array[item++] = Assert.expectEq( "0 - 0", 0, 0 - 0 );
+ array[item++] = Assert.expectEq( "-0 - -0", 0, -0 - -0 );
+ array[item++] = Assert.expectEq( "-0 + 0", 0, -0 + 0 );
+
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE - Number.MAX_VALUE", 0, Number.MAX_VALUE - Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "1/Number.MAX_VALUE - 1/Number.MAX_VALUE", 0, 1/Number.MAX_VALUE - 1/Number.MAX_VALUE );
+
+ array[item++] = Assert.expectEq( "Number.MIN_VALUE - Number.MIN_VALUE", 0, Number.MIN_VALUE - Number.MIN_VALUE );
+
+// the sum of an infinity and a finite value is equal to the infinite operand
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY + 543.87", Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY + 543.87);
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY + 87456.093", Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY + 87456.093);
+ array[item++] = Assert.expectEq( "95665 + Number.POSITIVE_INFINITY ", Number.POSITIVE_INFINITY, 95665 + Number.POSITIVE_INFINITY);
+ array[item++] = Assert.expectEq( "32.543906 + Number.NEGATIVE_INFINITY ", Number.NEGATIVE_INFINITY, 32.543906 + Number.NEGATIVE_INFINITY);
+
+// the sum of a zero and a nonzero finite value is equal to the nonzero operand
+ array[item++] = Assert.expectEq( "0 + 40453.65", 40453.65, 0 + 40453.65 );
+ array[item++] = Assert.expectEq( "0 - 745.33", -745.33, 0 - 745.33);
+ array[item++] = Assert.expectEq( "67007.5 + 0", 67007.5 , 67007.5 + 0 );
+ array[item++] = Assert.expectEq( "2480.00 - 0", 2480.00 , 2480.00 - 0 );
+
+// the sum of two nonzero finite values of the same magnitude and opposite sign is +0
+ array[item++] = Assert.expectEq( "2480.00 + -2480.00", +0 , 2480.00 + -2480.00 );
+ array[item++] = Assert.expectEq( "-268.05 + 268.05", +0 , -268.05 + 268.05 );
+
+ //array[item++] = Assert.expectEq( "Number.MAX_VALUE + 1", "1.797693134862316e+308", Number.MAX_VALUE + 1+""); [NA] this fails on FP for me
+ //array[item++] = Assert.expectEq( "Number.MAX_VALUE + 99.99", "1.797693134862316e+308", Number.MAX_VALUE + 99.99+"" ); [NA] this fails on FP for me
+ array[item++] = Assert.expectEq( "4324.43 + (-64.000503)", 4260.429497, 4324.43 + (-64.000503) );
+
+
+ return ( array );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_3/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_3/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_3/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_3/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_3/output.txt
new file mode 100644
index 000000000..8d6ffaaa8
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_3/output.txt
@@ -0,0 +1,34 @@
+Number.NaN + 1 PASSED!
+1 + Number.NaN PASSED!
+Number.NaN - 1 PASSED!
+1 - Number.NaN PASSED!
+Number.POSITIVE_INFINITY + Number.POSITIVE_INFINITY PASSED!
+Number.NEGATIVE_INFINITY + Number.NEGATIVE_INFINITY PASSED!
+Number.POSITIVE_INFINITY + Number.NEGATIVE_INFINITY PASSED!
+Number.NEGATIVE_INFINITY + Number.POSITIVE_INFINITY PASSED!
+Number.POSITIVE_INFINITY - Number.POSITIVE_INFINITY PASSED!
+Number.NEGATIVE_INFINITY - Number.NEGATIVE_INFINITY PASSED!
+Number.POSITIVE_INFINITY - Number.NEGATIVE_INFINITY PASSED!
+Number.NEGATIVE_INFINITY - Number.POSITIVE_INFINITY PASSED!
+-0 + -0 PASSED!
+-0 - 0 PASSED!
+0 + 0 PASSED!
+0 + -0 PASSED!
+0 - -0 PASSED!
+0 - 0 PASSED!
+-0 - -0 PASSED!
+-0 + 0 PASSED!
+Number.MAX_VALUE - Number.MAX_VALUE PASSED!
+1/Number.MAX_VALUE - 1/Number.MAX_VALUE PASSED!
+Number.MIN_VALUE - Number.MIN_VALUE PASSED!
+Number.POSITIVE_INFINITY + 543.87 PASSED!
+Number.NEGATIVE_INFINITY + 87456.093 PASSED!
+95665 + Number.POSITIVE_INFINITY PASSED!
+32.543906 + Number.NEGATIVE_INFINITY PASSED!
+0 + 40453.65 PASSED!
+0 - 745.33 PASSED!
+67007.5 + 0 PASSED!
+2480.00 - 0 PASSED!
+2480.00 + -2480.00 PASSED!
+-268.05 + 268.05 PASSED!
+4324.43 + (-64.000503) PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_3/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_3/test.swf
new file mode 100644
index 000000000..9cdc78f7b
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_3/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_3/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_3/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_6_3/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_1/Test.as
new file mode 100644
index 000000000..6c2db77db
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_1/Test.as
@@ -0,0 +1,175 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_7_1";
+// var VERSION = "ECMA_1";
+
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ for ( power = 0; power < 33; power++ ) {
+ shiftexp = Math.pow( 2, power );
+
+ for ( addexp = 0; addexp < 33; addexp++ ) {
+ array[item++] = Assert.expectEq(
+ shiftexp + " << " + addexp,
+ LeftShift( shiftexp, addexp ),
+ shiftexp << addexp );
+ }
+ }
+
+ return ( array );
+}
+function ToInteger( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( n != n ) {
+ return 0;
+ }
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY ) {
+ return n;
+ }
+ return ( sign * Math.floor(Math.abs(n)) );
+}
+function ToInt32( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+
+ n = (sign * Math.floor( Math.abs(n) )) % Math.pow(2,32);
+ n = ( n >= Math.pow(2,31) ) ? n - Math.pow(2,32) : n;
+
+ return ( n );
+}
+function ToUint32( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+ n = sign * Math.floor( Math.abs(n) )
+
+ n = n % Math.pow(2,32);
+
+ if ( n < 0 ){
+ n += Math.pow(2,32);
+ }
+
+ return ( n );
+}
+function ToUint16( n ) {
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+
+ n = ( sign * Math.floor( Math.abs(n) ) ) % Math.pow(2,16);
+
+ if (n <0) {
+ n += Math.pow(2,16);
+ }
+
+ return ( n );
+}
+function Mask( b, n ) {
+ b = ToUint32BitString( b );
+ b = b.substring( b.length - n );
+ b = ToUint32Decimal( b );
+ return ( b );
+}
+function ToUint32BitString( n ) {
+ var b = "";
+ for ( p = 31; p >=0; p-- ) {
+ if ( n >= Math.pow(2,p) ) {
+ b += "1";
+ n -= Math.pow(2,p);
+ } else {
+ b += "0";
+ }
+ }
+ return b;
+}
+function ToInt32BitString( n ) {
+ var b = "";
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ b += ( sign == 1 ) ? "0" : "1";
+
+ for ( p = 30; p >=0; p-- ) {
+ if ( (sign == 1 ) ? sign * n >= Math.pow(2,p) : sign * n > Math.pow(2,p) ) {
+ b += ( sign == 1 ) ? "1" : "0";
+ n -= sign * Math.pow( 2, p );
+ } else {
+ b += ( sign == 1 ) ? "0" : "1";
+ }
+ }
+
+ return b;
+}
+function ToInt32Decimal( bin ) {
+ var r = 0;
+ var sign;
+
+ if ( Number(bin.charAt(0)) == 0 ) {
+ sign = 1;
+ r = 0;
+ } else {
+ sign = -1;
+ r = -(Math.pow(2,31));
+ }
+
+ for ( var j = 0; j < 31; j++ ) {
+ r += Math.pow( 2, j ) * Number(bin.charAt(31-j));
+ }
+
+ return r;
+}
+function ToUint32Decimal( bin ) {
+ var r = 0;
+
+
+ for ( l = bin.length; l < 32; l++ ) {
+ bin = "0" + bin;
+ }
+
+ for ( j = 0; j < 31; j++ ) {
+ r += Math.pow( 2, j ) * Number(bin.charAt(31-j));
+
+ }
+
+ return r;
+}
+function LeftShift( s, a ) {
+ var shift = ToInt32( s );
+ var add = ToUint32( a );
+ add = Mask( add, 5 );
+ var exp = LShift( shift, add );
+
+ return ( exp );
+}
+function LShift( s, a ) {
+ s = ToInt32BitString( s );
+
+ for ( var z = 0; z < a; z++ ) {
+ s += "0";
+ }
+
+ s = s.substring( a, s.length);
+
+ return ToInt32(ToInt32Decimal(s));
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_1/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_1/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_1/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_1/output.txt
new file mode 100644
index 000000000..3eba5d3e4
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_1/output.txt
@@ -0,0 +1,1089 @@
+1 << 0 PASSED!
+1 << 1 PASSED!
+1 << 2 PASSED!
+1 << 3 PASSED!
+1 << 4 PASSED!
+1 << 5 PASSED!
+1 << 6 PASSED!
+1 << 7 PASSED!
+1 << 8 PASSED!
+1 << 9 PASSED!
+1 << 10 PASSED!
+1 << 11 PASSED!
+1 << 12 PASSED!
+1 << 13 PASSED!
+1 << 14 PASSED!
+1 << 15 PASSED!
+1 << 16 PASSED!
+1 << 17 PASSED!
+1 << 18 PASSED!
+1 << 19 PASSED!
+1 << 20 PASSED!
+1 << 21 PASSED!
+1 << 22 PASSED!
+1 << 23 PASSED!
+1 << 24 PASSED!
+1 << 25 PASSED!
+1 << 26 PASSED!
+1 << 27 PASSED!
+1 << 28 PASSED!
+1 << 29 PASSED!
+1 << 30 PASSED!
+1 << 31 PASSED!
+1 << 32 PASSED!
+2 << 0 PASSED!
+2 << 1 PASSED!
+2 << 2 PASSED!
+2 << 3 PASSED!
+2 << 4 PASSED!
+2 << 5 PASSED!
+2 << 6 PASSED!
+2 << 7 PASSED!
+2 << 8 PASSED!
+2 << 9 PASSED!
+2 << 10 PASSED!
+2 << 11 PASSED!
+2 << 12 PASSED!
+2 << 13 PASSED!
+2 << 14 PASSED!
+2 << 15 PASSED!
+2 << 16 PASSED!
+2 << 17 PASSED!
+2 << 18 PASSED!
+2 << 19 PASSED!
+2 << 20 PASSED!
+2 << 21 PASSED!
+2 << 22 PASSED!
+2 << 23 PASSED!
+2 << 24 PASSED!
+2 << 25 PASSED!
+2 << 26 PASSED!
+2 << 27 PASSED!
+2 << 28 PASSED!
+2 << 29 PASSED!
+2 << 30 PASSED!
+2 << 31 PASSED!
+2 << 32 PASSED!
+4 << 0 PASSED!
+4 << 1 PASSED!
+4 << 2 PASSED!
+4 << 3 PASSED!
+4 << 4 PASSED!
+4 << 5 PASSED!
+4 << 6 PASSED!
+4 << 7 PASSED!
+4 << 8 PASSED!
+4 << 9 PASSED!
+4 << 10 PASSED!
+4 << 11 PASSED!
+4 << 12 PASSED!
+4 << 13 PASSED!
+4 << 14 PASSED!
+4 << 15 PASSED!
+4 << 16 PASSED!
+4 << 17 PASSED!
+4 << 18 PASSED!
+4 << 19 PASSED!
+4 << 20 PASSED!
+4 << 21 PASSED!
+4 << 22 PASSED!
+4 << 23 PASSED!
+4 << 24 PASSED!
+4 << 25 PASSED!
+4 << 26 PASSED!
+4 << 27 PASSED!
+4 << 28 PASSED!
+4 << 29 PASSED!
+4 << 30 PASSED!
+4 << 31 PASSED!
+4 << 32 PASSED!
+8 << 0 PASSED!
+8 << 1 PASSED!
+8 << 2 PASSED!
+8 << 3 PASSED!
+8 << 4 PASSED!
+8 << 5 PASSED!
+8 << 6 PASSED!
+8 << 7 PASSED!
+8 << 8 PASSED!
+8 << 9 PASSED!
+8 << 10 PASSED!
+8 << 11 PASSED!
+8 << 12 PASSED!
+8 << 13 PASSED!
+8 << 14 PASSED!
+8 << 15 PASSED!
+8 << 16 PASSED!
+8 << 17 PASSED!
+8 << 18 PASSED!
+8 << 19 PASSED!
+8 << 20 PASSED!
+8 << 21 PASSED!
+8 << 22 PASSED!
+8 << 23 PASSED!
+8 << 24 PASSED!
+8 << 25 PASSED!
+8 << 26 PASSED!
+8 << 27 PASSED!
+8 << 28 PASSED!
+8 << 29 PASSED!
+8 << 30 PASSED!
+8 << 31 PASSED!
+8 << 32 PASSED!
+16 << 0 PASSED!
+16 << 1 PASSED!
+16 << 2 PASSED!
+16 << 3 PASSED!
+16 << 4 PASSED!
+16 << 5 PASSED!
+16 << 6 PASSED!
+16 << 7 PASSED!
+16 << 8 PASSED!
+16 << 9 PASSED!
+16 << 10 PASSED!
+16 << 11 PASSED!
+16 << 12 PASSED!
+16 << 13 PASSED!
+16 << 14 PASSED!
+16 << 15 PASSED!
+16 << 16 PASSED!
+16 << 17 PASSED!
+16 << 18 PASSED!
+16 << 19 PASSED!
+16 << 20 PASSED!
+16 << 21 PASSED!
+16 << 22 PASSED!
+16 << 23 PASSED!
+16 << 24 PASSED!
+16 << 25 PASSED!
+16 << 26 PASSED!
+16 << 27 PASSED!
+16 << 28 PASSED!
+16 << 29 PASSED!
+16 << 30 PASSED!
+16 << 31 PASSED!
+16 << 32 PASSED!
+32 << 0 PASSED!
+32 << 1 PASSED!
+32 << 2 PASSED!
+32 << 3 PASSED!
+32 << 4 PASSED!
+32 << 5 PASSED!
+32 << 6 PASSED!
+32 << 7 PASSED!
+32 << 8 PASSED!
+32 << 9 PASSED!
+32 << 10 PASSED!
+32 << 11 PASSED!
+32 << 12 PASSED!
+32 << 13 PASSED!
+32 << 14 PASSED!
+32 << 15 PASSED!
+32 << 16 PASSED!
+32 << 17 PASSED!
+32 << 18 PASSED!
+32 << 19 PASSED!
+32 << 20 PASSED!
+32 << 21 PASSED!
+32 << 22 PASSED!
+32 << 23 PASSED!
+32 << 24 PASSED!
+32 << 25 PASSED!
+32 << 26 PASSED!
+32 << 27 PASSED!
+32 << 28 PASSED!
+32 << 29 PASSED!
+32 << 30 PASSED!
+32 << 31 PASSED!
+32 << 32 PASSED!
+64 << 0 PASSED!
+64 << 1 PASSED!
+64 << 2 PASSED!
+64 << 3 PASSED!
+64 << 4 PASSED!
+64 << 5 PASSED!
+64 << 6 PASSED!
+64 << 7 PASSED!
+64 << 8 PASSED!
+64 << 9 PASSED!
+64 << 10 PASSED!
+64 << 11 PASSED!
+64 << 12 PASSED!
+64 << 13 PASSED!
+64 << 14 PASSED!
+64 << 15 PASSED!
+64 << 16 PASSED!
+64 << 17 PASSED!
+64 << 18 PASSED!
+64 << 19 PASSED!
+64 << 20 PASSED!
+64 << 21 PASSED!
+64 << 22 PASSED!
+64 << 23 PASSED!
+64 << 24 PASSED!
+64 << 25 PASSED!
+64 << 26 PASSED!
+64 << 27 PASSED!
+64 << 28 PASSED!
+64 << 29 PASSED!
+64 << 30 PASSED!
+64 << 31 PASSED!
+64 << 32 PASSED!
+128 << 0 PASSED!
+128 << 1 PASSED!
+128 << 2 PASSED!
+128 << 3 PASSED!
+128 << 4 PASSED!
+128 << 5 PASSED!
+128 << 6 PASSED!
+128 << 7 PASSED!
+128 << 8 PASSED!
+128 << 9 PASSED!
+128 << 10 PASSED!
+128 << 11 PASSED!
+128 << 12 PASSED!
+128 << 13 PASSED!
+128 << 14 PASSED!
+128 << 15 PASSED!
+128 << 16 PASSED!
+128 << 17 PASSED!
+128 << 18 PASSED!
+128 << 19 PASSED!
+128 << 20 PASSED!
+128 << 21 PASSED!
+128 << 22 PASSED!
+128 << 23 PASSED!
+128 << 24 PASSED!
+128 << 25 PASSED!
+128 << 26 PASSED!
+128 << 27 PASSED!
+128 << 28 PASSED!
+128 << 29 PASSED!
+128 << 30 PASSED!
+128 << 31 PASSED!
+128 << 32 PASSED!
+256 << 0 PASSED!
+256 << 1 PASSED!
+256 << 2 PASSED!
+256 << 3 PASSED!
+256 << 4 PASSED!
+256 << 5 PASSED!
+256 << 6 PASSED!
+256 << 7 PASSED!
+256 << 8 PASSED!
+256 << 9 PASSED!
+256 << 10 PASSED!
+256 << 11 PASSED!
+256 << 12 PASSED!
+256 << 13 PASSED!
+256 << 14 PASSED!
+256 << 15 PASSED!
+256 << 16 PASSED!
+256 << 17 PASSED!
+256 << 18 PASSED!
+256 << 19 PASSED!
+256 << 20 PASSED!
+256 << 21 PASSED!
+256 << 22 PASSED!
+256 << 23 PASSED!
+256 << 24 PASSED!
+256 << 25 PASSED!
+256 << 26 PASSED!
+256 << 27 PASSED!
+256 << 28 PASSED!
+256 << 29 PASSED!
+256 << 30 PASSED!
+256 << 31 PASSED!
+256 << 32 PASSED!
+512 << 0 PASSED!
+512 << 1 PASSED!
+512 << 2 PASSED!
+512 << 3 PASSED!
+512 << 4 PASSED!
+512 << 5 PASSED!
+512 << 6 PASSED!
+512 << 7 PASSED!
+512 << 8 PASSED!
+512 << 9 PASSED!
+512 << 10 PASSED!
+512 << 11 PASSED!
+512 << 12 PASSED!
+512 << 13 PASSED!
+512 << 14 PASSED!
+512 << 15 PASSED!
+512 << 16 PASSED!
+512 << 17 PASSED!
+512 << 18 PASSED!
+512 << 19 PASSED!
+512 << 20 PASSED!
+512 << 21 PASSED!
+512 << 22 PASSED!
+512 << 23 PASSED!
+512 << 24 PASSED!
+512 << 25 PASSED!
+512 << 26 PASSED!
+512 << 27 PASSED!
+512 << 28 PASSED!
+512 << 29 PASSED!
+512 << 30 PASSED!
+512 << 31 PASSED!
+512 << 32 PASSED!
+1024 << 0 PASSED!
+1024 << 1 PASSED!
+1024 << 2 PASSED!
+1024 << 3 PASSED!
+1024 << 4 PASSED!
+1024 << 5 PASSED!
+1024 << 6 PASSED!
+1024 << 7 PASSED!
+1024 << 8 PASSED!
+1024 << 9 PASSED!
+1024 << 10 PASSED!
+1024 << 11 PASSED!
+1024 << 12 PASSED!
+1024 << 13 PASSED!
+1024 << 14 PASSED!
+1024 << 15 PASSED!
+1024 << 16 PASSED!
+1024 << 17 PASSED!
+1024 << 18 PASSED!
+1024 << 19 PASSED!
+1024 << 20 PASSED!
+1024 << 21 PASSED!
+1024 << 22 PASSED!
+1024 << 23 PASSED!
+1024 << 24 PASSED!
+1024 << 25 PASSED!
+1024 << 26 PASSED!
+1024 << 27 PASSED!
+1024 << 28 PASSED!
+1024 << 29 PASSED!
+1024 << 30 PASSED!
+1024 << 31 PASSED!
+1024 << 32 PASSED!
+2048 << 0 PASSED!
+2048 << 1 PASSED!
+2048 << 2 PASSED!
+2048 << 3 PASSED!
+2048 << 4 PASSED!
+2048 << 5 PASSED!
+2048 << 6 PASSED!
+2048 << 7 PASSED!
+2048 << 8 PASSED!
+2048 << 9 PASSED!
+2048 << 10 PASSED!
+2048 << 11 PASSED!
+2048 << 12 PASSED!
+2048 << 13 PASSED!
+2048 << 14 PASSED!
+2048 << 15 PASSED!
+2048 << 16 PASSED!
+2048 << 17 PASSED!
+2048 << 18 PASSED!
+2048 << 19 PASSED!
+2048 << 20 PASSED!
+2048 << 21 PASSED!
+2048 << 22 PASSED!
+2048 << 23 PASSED!
+2048 << 24 PASSED!
+2048 << 25 PASSED!
+2048 << 26 PASSED!
+2048 << 27 PASSED!
+2048 << 28 PASSED!
+2048 << 29 PASSED!
+2048 << 30 PASSED!
+2048 << 31 PASSED!
+2048 << 32 PASSED!
+4096 << 0 PASSED!
+4096 << 1 PASSED!
+4096 << 2 PASSED!
+4096 << 3 PASSED!
+4096 << 4 PASSED!
+4096 << 5 PASSED!
+4096 << 6 PASSED!
+4096 << 7 PASSED!
+4096 << 8 PASSED!
+4096 << 9 PASSED!
+4096 << 10 PASSED!
+4096 << 11 PASSED!
+4096 << 12 PASSED!
+4096 << 13 PASSED!
+4096 << 14 PASSED!
+4096 << 15 PASSED!
+4096 << 16 PASSED!
+4096 << 17 PASSED!
+4096 << 18 PASSED!
+4096 << 19 PASSED!
+4096 << 20 PASSED!
+4096 << 21 PASSED!
+4096 << 22 PASSED!
+4096 << 23 PASSED!
+4096 << 24 PASSED!
+4096 << 25 PASSED!
+4096 << 26 PASSED!
+4096 << 27 PASSED!
+4096 << 28 PASSED!
+4096 << 29 PASSED!
+4096 << 30 PASSED!
+4096 << 31 PASSED!
+4096 << 32 PASSED!
+8192 << 0 PASSED!
+8192 << 1 PASSED!
+8192 << 2 PASSED!
+8192 << 3 PASSED!
+8192 << 4 PASSED!
+8192 << 5 PASSED!
+8192 << 6 PASSED!
+8192 << 7 PASSED!
+8192 << 8 PASSED!
+8192 << 9 PASSED!
+8192 << 10 PASSED!
+8192 << 11 PASSED!
+8192 << 12 PASSED!
+8192 << 13 PASSED!
+8192 << 14 PASSED!
+8192 << 15 PASSED!
+8192 << 16 PASSED!
+8192 << 17 PASSED!
+8192 << 18 PASSED!
+8192 << 19 PASSED!
+8192 << 20 PASSED!
+8192 << 21 PASSED!
+8192 << 22 PASSED!
+8192 << 23 PASSED!
+8192 << 24 PASSED!
+8192 << 25 PASSED!
+8192 << 26 PASSED!
+8192 << 27 PASSED!
+8192 << 28 PASSED!
+8192 << 29 PASSED!
+8192 << 30 PASSED!
+8192 << 31 PASSED!
+8192 << 32 PASSED!
+16384 << 0 PASSED!
+16384 << 1 PASSED!
+16384 << 2 PASSED!
+16384 << 3 PASSED!
+16384 << 4 PASSED!
+16384 << 5 PASSED!
+16384 << 6 PASSED!
+16384 << 7 PASSED!
+16384 << 8 PASSED!
+16384 << 9 PASSED!
+16384 << 10 PASSED!
+16384 << 11 PASSED!
+16384 << 12 PASSED!
+16384 << 13 PASSED!
+16384 << 14 PASSED!
+16384 << 15 PASSED!
+16384 << 16 PASSED!
+16384 << 17 PASSED!
+16384 << 18 PASSED!
+16384 << 19 PASSED!
+16384 << 20 PASSED!
+16384 << 21 PASSED!
+16384 << 22 PASSED!
+16384 << 23 PASSED!
+16384 << 24 PASSED!
+16384 << 25 PASSED!
+16384 << 26 PASSED!
+16384 << 27 PASSED!
+16384 << 28 PASSED!
+16384 << 29 PASSED!
+16384 << 30 PASSED!
+16384 << 31 PASSED!
+16384 << 32 PASSED!
+32768 << 0 PASSED!
+32768 << 1 PASSED!
+32768 << 2 PASSED!
+32768 << 3 PASSED!
+32768 << 4 PASSED!
+32768 << 5 PASSED!
+32768 << 6 PASSED!
+32768 << 7 PASSED!
+32768 << 8 PASSED!
+32768 << 9 PASSED!
+32768 << 10 PASSED!
+32768 << 11 PASSED!
+32768 << 12 PASSED!
+32768 << 13 PASSED!
+32768 << 14 PASSED!
+32768 << 15 PASSED!
+32768 << 16 PASSED!
+32768 << 17 PASSED!
+32768 << 18 PASSED!
+32768 << 19 PASSED!
+32768 << 20 PASSED!
+32768 << 21 PASSED!
+32768 << 22 PASSED!
+32768 << 23 PASSED!
+32768 << 24 PASSED!
+32768 << 25 PASSED!
+32768 << 26 PASSED!
+32768 << 27 PASSED!
+32768 << 28 PASSED!
+32768 << 29 PASSED!
+32768 << 30 PASSED!
+32768 << 31 PASSED!
+32768 << 32 PASSED!
+65536 << 0 PASSED!
+65536 << 1 PASSED!
+65536 << 2 PASSED!
+65536 << 3 PASSED!
+65536 << 4 PASSED!
+65536 << 5 PASSED!
+65536 << 6 PASSED!
+65536 << 7 PASSED!
+65536 << 8 PASSED!
+65536 << 9 PASSED!
+65536 << 10 PASSED!
+65536 << 11 PASSED!
+65536 << 12 PASSED!
+65536 << 13 PASSED!
+65536 << 14 PASSED!
+65536 << 15 PASSED!
+65536 << 16 PASSED!
+65536 << 17 PASSED!
+65536 << 18 PASSED!
+65536 << 19 PASSED!
+65536 << 20 PASSED!
+65536 << 21 PASSED!
+65536 << 22 PASSED!
+65536 << 23 PASSED!
+65536 << 24 PASSED!
+65536 << 25 PASSED!
+65536 << 26 PASSED!
+65536 << 27 PASSED!
+65536 << 28 PASSED!
+65536 << 29 PASSED!
+65536 << 30 PASSED!
+65536 << 31 PASSED!
+65536 << 32 PASSED!
+131072 << 0 PASSED!
+131072 << 1 PASSED!
+131072 << 2 PASSED!
+131072 << 3 PASSED!
+131072 << 4 PASSED!
+131072 << 5 PASSED!
+131072 << 6 PASSED!
+131072 << 7 PASSED!
+131072 << 8 PASSED!
+131072 << 9 PASSED!
+131072 << 10 PASSED!
+131072 << 11 PASSED!
+131072 << 12 PASSED!
+131072 << 13 PASSED!
+131072 << 14 PASSED!
+131072 << 15 PASSED!
+131072 << 16 PASSED!
+131072 << 17 PASSED!
+131072 << 18 PASSED!
+131072 << 19 PASSED!
+131072 << 20 PASSED!
+131072 << 21 PASSED!
+131072 << 22 PASSED!
+131072 << 23 PASSED!
+131072 << 24 PASSED!
+131072 << 25 PASSED!
+131072 << 26 PASSED!
+131072 << 27 PASSED!
+131072 << 28 PASSED!
+131072 << 29 PASSED!
+131072 << 30 PASSED!
+131072 << 31 PASSED!
+131072 << 32 PASSED!
+262144 << 0 PASSED!
+262144 << 1 PASSED!
+262144 << 2 PASSED!
+262144 << 3 PASSED!
+262144 << 4 PASSED!
+262144 << 5 PASSED!
+262144 << 6 PASSED!
+262144 << 7 PASSED!
+262144 << 8 PASSED!
+262144 << 9 PASSED!
+262144 << 10 PASSED!
+262144 << 11 PASSED!
+262144 << 12 PASSED!
+262144 << 13 PASSED!
+262144 << 14 PASSED!
+262144 << 15 PASSED!
+262144 << 16 PASSED!
+262144 << 17 PASSED!
+262144 << 18 PASSED!
+262144 << 19 PASSED!
+262144 << 20 PASSED!
+262144 << 21 PASSED!
+262144 << 22 PASSED!
+262144 << 23 PASSED!
+262144 << 24 PASSED!
+262144 << 25 PASSED!
+262144 << 26 PASSED!
+262144 << 27 PASSED!
+262144 << 28 PASSED!
+262144 << 29 PASSED!
+262144 << 30 PASSED!
+262144 << 31 PASSED!
+262144 << 32 PASSED!
+524288 << 0 PASSED!
+524288 << 1 PASSED!
+524288 << 2 PASSED!
+524288 << 3 PASSED!
+524288 << 4 PASSED!
+524288 << 5 PASSED!
+524288 << 6 PASSED!
+524288 << 7 PASSED!
+524288 << 8 PASSED!
+524288 << 9 PASSED!
+524288 << 10 PASSED!
+524288 << 11 PASSED!
+524288 << 12 PASSED!
+524288 << 13 PASSED!
+524288 << 14 PASSED!
+524288 << 15 PASSED!
+524288 << 16 PASSED!
+524288 << 17 PASSED!
+524288 << 18 PASSED!
+524288 << 19 PASSED!
+524288 << 20 PASSED!
+524288 << 21 PASSED!
+524288 << 22 PASSED!
+524288 << 23 PASSED!
+524288 << 24 PASSED!
+524288 << 25 PASSED!
+524288 << 26 PASSED!
+524288 << 27 PASSED!
+524288 << 28 PASSED!
+524288 << 29 PASSED!
+524288 << 30 PASSED!
+524288 << 31 PASSED!
+524288 << 32 PASSED!
+1048576 << 0 PASSED!
+1048576 << 1 PASSED!
+1048576 << 2 PASSED!
+1048576 << 3 PASSED!
+1048576 << 4 PASSED!
+1048576 << 5 PASSED!
+1048576 << 6 PASSED!
+1048576 << 7 PASSED!
+1048576 << 8 PASSED!
+1048576 << 9 PASSED!
+1048576 << 10 PASSED!
+1048576 << 11 PASSED!
+1048576 << 12 PASSED!
+1048576 << 13 PASSED!
+1048576 << 14 PASSED!
+1048576 << 15 PASSED!
+1048576 << 16 PASSED!
+1048576 << 17 PASSED!
+1048576 << 18 PASSED!
+1048576 << 19 PASSED!
+1048576 << 20 PASSED!
+1048576 << 21 PASSED!
+1048576 << 22 PASSED!
+1048576 << 23 PASSED!
+1048576 << 24 PASSED!
+1048576 << 25 PASSED!
+1048576 << 26 PASSED!
+1048576 << 27 PASSED!
+1048576 << 28 PASSED!
+1048576 << 29 PASSED!
+1048576 << 30 PASSED!
+1048576 << 31 PASSED!
+1048576 << 32 PASSED!
+2097152 << 0 PASSED!
+2097152 << 1 PASSED!
+2097152 << 2 PASSED!
+2097152 << 3 PASSED!
+2097152 << 4 PASSED!
+2097152 << 5 PASSED!
+2097152 << 6 PASSED!
+2097152 << 7 PASSED!
+2097152 << 8 PASSED!
+2097152 << 9 PASSED!
+2097152 << 10 PASSED!
+2097152 << 11 PASSED!
+2097152 << 12 PASSED!
+2097152 << 13 PASSED!
+2097152 << 14 PASSED!
+2097152 << 15 PASSED!
+2097152 << 16 PASSED!
+2097152 << 17 PASSED!
+2097152 << 18 PASSED!
+2097152 << 19 PASSED!
+2097152 << 20 PASSED!
+2097152 << 21 PASSED!
+2097152 << 22 PASSED!
+2097152 << 23 PASSED!
+2097152 << 24 PASSED!
+2097152 << 25 PASSED!
+2097152 << 26 PASSED!
+2097152 << 27 PASSED!
+2097152 << 28 PASSED!
+2097152 << 29 PASSED!
+2097152 << 30 PASSED!
+2097152 << 31 PASSED!
+2097152 << 32 PASSED!
+4194304 << 0 PASSED!
+4194304 << 1 PASSED!
+4194304 << 2 PASSED!
+4194304 << 3 PASSED!
+4194304 << 4 PASSED!
+4194304 << 5 PASSED!
+4194304 << 6 PASSED!
+4194304 << 7 PASSED!
+4194304 << 8 PASSED!
+4194304 << 9 PASSED!
+4194304 << 10 PASSED!
+4194304 << 11 PASSED!
+4194304 << 12 PASSED!
+4194304 << 13 PASSED!
+4194304 << 14 PASSED!
+4194304 << 15 PASSED!
+4194304 << 16 PASSED!
+4194304 << 17 PASSED!
+4194304 << 18 PASSED!
+4194304 << 19 PASSED!
+4194304 << 20 PASSED!
+4194304 << 21 PASSED!
+4194304 << 22 PASSED!
+4194304 << 23 PASSED!
+4194304 << 24 PASSED!
+4194304 << 25 PASSED!
+4194304 << 26 PASSED!
+4194304 << 27 PASSED!
+4194304 << 28 PASSED!
+4194304 << 29 PASSED!
+4194304 << 30 PASSED!
+4194304 << 31 PASSED!
+4194304 << 32 PASSED!
+8388608 << 0 PASSED!
+8388608 << 1 PASSED!
+8388608 << 2 PASSED!
+8388608 << 3 PASSED!
+8388608 << 4 PASSED!
+8388608 << 5 PASSED!
+8388608 << 6 PASSED!
+8388608 << 7 PASSED!
+8388608 << 8 PASSED!
+8388608 << 9 PASSED!
+8388608 << 10 PASSED!
+8388608 << 11 PASSED!
+8388608 << 12 PASSED!
+8388608 << 13 PASSED!
+8388608 << 14 PASSED!
+8388608 << 15 PASSED!
+8388608 << 16 PASSED!
+8388608 << 17 PASSED!
+8388608 << 18 PASSED!
+8388608 << 19 PASSED!
+8388608 << 20 PASSED!
+8388608 << 21 PASSED!
+8388608 << 22 PASSED!
+8388608 << 23 PASSED!
+8388608 << 24 PASSED!
+8388608 << 25 PASSED!
+8388608 << 26 PASSED!
+8388608 << 27 PASSED!
+8388608 << 28 PASSED!
+8388608 << 29 PASSED!
+8388608 << 30 PASSED!
+8388608 << 31 PASSED!
+8388608 << 32 PASSED!
+16777216 << 0 PASSED!
+16777216 << 1 PASSED!
+16777216 << 2 PASSED!
+16777216 << 3 PASSED!
+16777216 << 4 PASSED!
+16777216 << 5 PASSED!
+16777216 << 6 PASSED!
+16777216 << 7 PASSED!
+16777216 << 8 PASSED!
+16777216 << 9 PASSED!
+16777216 << 10 PASSED!
+16777216 << 11 PASSED!
+16777216 << 12 PASSED!
+16777216 << 13 PASSED!
+16777216 << 14 PASSED!
+16777216 << 15 PASSED!
+16777216 << 16 PASSED!
+16777216 << 17 PASSED!
+16777216 << 18 PASSED!
+16777216 << 19 PASSED!
+16777216 << 20 PASSED!
+16777216 << 21 PASSED!
+16777216 << 22 PASSED!
+16777216 << 23 PASSED!
+16777216 << 24 PASSED!
+16777216 << 25 PASSED!
+16777216 << 26 PASSED!
+16777216 << 27 PASSED!
+16777216 << 28 PASSED!
+16777216 << 29 PASSED!
+16777216 << 30 PASSED!
+16777216 << 31 PASSED!
+16777216 << 32 PASSED!
+33554432 << 0 PASSED!
+33554432 << 1 PASSED!
+33554432 << 2 PASSED!
+33554432 << 3 PASSED!
+33554432 << 4 PASSED!
+33554432 << 5 PASSED!
+33554432 << 6 PASSED!
+33554432 << 7 PASSED!
+33554432 << 8 PASSED!
+33554432 << 9 PASSED!
+33554432 << 10 PASSED!
+33554432 << 11 PASSED!
+33554432 << 12 PASSED!
+33554432 << 13 PASSED!
+33554432 << 14 PASSED!
+33554432 << 15 PASSED!
+33554432 << 16 PASSED!
+33554432 << 17 PASSED!
+33554432 << 18 PASSED!
+33554432 << 19 PASSED!
+33554432 << 20 PASSED!
+33554432 << 21 PASSED!
+33554432 << 22 PASSED!
+33554432 << 23 PASSED!
+33554432 << 24 PASSED!
+33554432 << 25 PASSED!
+33554432 << 26 PASSED!
+33554432 << 27 PASSED!
+33554432 << 28 PASSED!
+33554432 << 29 PASSED!
+33554432 << 30 PASSED!
+33554432 << 31 PASSED!
+33554432 << 32 PASSED!
+67108864 << 0 PASSED!
+67108864 << 1 PASSED!
+67108864 << 2 PASSED!
+67108864 << 3 PASSED!
+67108864 << 4 PASSED!
+67108864 << 5 PASSED!
+67108864 << 6 PASSED!
+67108864 << 7 PASSED!
+67108864 << 8 PASSED!
+67108864 << 9 PASSED!
+67108864 << 10 PASSED!
+67108864 << 11 PASSED!
+67108864 << 12 PASSED!
+67108864 << 13 PASSED!
+67108864 << 14 PASSED!
+67108864 << 15 PASSED!
+67108864 << 16 PASSED!
+67108864 << 17 PASSED!
+67108864 << 18 PASSED!
+67108864 << 19 PASSED!
+67108864 << 20 PASSED!
+67108864 << 21 PASSED!
+67108864 << 22 PASSED!
+67108864 << 23 PASSED!
+67108864 << 24 PASSED!
+67108864 << 25 PASSED!
+67108864 << 26 PASSED!
+67108864 << 27 PASSED!
+67108864 << 28 PASSED!
+67108864 << 29 PASSED!
+67108864 << 30 PASSED!
+67108864 << 31 PASSED!
+67108864 << 32 PASSED!
+134217728 << 0 PASSED!
+134217728 << 1 PASSED!
+134217728 << 2 PASSED!
+134217728 << 3 PASSED!
+134217728 << 4 PASSED!
+134217728 << 5 PASSED!
+134217728 << 6 PASSED!
+134217728 << 7 PASSED!
+134217728 << 8 PASSED!
+134217728 << 9 PASSED!
+134217728 << 10 PASSED!
+134217728 << 11 PASSED!
+134217728 << 12 PASSED!
+134217728 << 13 PASSED!
+134217728 << 14 PASSED!
+134217728 << 15 PASSED!
+134217728 << 16 PASSED!
+134217728 << 17 PASSED!
+134217728 << 18 PASSED!
+134217728 << 19 PASSED!
+134217728 << 20 PASSED!
+134217728 << 21 PASSED!
+134217728 << 22 PASSED!
+134217728 << 23 PASSED!
+134217728 << 24 PASSED!
+134217728 << 25 PASSED!
+134217728 << 26 PASSED!
+134217728 << 27 PASSED!
+134217728 << 28 PASSED!
+134217728 << 29 PASSED!
+134217728 << 30 PASSED!
+134217728 << 31 PASSED!
+134217728 << 32 PASSED!
+268435456 << 0 PASSED!
+268435456 << 1 PASSED!
+268435456 << 2 PASSED!
+268435456 << 3 PASSED!
+268435456 << 4 PASSED!
+268435456 << 5 PASSED!
+268435456 << 6 PASSED!
+268435456 << 7 PASSED!
+268435456 << 8 PASSED!
+268435456 << 9 PASSED!
+268435456 << 10 PASSED!
+268435456 << 11 PASSED!
+268435456 << 12 PASSED!
+268435456 << 13 PASSED!
+268435456 << 14 PASSED!
+268435456 << 15 PASSED!
+268435456 << 16 PASSED!
+268435456 << 17 PASSED!
+268435456 << 18 PASSED!
+268435456 << 19 PASSED!
+268435456 << 20 PASSED!
+268435456 << 21 PASSED!
+268435456 << 22 PASSED!
+268435456 << 23 PASSED!
+268435456 << 24 PASSED!
+268435456 << 25 PASSED!
+268435456 << 26 PASSED!
+268435456 << 27 PASSED!
+268435456 << 28 PASSED!
+268435456 << 29 PASSED!
+268435456 << 30 PASSED!
+268435456 << 31 PASSED!
+268435456 << 32 PASSED!
+536870912 << 0 PASSED!
+536870912 << 1 PASSED!
+536870912 << 2 PASSED!
+536870912 << 3 PASSED!
+536870912 << 4 PASSED!
+536870912 << 5 PASSED!
+536870912 << 6 PASSED!
+536870912 << 7 PASSED!
+536870912 << 8 PASSED!
+536870912 << 9 PASSED!
+536870912 << 10 PASSED!
+536870912 << 11 PASSED!
+536870912 << 12 PASSED!
+536870912 << 13 PASSED!
+536870912 << 14 PASSED!
+536870912 << 15 PASSED!
+536870912 << 16 PASSED!
+536870912 << 17 PASSED!
+536870912 << 18 PASSED!
+536870912 << 19 PASSED!
+536870912 << 20 PASSED!
+536870912 << 21 PASSED!
+536870912 << 22 PASSED!
+536870912 << 23 PASSED!
+536870912 << 24 PASSED!
+536870912 << 25 PASSED!
+536870912 << 26 PASSED!
+536870912 << 27 PASSED!
+536870912 << 28 PASSED!
+536870912 << 29 PASSED!
+536870912 << 30 PASSED!
+536870912 << 31 PASSED!
+536870912 << 32 PASSED!
+1073741824 << 0 PASSED!
+1073741824 << 1 PASSED!
+1073741824 << 2 PASSED!
+1073741824 << 3 PASSED!
+1073741824 << 4 PASSED!
+1073741824 << 5 PASSED!
+1073741824 << 6 PASSED!
+1073741824 << 7 PASSED!
+1073741824 << 8 PASSED!
+1073741824 << 9 PASSED!
+1073741824 << 10 PASSED!
+1073741824 << 11 PASSED!
+1073741824 << 12 PASSED!
+1073741824 << 13 PASSED!
+1073741824 << 14 PASSED!
+1073741824 << 15 PASSED!
+1073741824 << 16 PASSED!
+1073741824 << 17 PASSED!
+1073741824 << 18 PASSED!
+1073741824 << 19 PASSED!
+1073741824 << 20 PASSED!
+1073741824 << 21 PASSED!
+1073741824 << 22 PASSED!
+1073741824 << 23 PASSED!
+1073741824 << 24 PASSED!
+1073741824 << 25 PASSED!
+1073741824 << 26 PASSED!
+1073741824 << 27 PASSED!
+1073741824 << 28 PASSED!
+1073741824 << 29 PASSED!
+1073741824 << 30 PASSED!
+1073741824 << 31 PASSED!
+1073741824 << 32 PASSED!
+2147483648 << 0 PASSED!
+2147483648 << 1 PASSED!
+2147483648 << 2 PASSED!
+2147483648 << 3 PASSED!
+2147483648 << 4 PASSED!
+2147483648 << 5 PASSED!
+2147483648 << 6 PASSED!
+2147483648 << 7 PASSED!
+2147483648 << 8 PASSED!
+2147483648 << 9 PASSED!
+2147483648 << 10 PASSED!
+2147483648 << 11 PASSED!
+2147483648 << 12 PASSED!
+2147483648 << 13 PASSED!
+2147483648 << 14 PASSED!
+2147483648 << 15 PASSED!
+2147483648 << 16 PASSED!
+2147483648 << 17 PASSED!
+2147483648 << 18 PASSED!
+2147483648 << 19 PASSED!
+2147483648 << 20 PASSED!
+2147483648 << 21 PASSED!
+2147483648 << 22 PASSED!
+2147483648 << 23 PASSED!
+2147483648 << 24 PASSED!
+2147483648 << 25 PASSED!
+2147483648 << 26 PASSED!
+2147483648 << 27 PASSED!
+2147483648 << 28 PASSED!
+2147483648 << 29 PASSED!
+2147483648 << 30 PASSED!
+2147483648 << 31 PASSED!
+2147483648 << 32 PASSED!
+4294967296 << 0 PASSED!
+4294967296 << 1 PASSED!
+4294967296 << 2 PASSED!
+4294967296 << 3 PASSED!
+4294967296 << 4 PASSED!
+4294967296 << 5 PASSED!
+4294967296 << 6 PASSED!
+4294967296 << 7 PASSED!
+4294967296 << 8 PASSED!
+4294967296 << 9 PASSED!
+4294967296 << 10 PASSED!
+4294967296 << 11 PASSED!
+4294967296 << 12 PASSED!
+4294967296 << 13 PASSED!
+4294967296 << 14 PASSED!
+4294967296 << 15 PASSED!
+4294967296 << 16 PASSED!
+4294967296 << 17 PASSED!
+4294967296 << 18 PASSED!
+4294967296 << 19 PASSED!
+4294967296 << 20 PASSED!
+4294967296 << 21 PASSED!
+4294967296 << 22 PASSED!
+4294967296 << 23 PASSED!
+4294967296 << 24 PASSED!
+4294967296 << 25 PASSED!
+4294967296 << 26 PASSED!
+4294967296 << 27 PASSED!
+4294967296 << 28 PASSED!
+4294967296 << 29 PASSED!
+4294967296 << 30 PASSED!
+4294967296 << 31 PASSED!
+4294967296 << 32 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_1/test.swf
new file mode 100644
index 000000000..6b970820e
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_1/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_1/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_2/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_2/Test.as
new file mode 100644
index 000000000..c13535ecf
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_2/Test.as
@@ -0,0 +1,191 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_7_2";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+ var power = 0;
+ var addexp = 0;
+
+ for ( power = 0; power <= 32; power++ ) {
+ shiftexp = Math.pow( 2, power );
+
+ for ( addexp = 0; addexp <= 32; addexp++ ) {
+ array[item++] = Assert.expectEq(
+ shiftexp + " >> " + addexp,
+ SignedRightShift( shiftexp, addexp ),
+ shiftexp >> addexp );
+ }
+ }
+
+ for ( power = 0; power <= 32; power++ ) {
+ shiftexp = -Math.pow( 2, power );
+
+ for ( addexp = 0; addexp <= 32; addexp++ ) {
+ array[item++] = Assert.expectEq(
+ shiftexp + " >> " + addexp,
+ SignedRightShift( shiftexp, addexp ),
+ shiftexp >> addexp );
+ }
+ }
+
+ return ( array );
+}
+
+function ToInteger( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( n != n ) {
+ return 0;
+ }
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY ) {
+ return n;
+ }
+ return ( sign * Math.floor(Math.abs(n)) );
+}
+function ToInt32( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+
+ n = (sign * Math.floor( Math.abs(n) )) % Math.pow(2,32);
+ n = ( n >= Math.pow(2,31) ) ? n - Math.pow(2,32) : n;
+
+ return ( n );
+}
+function ToUint32( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+ n = sign * Math.floor( Math.abs(n) )
+
+ n = n % Math.pow(2,32);
+
+ if ( n < 0 ){
+ n += Math.pow(2,32);
+ }
+
+ return ( n );
+}
+function ToUint16( n ) {
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+
+ n = ( sign * Math.floor( Math.abs(n) ) ) % Math.pow(2,16);
+
+ if (n <0) {
+ n += Math.pow(2,16);
+ }
+
+ return ( n );
+}
+function Mask( b, n ) {
+ b = ToUint32BitString( b );
+ b = b.substring( b.length - n );
+ b = ToUint32Decimal( b );
+ return ( b );
+}
+function ToUint32BitString( n ) {
+ var b = "";
+ for ( p = 31; p >=0; p-- ) {
+ if ( n >= Math.pow(2,p) ) {
+ b += "1";
+ n -= Math.pow(2,p);
+ } else {
+ b += "0";
+ }
+ }
+ return b;
+}
+function ToInt32BitString( n ) {
+ var b = "";
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ b += ( sign == 1 ) ? "0" : "1";
+
+ for ( p = 30; p >=0; p-- ) {
+ if ( (sign == 1 ) ? sign * n >= Math.pow(2,p) : sign * n > Math.pow(2,p) ) {
+ b += ( sign == 1 ) ? "1" : "0";
+ n -= sign * Math.pow( 2, p );
+ } else {
+ b += ( sign == 1 ) ? "0" : "1";
+ }
+ }
+
+ return b;
+}
+function ToInt32Decimal( bin ) {
+ var r = 0;
+ var sign;
+
+ if ( Number(bin.charAt(0)) == 0 ) {
+ sign = 1;
+ r = 0;
+ } else {
+ sign = -1;
+ r = -(Math.pow(2,31));
+ }
+
+ for ( var j = 0; j < 31; j++ ) {
+ r += Math.pow( 2, j ) * Number(bin.charAt(31-j));
+ }
+
+ return r;
+}
+function ToUint32Decimal( bin ) {
+ var r = 0;
+
+ for ( l = bin.length; l < 32; l++ ) {
+ bin = "0" + bin;
+ }
+
+ for ( j = 0; j < 31; j++ ) {
+ r += Math.pow( 2, j ) * Number(bin.charAt(31-j));
+ }
+
+ return r;
+}
+function SignedRightShift( s, a ) {
+ s = ToInt32( s );
+ a = ToUint32( a );
+ a = Mask( a, 5 );
+ return ( SignedRShift( s, a ) );
+}
+function SignedRShift( s, a ) {
+ s = ToInt32BitString( s );
+
+ var firstbit = s.substring(0,1);
+
+ s = s.substring( 1, s.length );
+
+ for ( var z = 0; z < a; z++ ) {
+ s = firstbit + s;
+ }
+
+ s = s.substring( 0, s.length - a);
+
+ s = firstbit +s;
+
+
+ return ToInt32(ToInt32Decimal(s));
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_2/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_2/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_2/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_2/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_2/output.txt
new file mode 100644
index 000000000..ab25aa18b
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_2/output.txt
@@ -0,0 +1,2178 @@
+1 >> 0 PASSED!
+1 >> 1 PASSED!
+1 >> 2 PASSED!
+1 >> 3 PASSED!
+1 >> 4 PASSED!
+1 >> 5 PASSED!
+1 >> 6 PASSED!
+1 >> 7 PASSED!
+1 >> 8 PASSED!
+1 >> 9 PASSED!
+1 >> 10 PASSED!
+1 >> 11 PASSED!
+1 >> 12 PASSED!
+1 >> 13 PASSED!
+1 >> 14 PASSED!
+1 >> 15 PASSED!
+1 >> 16 PASSED!
+1 >> 17 PASSED!
+1 >> 18 PASSED!
+1 >> 19 PASSED!
+1 >> 20 PASSED!
+1 >> 21 PASSED!
+1 >> 22 PASSED!
+1 >> 23 PASSED!
+1 >> 24 PASSED!
+1 >> 25 PASSED!
+1 >> 26 PASSED!
+1 >> 27 PASSED!
+1 >> 28 PASSED!
+1 >> 29 PASSED!
+1 >> 30 PASSED!
+1 >> 31 PASSED!
+1 >> 32 PASSED!
+2 >> 0 PASSED!
+2 >> 1 PASSED!
+2 >> 2 PASSED!
+2 >> 3 PASSED!
+2 >> 4 PASSED!
+2 >> 5 PASSED!
+2 >> 6 PASSED!
+2 >> 7 PASSED!
+2 >> 8 PASSED!
+2 >> 9 PASSED!
+2 >> 10 PASSED!
+2 >> 11 PASSED!
+2 >> 12 PASSED!
+2 >> 13 PASSED!
+2 >> 14 PASSED!
+2 >> 15 PASSED!
+2 >> 16 PASSED!
+2 >> 17 PASSED!
+2 >> 18 PASSED!
+2 >> 19 PASSED!
+2 >> 20 PASSED!
+2 >> 21 PASSED!
+2 >> 22 PASSED!
+2 >> 23 PASSED!
+2 >> 24 PASSED!
+2 >> 25 PASSED!
+2 >> 26 PASSED!
+2 >> 27 PASSED!
+2 >> 28 PASSED!
+2 >> 29 PASSED!
+2 >> 30 PASSED!
+2 >> 31 PASSED!
+2 >> 32 PASSED!
+4 >> 0 PASSED!
+4 >> 1 PASSED!
+4 >> 2 PASSED!
+4 >> 3 PASSED!
+4 >> 4 PASSED!
+4 >> 5 PASSED!
+4 >> 6 PASSED!
+4 >> 7 PASSED!
+4 >> 8 PASSED!
+4 >> 9 PASSED!
+4 >> 10 PASSED!
+4 >> 11 PASSED!
+4 >> 12 PASSED!
+4 >> 13 PASSED!
+4 >> 14 PASSED!
+4 >> 15 PASSED!
+4 >> 16 PASSED!
+4 >> 17 PASSED!
+4 >> 18 PASSED!
+4 >> 19 PASSED!
+4 >> 20 PASSED!
+4 >> 21 PASSED!
+4 >> 22 PASSED!
+4 >> 23 PASSED!
+4 >> 24 PASSED!
+4 >> 25 PASSED!
+4 >> 26 PASSED!
+4 >> 27 PASSED!
+4 >> 28 PASSED!
+4 >> 29 PASSED!
+4 >> 30 PASSED!
+4 >> 31 PASSED!
+4 >> 32 PASSED!
+8 >> 0 PASSED!
+8 >> 1 PASSED!
+8 >> 2 PASSED!
+8 >> 3 PASSED!
+8 >> 4 PASSED!
+8 >> 5 PASSED!
+8 >> 6 PASSED!
+8 >> 7 PASSED!
+8 >> 8 PASSED!
+8 >> 9 PASSED!
+8 >> 10 PASSED!
+8 >> 11 PASSED!
+8 >> 12 PASSED!
+8 >> 13 PASSED!
+8 >> 14 PASSED!
+8 >> 15 PASSED!
+8 >> 16 PASSED!
+8 >> 17 PASSED!
+8 >> 18 PASSED!
+8 >> 19 PASSED!
+8 >> 20 PASSED!
+8 >> 21 PASSED!
+8 >> 22 PASSED!
+8 >> 23 PASSED!
+8 >> 24 PASSED!
+8 >> 25 PASSED!
+8 >> 26 PASSED!
+8 >> 27 PASSED!
+8 >> 28 PASSED!
+8 >> 29 PASSED!
+8 >> 30 PASSED!
+8 >> 31 PASSED!
+8 >> 32 PASSED!
+16 >> 0 PASSED!
+16 >> 1 PASSED!
+16 >> 2 PASSED!
+16 >> 3 PASSED!
+16 >> 4 PASSED!
+16 >> 5 PASSED!
+16 >> 6 PASSED!
+16 >> 7 PASSED!
+16 >> 8 PASSED!
+16 >> 9 PASSED!
+16 >> 10 PASSED!
+16 >> 11 PASSED!
+16 >> 12 PASSED!
+16 >> 13 PASSED!
+16 >> 14 PASSED!
+16 >> 15 PASSED!
+16 >> 16 PASSED!
+16 >> 17 PASSED!
+16 >> 18 PASSED!
+16 >> 19 PASSED!
+16 >> 20 PASSED!
+16 >> 21 PASSED!
+16 >> 22 PASSED!
+16 >> 23 PASSED!
+16 >> 24 PASSED!
+16 >> 25 PASSED!
+16 >> 26 PASSED!
+16 >> 27 PASSED!
+16 >> 28 PASSED!
+16 >> 29 PASSED!
+16 >> 30 PASSED!
+16 >> 31 PASSED!
+16 >> 32 PASSED!
+32 >> 0 PASSED!
+32 >> 1 PASSED!
+32 >> 2 PASSED!
+32 >> 3 PASSED!
+32 >> 4 PASSED!
+32 >> 5 PASSED!
+32 >> 6 PASSED!
+32 >> 7 PASSED!
+32 >> 8 PASSED!
+32 >> 9 PASSED!
+32 >> 10 PASSED!
+32 >> 11 PASSED!
+32 >> 12 PASSED!
+32 >> 13 PASSED!
+32 >> 14 PASSED!
+32 >> 15 PASSED!
+32 >> 16 PASSED!
+32 >> 17 PASSED!
+32 >> 18 PASSED!
+32 >> 19 PASSED!
+32 >> 20 PASSED!
+32 >> 21 PASSED!
+32 >> 22 PASSED!
+32 >> 23 PASSED!
+32 >> 24 PASSED!
+32 >> 25 PASSED!
+32 >> 26 PASSED!
+32 >> 27 PASSED!
+32 >> 28 PASSED!
+32 >> 29 PASSED!
+32 >> 30 PASSED!
+32 >> 31 PASSED!
+32 >> 32 PASSED!
+64 >> 0 PASSED!
+64 >> 1 PASSED!
+64 >> 2 PASSED!
+64 >> 3 PASSED!
+64 >> 4 PASSED!
+64 >> 5 PASSED!
+64 >> 6 PASSED!
+64 >> 7 PASSED!
+64 >> 8 PASSED!
+64 >> 9 PASSED!
+64 >> 10 PASSED!
+64 >> 11 PASSED!
+64 >> 12 PASSED!
+64 >> 13 PASSED!
+64 >> 14 PASSED!
+64 >> 15 PASSED!
+64 >> 16 PASSED!
+64 >> 17 PASSED!
+64 >> 18 PASSED!
+64 >> 19 PASSED!
+64 >> 20 PASSED!
+64 >> 21 PASSED!
+64 >> 22 PASSED!
+64 >> 23 PASSED!
+64 >> 24 PASSED!
+64 >> 25 PASSED!
+64 >> 26 PASSED!
+64 >> 27 PASSED!
+64 >> 28 PASSED!
+64 >> 29 PASSED!
+64 >> 30 PASSED!
+64 >> 31 PASSED!
+64 >> 32 PASSED!
+128 >> 0 PASSED!
+128 >> 1 PASSED!
+128 >> 2 PASSED!
+128 >> 3 PASSED!
+128 >> 4 PASSED!
+128 >> 5 PASSED!
+128 >> 6 PASSED!
+128 >> 7 PASSED!
+128 >> 8 PASSED!
+128 >> 9 PASSED!
+128 >> 10 PASSED!
+128 >> 11 PASSED!
+128 >> 12 PASSED!
+128 >> 13 PASSED!
+128 >> 14 PASSED!
+128 >> 15 PASSED!
+128 >> 16 PASSED!
+128 >> 17 PASSED!
+128 >> 18 PASSED!
+128 >> 19 PASSED!
+128 >> 20 PASSED!
+128 >> 21 PASSED!
+128 >> 22 PASSED!
+128 >> 23 PASSED!
+128 >> 24 PASSED!
+128 >> 25 PASSED!
+128 >> 26 PASSED!
+128 >> 27 PASSED!
+128 >> 28 PASSED!
+128 >> 29 PASSED!
+128 >> 30 PASSED!
+128 >> 31 PASSED!
+128 >> 32 PASSED!
+256 >> 0 PASSED!
+256 >> 1 PASSED!
+256 >> 2 PASSED!
+256 >> 3 PASSED!
+256 >> 4 PASSED!
+256 >> 5 PASSED!
+256 >> 6 PASSED!
+256 >> 7 PASSED!
+256 >> 8 PASSED!
+256 >> 9 PASSED!
+256 >> 10 PASSED!
+256 >> 11 PASSED!
+256 >> 12 PASSED!
+256 >> 13 PASSED!
+256 >> 14 PASSED!
+256 >> 15 PASSED!
+256 >> 16 PASSED!
+256 >> 17 PASSED!
+256 >> 18 PASSED!
+256 >> 19 PASSED!
+256 >> 20 PASSED!
+256 >> 21 PASSED!
+256 >> 22 PASSED!
+256 >> 23 PASSED!
+256 >> 24 PASSED!
+256 >> 25 PASSED!
+256 >> 26 PASSED!
+256 >> 27 PASSED!
+256 >> 28 PASSED!
+256 >> 29 PASSED!
+256 >> 30 PASSED!
+256 >> 31 PASSED!
+256 >> 32 PASSED!
+512 >> 0 PASSED!
+512 >> 1 PASSED!
+512 >> 2 PASSED!
+512 >> 3 PASSED!
+512 >> 4 PASSED!
+512 >> 5 PASSED!
+512 >> 6 PASSED!
+512 >> 7 PASSED!
+512 >> 8 PASSED!
+512 >> 9 PASSED!
+512 >> 10 PASSED!
+512 >> 11 PASSED!
+512 >> 12 PASSED!
+512 >> 13 PASSED!
+512 >> 14 PASSED!
+512 >> 15 PASSED!
+512 >> 16 PASSED!
+512 >> 17 PASSED!
+512 >> 18 PASSED!
+512 >> 19 PASSED!
+512 >> 20 PASSED!
+512 >> 21 PASSED!
+512 >> 22 PASSED!
+512 >> 23 PASSED!
+512 >> 24 PASSED!
+512 >> 25 PASSED!
+512 >> 26 PASSED!
+512 >> 27 PASSED!
+512 >> 28 PASSED!
+512 >> 29 PASSED!
+512 >> 30 PASSED!
+512 >> 31 PASSED!
+512 >> 32 PASSED!
+1024 >> 0 PASSED!
+1024 >> 1 PASSED!
+1024 >> 2 PASSED!
+1024 >> 3 PASSED!
+1024 >> 4 PASSED!
+1024 >> 5 PASSED!
+1024 >> 6 PASSED!
+1024 >> 7 PASSED!
+1024 >> 8 PASSED!
+1024 >> 9 PASSED!
+1024 >> 10 PASSED!
+1024 >> 11 PASSED!
+1024 >> 12 PASSED!
+1024 >> 13 PASSED!
+1024 >> 14 PASSED!
+1024 >> 15 PASSED!
+1024 >> 16 PASSED!
+1024 >> 17 PASSED!
+1024 >> 18 PASSED!
+1024 >> 19 PASSED!
+1024 >> 20 PASSED!
+1024 >> 21 PASSED!
+1024 >> 22 PASSED!
+1024 >> 23 PASSED!
+1024 >> 24 PASSED!
+1024 >> 25 PASSED!
+1024 >> 26 PASSED!
+1024 >> 27 PASSED!
+1024 >> 28 PASSED!
+1024 >> 29 PASSED!
+1024 >> 30 PASSED!
+1024 >> 31 PASSED!
+1024 >> 32 PASSED!
+2048 >> 0 PASSED!
+2048 >> 1 PASSED!
+2048 >> 2 PASSED!
+2048 >> 3 PASSED!
+2048 >> 4 PASSED!
+2048 >> 5 PASSED!
+2048 >> 6 PASSED!
+2048 >> 7 PASSED!
+2048 >> 8 PASSED!
+2048 >> 9 PASSED!
+2048 >> 10 PASSED!
+2048 >> 11 PASSED!
+2048 >> 12 PASSED!
+2048 >> 13 PASSED!
+2048 >> 14 PASSED!
+2048 >> 15 PASSED!
+2048 >> 16 PASSED!
+2048 >> 17 PASSED!
+2048 >> 18 PASSED!
+2048 >> 19 PASSED!
+2048 >> 20 PASSED!
+2048 >> 21 PASSED!
+2048 >> 22 PASSED!
+2048 >> 23 PASSED!
+2048 >> 24 PASSED!
+2048 >> 25 PASSED!
+2048 >> 26 PASSED!
+2048 >> 27 PASSED!
+2048 >> 28 PASSED!
+2048 >> 29 PASSED!
+2048 >> 30 PASSED!
+2048 >> 31 PASSED!
+2048 >> 32 PASSED!
+4096 >> 0 PASSED!
+4096 >> 1 PASSED!
+4096 >> 2 PASSED!
+4096 >> 3 PASSED!
+4096 >> 4 PASSED!
+4096 >> 5 PASSED!
+4096 >> 6 PASSED!
+4096 >> 7 PASSED!
+4096 >> 8 PASSED!
+4096 >> 9 PASSED!
+4096 >> 10 PASSED!
+4096 >> 11 PASSED!
+4096 >> 12 PASSED!
+4096 >> 13 PASSED!
+4096 >> 14 PASSED!
+4096 >> 15 PASSED!
+4096 >> 16 PASSED!
+4096 >> 17 PASSED!
+4096 >> 18 PASSED!
+4096 >> 19 PASSED!
+4096 >> 20 PASSED!
+4096 >> 21 PASSED!
+4096 >> 22 PASSED!
+4096 >> 23 PASSED!
+4096 >> 24 PASSED!
+4096 >> 25 PASSED!
+4096 >> 26 PASSED!
+4096 >> 27 PASSED!
+4096 >> 28 PASSED!
+4096 >> 29 PASSED!
+4096 >> 30 PASSED!
+4096 >> 31 PASSED!
+4096 >> 32 PASSED!
+8192 >> 0 PASSED!
+8192 >> 1 PASSED!
+8192 >> 2 PASSED!
+8192 >> 3 PASSED!
+8192 >> 4 PASSED!
+8192 >> 5 PASSED!
+8192 >> 6 PASSED!
+8192 >> 7 PASSED!
+8192 >> 8 PASSED!
+8192 >> 9 PASSED!
+8192 >> 10 PASSED!
+8192 >> 11 PASSED!
+8192 >> 12 PASSED!
+8192 >> 13 PASSED!
+8192 >> 14 PASSED!
+8192 >> 15 PASSED!
+8192 >> 16 PASSED!
+8192 >> 17 PASSED!
+8192 >> 18 PASSED!
+8192 >> 19 PASSED!
+8192 >> 20 PASSED!
+8192 >> 21 PASSED!
+8192 >> 22 PASSED!
+8192 >> 23 PASSED!
+8192 >> 24 PASSED!
+8192 >> 25 PASSED!
+8192 >> 26 PASSED!
+8192 >> 27 PASSED!
+8192 >> 28 PASSED!
+8192 >> 29 PASSED!
+8192 >> 30 PASSED!
+8192 >> 31 PASSED!
+8192 >> 32 PASSED!
+16384 >> 0 PASSED!
+16384 >> 1 PASSED!
+16384 >> 2 PASSED!
+16384 >> 3 PASSED!
+16384 >> 4 PASSED!
+16384 >> 5 PASSED!
+16384 >> 6 PASSED!
+16384 >> 7 PASSED!
+16384 >> 8 PASSED!
+16384 >> 9 PASSED!
+16384 >> 10 PASSED!
+16384 >> 11 PASSED!
+16384 >> 12 PASSED!
+16384 >> 13 PASSED!
+16384 >> 14 PASSED!
+16384 >> 15 PASSED!
+16384 >> 16 PASSED!
+16384 >> 17 PASSED!
+16384 >> 18 PASSED!
+16384 >> 19 PASSED!
+16384 >> 20 PASSED!
+16384 >> 21 PASSED!
+16384 >> 22 PASSED!
+16384 >> 23 PASSED!
+16384 >> 24 PASSED!
+16384 >> 25 PASSED!
+16384 >> 26 PASSED!
+16384 >> 27 PASSED!
+16384 >> 28 PASSED!
+16384 >> 29 PASSED!
+16384 >> 30 PASSED!
+16384 >> 31 PASSED!
+16384 >> 32 PASSED!
+32768 >> 0 PASSED!
+32768 >> 1 PASSED!
+32768 >> 2 PASSED!
+32768 >> 3 PASSED!
+32768 >> 4 PASSED!
+32768 >> 5 PASSED!
+32768 >> 6 PASSED!
+32768 >> 7 PASSED!
+32768 >> 8 PASSED!
+32768 >> 9 PASSED!
+32768 >> 10 PASSED!
+32768 >> 11 PASSED!
+32768 >> 12 PASSED!
+32768 >> 13 PASSED!
+32768 >> 14 PASSED!
+32768 >> 15 PASSED!
+32768 >> 16 PASSED!
+32768 >> 17 PASSED!
+32768 >> 18 PASSED!
+32768 >> 19 PASSED!
+32768 >> 20 PASSED!
+32768 >> 21 PASSED!
+32768 >> 22 PASSED!
+32768 >> 23 PASSED!
+32768 >> 24 PASSED!
+32768 >> 25 PASSED!
+32768 >> 26 PASSED!
+32768 >> 27 PASSED!
+32768 >> 28 PASSED!
+32768 >> 29 PASSED!
+32768 >> 30 PASSED!
+32768 >> 31 PASSED!
+32768 >> 32 PASSED!
+65536 >> 0 PASSED!
+65536 >> 1 PASSED!
+65536 >> 2 PASSED!
+65536 >> 3 PASSED!
+65536 >> 4 PASSED!
+65536 >> 5 PASSED!
+65536 >> 6 PASSED!
+65536 >> 7 PASSED!
+65536 >> 8 PASSED!
+65536 >> 9 PASSED!
+65536 >> 10 PASSED!
+65536 >> 11 PASSED!
+65536 >> 12 PASSED!
+65536 >> 13 PASSED!
+65536 >> 14 PASSED!
+65536 >> 15 PASSED!
+65536 >> 16 PASSED!
+65536 >> 17 PASSED!
+65536 >> 18 PASSED!
+65536 >> 19 PASSED!
+65536 >> 20 PASSED!
+65536 >> 21 PASSED!
+65536 >> 22 PASSED!
+65536 >> 23 PASSED!
+65536 >> 24 PASSED!
+65536 >> 25 PASSED!
+65536 >> 26 PASSED!
+65536 >> 27 PASSED!
+65536 >> 28 PASSED!
+65536 >> 29 PASSED!
+65536 >> 30 PASSED!
+65536 >> 31 PASSED!
+65536 >> 32 PASSED!
+131072 >> 0 PASSED!
+131072 >> 1 PASSED!
+131072 >> 2 PASSED!
+131072 >> 3 PASSED!
+131072 >> 4 PASSED!
+131072 >> 5 PASSED!
+131072 >> 6 PASSED!
+131072 >> 7 PASSED!
+131072 >> 8 PASSED!
+131072 >> 9 PASSED!
+131072 >> 10 PASSED!
+131072 >> 11 PASSED!
+131072 >> 12 PASSED!
+131072 >> 13 PASSED!
+131072 >> 14 PASSED!
+131072 >> 15 PASSED!
+131072 >> 16 PASSED!
+131072 >> 17 PASSED!
+131072 >> 18 PASSED!
+131072 >> 19 PASSED!
+131072 >> 20 PASSED!
+131072 >> 21 PASSED!
+131072 >> 22 PASSED!
+131072 >> 23 PASSED!
+131072 >> 24 PASSED!
+131072 >> 25 PASSED!
+131072 >> 26 PASSED!
+131072 >> 27 PASSED!
+131072 >> 28 PASSED!
+131072 >> 29 PASSED!
+131072 >> 30 PASSED!
+131072 >> 31 PASSED!
+131072 >> 32 PASSED!
+262144 >> 0 PASSED!
+262144 >> 1 PASSED!
+262144 >> 2 PASSED!
+262144 >> 3 PASSED!
+262144 >> 4 PASSED!
+262144 >> 5 PASSED!
+262144 >> 6 PASSED!
+262144 >> 7 PASSED!
+262144 >> 8 PASSED!
+262144 >> 9 PASSED!
+262144 >> 10 PASSED!
+262144 >> 11 PASSED!
+262144 >> 12 PASSED!
+262144 >> 13 PASSED!
+262144 >> 14 PASSED!
+262144 >> 15 PASSED!
+262144 >> 16 PASSED!
+262144 >> 17 PASSED!
+262144 >> 18 PASSED!
+262144 >> 19 PASSED!
+262144 >> 20 PASSED!
+262144 >> 21 PASSED!
+262144 >> 22 PASSED!
+262144 >> 23 PASSED!
+262144 >> 24 PASSED!
+262144 >> 25 PASSED!
+262144 >> 26 PASSED!
+262144 >> 27 PASSED!
+262144 >> 28 PASSED!
+262144 >> 29 PASSED!
+262144 >> 30 PASSED!
+262144 >> 31 PASSED!
+262144 >> 32 PASSED!
+524288 >> 0 PASSED!
+524288 >> 1 PASSED!
+524288 >> 2 PASSED!
+524288 >> 3 PASSED!
+524288 >> 4 PASSED!
+524288 >> 5 PASSED!
+524288 >> 6 PASSED!
+524288 >> 7 PASSED!
+524288 >> 8 PASSED!
+524288 >> 9 PASSED!
+524288 >> 10 PASSED!
+524288 >> 11 PASSED!
+524288 >> 12 PASSED!
+524288 >> 13 PASSED!
+524288 >> 14 PASSED!
+524288 >> 15 PASSED!
+524288 >> 16 PASSED!
+524288 >> 17 PASSED!
+524288 >> 18 PASSED!
+524288 >> 19 PASSED!
+524288 >> 20 PASSED!
+524288 >> 21 PASSED!
+524288 >> 22 PASSED!
+524288 >> 23 PASSED!
+524288 >> 24 PASSED!
+524288 >> 25 PASSED!
+524288 >> 26 PASSED!
+524288 >> 27 PASSED!
+524288 >> 28 PASSED!
+524288 >> 29 PASSED!
+524288 >> 30 PASSED!
+524288 >> 31 PASSED!
+524288 >> 32 PASSED!
+1048576 >> 0 PASSED!
+1048576 >> 1 PASSED!
+1048576 >> 2 PASSED!
+1048576 >> 3 PASSED!
+1048576 >> 4 PASSED!
+1048576 >> 5 PASSED!
+1048576 >> 6 PASSED!
+1048576 >> 7 PASSED!
+1048576 >> 8 PASSED!
+1048576 >> 9 PASSED!
+1048576 >> 10 PASSED!
+1048576 >> 11 PASSED!
+1048576 >> 12 PASSED!
+1048576 >> 13 PASSED!
+1048576 >> 14 PASSED!
+1048576 >> 15 PASSED!
+1048576 >> 16 PASSED!
+1048576 >> 17 PASSED!
+1048576 >> 18 PASSED!
+1048576 >> 19 PASSED!
+1048576 >> 20 PASSED!
+1048576 >> 21 PASSED!
+1048576 >> 22 PASSED!
+1048576 >> 23 PASSED!
+1048576 >> 24 PASSED!
+1048576 >> 25 PASSED!
+1048576 >> 26 PASSED!
+1048576 >> 27 PASSED!
+1048576 >> 28 PASSED!
+1048576 >> 29 PASSED!
+1048576 >> 30 PASSED!
+1048576 >> 31 PASSED!
+1048576 >> 32 PASSED!
+2097152 >> 0 PASSED!
+2097152 >> 1 PASSED!
+2097152 >> 2 PASSED!
+2097152 >> 3 PASSED!
+2097152 >> 4 PASSED!
+2097152 >> 5 PASSED!
+2097152 >> 6 PASSED!
+2097152 >> 7 PASSED!
+2097152 >> 8 PASSED!
+2097152 >> 9 PASSED!
+2097152 >> 10 PASSED!
+2097152 >> 11 PASSED!
+2097152 >> 12 PASSED!
+2097152 >> 13 PASSED!
+2097152 >> 14 PASSED!
+2097152 >> 15 PASSED!
+2097152 >> 16 PASSED!
+2097152 >> 17 PASSED!
+2097152 >> 18 PASSED!
+2097152 >> 19 PASSED!
+2097152 >> 20 PASSED!
+2097152 >> 21 PASSED!
+2097152 >> 22 PASSED!
+2097152 >> 23 PASSED!
+2097152 >> 24 PASSED!
+2097152 >> 25 PASSED!
+2097152 >> 26 PASSED!
+2097152 >> 27 PASSED!
+2097152 >> 28 PASSED!
+2097152 >> 29 PASSED!
+2097152 >> 30 PASSED!
+2097152 >> 31 PASSED!
+2097152 >> 32 PASSED!
+4194304 >> 0 PASSED!
+4194304 >> 1 PASSED!
+4194304 >> 2 PASSED!
+4194304 >> 3 PASSED!
+4194304 >> 4 PASSED!
+4194304 >> 5 PASSED!
+4194304 >> 6 PASSED!
+4194304 >> 7 PASSED!
+4194304 >> 8 PASSED!
+4194304 >> 9 PASSED!
+4194304 >> 10 PASSED!
+4194304 >> 11 PASSED!
+4194304 >> 12 PASSED!
+4194304 >> 13 PASSED!
+4194304 >> 14 PASSED!
+4194304 >> 15 PASSED!
+4194304 >> 16 PASSED!
+4194304 >> 17 PASSED!
+4194304 >> 18 PASSED!
+4194304 >> 19 PASSED!
+4194304 >> 20 PASSED!
+4194304 >> 21 PASSED!
+4194304 >> 22 PASSED!
+4194304 >> 23 PASSED!
+4194304 >> 24 PASSED!
+4194304 >> 25 PASSED!
+4194304 >> 26 PASSED!
+4194304 >> 27 PASSED!
+4194304 >> 28 PASSED!
+4194304 >> 29 PASSED!
+4194304 >> 30 PASSED!
+4194304 >> 31 PASSED!
+4194304 >> 32 PASSED!
+8388608 >> 0 PASSED!
+8388608 >> 1 PASSED!
+8388608 >> 2 PASSED!
+8388608 >> 3 PASSED!
+8388608 >> 4 PASSED!
+8388608 >> 5 PASSED!
+8388608 >> 6 PASSED!
+8388608 >> 7 PASSED!
+8388608 >> 8 PASSED!
+8388608 >> 9 PASSED!
+8388608 >> 10 PASSED!
+8388608 >> 11 PASSED!
+8388608 >> 12 PASSED!
+8388608 >> 13 PASSED!
+8388608 >> 14 PASSED!
+8388608 >> 15 PASSED!
+8388608 >> 16 PASSED!
+8388608 >> 17 PASSED!
+8388608 >> 18 PASSED!
+8388608 >> 19 PASSED!
+8388608 >> 20 PASSED!
+8388608 >> 21 PASSED!
+8388608 >> 22 PASSED!
+8388608 >> 23 PASSED!
+8388608 >> 24 PASSED!
+8388608 >> 25 PASSED!
+8388608 >> 26 PASSED!
+8388608 >> 27 PASSED!
+8388608 >> 28 PASSED!
+8388608 >> 29 PASSED!
+8388608 >> 30 PASSED!
+8388608 >> 31 PASSED!
+8388608 >> 32 PASSED!
+16777216 >> 0 PASSED!
+16777216 >> 1 PASSED!
+16777216 >> 2 PASSED!
+16777216 >> 3 PASSED!
+16777216 >> 4 PASSED!
+16777216 >> 5 PASSED!
+16777216 >> 6 PASSED!
+16777216 >> 7 PASSED!
+16777216 >> 8 PASSED!
+16777216 >> 9 PASSED!
+16777216 >> 10 PASSED!
+16777216 >> 11 PASSED!
+16777216 >> 12 PASSED!
+16777216 >> 13 PASSED!
+16777216 >> 14 PASSED!
+16777216 >> 15 PASSED!
+16777216 >> 16 PASSED!
+16777216 >> 17 PASSED!
+16777216 >> 18 PASSED!
+16777216 >> 19 PASSED!
+16777216 >> 20 PASSED!
+16777216 >> 21 PASSED!
+16777216 >> 22 PASSED!
+16777216 >> 23 PASSED!
+16777216 >> 24 PASSED!
+16777216 >> 25 PASSED!
+16777216 >> 26 PASSED!
+16777216 >> 27 PASSED!
+16777216 >> 28 PASSED!
+16777216 >> 29 PASSED!
+16777216 >> 30 PASSED!
+16777216 >> 31 PASSED!
+16777216 >> 32 PASSED!
+33554432 >> 0 PASSED!
+33554432 >> 1 PASSED!
+33554432 >> 2 PASSED!
+33554432 >> 3 PASSED!
+33554432 >> 4 PASSED!
+33554432 >> 5 PASSED!
+33554432 >> 6 PASSED!
+33554432 >> 7 PASSED!
+33554432 >> 8 PASSED!
+33554432 >> 9 PASSED!
+33554432 >> 10 PASSED!
+33554432 >> 11 PASSED!
+33554432 >> 12 PASSED!
+33554432 >> 13 PASSED!
+33554432 >> 14 PASSED!
+33554432 >> 15 PASSED!
+33554432 >> 16 PASSED!
+33554432 >> 17 PASSED!
+33554432 >> 18 PASSED!
+33554432 >> 19 PASSED!
+33554432 >> 20 PASSED!
+33554432 >> 21 PASSED!
+33554432 >> 22 PASSED!
+33554432 >> 23 PASSED!
+33554432 >> 24 PASSED!
+33554432 >> 25 PASSED!
+33554432 >> 26 PASSED!
+33554432 >> 27 PASSED!
+33554432 >> 28 PASSED!
+33554432 >> 29 PASSED!
+33554432 >> 30 PASSED!
+33554432 >> 31 PASSED!
+33554432 >> 32 PASSED!
+67108864 >> 0 PASSED!
+67108864 >> 1 PASSED!
+67108864 >> 2 PASSED!
+67108864 >> 3 PASSED!
+67108864 >> 4 PASSED!
+67108864 >> 5 PASSED!
+67108864 >> 6 PASSED!
+67108864 >> 7 PASSED!
+67108864 >> 8 PASSED!
+67108864 >> 9 PASSED!
+67108864 >> 10 PASSED!
+67108864 >> 11 PASSED!
+67108864 >> 12 PASSED!
+67108864 >> 13 PASSED!
+67108864 >> 14 PASSED!
+67108864 >> 15 PASSED!
+67108864 >> 16 PASSED!
+67108864 >> 17 PASSED!
+67108864 >> 18 PASSED!
+67108864 >> 19 PASSED!
+67108864 >> 20 PASSED!
+67108864 >> 21 PASSED!
+67108864 >> 22 PASSED!
+67108864 >> 23 PASSED!
+67108864 >> 24 PASSED!
+67108864 >> 25 PASSED!
+67108864 >> 26 PASSED!
+67108864 >> 27 PASSED!
+67108864 >> 28 PASSED!
+67108864 >> 29 PASSED!
+67108864 >> 30 PASSED!
+67108864 >> 31 PASSED!
+67108864 >> 32 PASSED!
+134217728 >> 0 PASSED!
+134217728 >> 1 PASSED!
+134217728 >> 2 PASSED!
+134217728 >> 3 PASSED!
+134217728 >> 4 PASSED!
+134217728 >> 5 PASSED!
+134217728 >> 6 PASSED!
+134217728 >> 7 PASSED!
+134217728 >> 8 PASSED!
+134217728 >> 9 PASSED!
+134217728 >> 10 PASSED!
+134217728 >> 11 PASSED!
+134217728 >> 12 PASSED!
+134217728 >> 13 PASSED!
+134217728 >> 14 PASSED!
+134217728 >> 15 PASSED!
+134217728 >> 16 PASSED!
+134217728 >> 17 PASSED!
+134217728 >> 18 PASSED!
+134217728 >> 19 PASSED!
+134217728 >> 20 PASSED!
+134217728 >> 21 PASSED!
+134217728 >> 22 PASSED!
+134217728 >> 23 PASSED!
+134217728 >> 24 PASSED!
+134217728 >> 25 PASSED!
+134217728 >> 26 PASSED!
+134217728 >> 27 PASSED!
+134217728 >> 28 PASSED!
+134217728 >> 29 PASSED!
+134217728 >> 30 PASSED!
+134217728 >> 31 PASSED!
+134217728 >> 32 PASSED!
+268435456 >> 0 PASSED!
+268435456 >> 1 PASSED!
+268435456 >> 2 PASSED!
+268435456 >> 3 PASSED!
+268435456 >> 4 PASSED!
+268435456 >> 5 PASSED!
+268435456 >> 6 PASSED!
+268435456 >> 7 PASSED!
+268435456 >> 8 PASSED!
+268435456 >> 9 PASSED!
+268435456 >> 10 PASSED!
+268435456 >> 11 PASSED!
+268435456 >> 12 PASSED!
+268435456 >> 13 PASSED!
+268435456 >> 14 PASSED!
+268435456 >> 15 PASSED!
+268435456 >> 16 PASSED!
+268435456 >> 17 PASSED!
+268435456 >> 18 PASSED!
+268435456 >> 19 PASSED!
+268435456 >> 20 PASSED!
+268435456 >> 21 PASSED!
+268435456 >> 22 PASSED!
+268435456 >> 23 PASSED!
+268435456 >> 24 PASSED!
+268435456 >> 25 PASSED!
+268435456 >> 26 PASSED!
+268435456 >> 27 PASSED!
+268435456 >> 28 PASSED!
+268435456 >> 29 PASSED!
+268435456 >> 30 PASSED!
+268435456 >> 31 PASSED!
+268435456 >> 32 PASSED!
+536870912 >> 0 PASSED!
+536870912 >> 1 PASSED!
+536870912 >> 2 PASSED!
+536870912 >> 3 PASSED!
+536870912 >> 4 PASSED!
+536870912 >> 5 PASSED!
+536870912 >> 6 PASSED!
+536870912 >> 7 PASSED!
+536870912 >> 8 PASSED!
+536870912 >> 9 PASSED!
+536870912 >> 10 PASSED!
+536870912 >> 11 PASSED!
+536870912 >> 12 PASSED!
+536870912 >> 13 PASSED!
+536870912 >> 14 PASSED!
+536870912 >> 15 PASSED!
+536870912 >> 16 PASSED!
+536870912 >> 17 PASSED!
+536870912 >> 18 PASSED!
+536870912 >> 19 PASSED!
+536870912 >> 20 PASSED!
+536870912 >> 21 PASSED!
+536870912 >> 22 PASSED!
+536870912 >> 23 PASSED!
+536870912 >> 24 PASSED!
+536870912 >> 25 PASSED!
+536870912 >> 26 PASSED!
+536870912 >> 27 PASSED!
+536870912 >> 28 PASSED!
+536870912 >> 29 PASSED!
+536870912 >> 30 PASSED!
+536870912 >> 31 PASSED!
+536870912 >> 32 PASSED!
+1073741824 >> 0 PASSED!
+1073741824 >> 1 PASSED!
+1073741824 >> 2 PASSED!
+1073741824 >> 3 PASSED!
+1073741824 >> 4 PASSED!
+1073741824 >> 5 PASSED!
+1073741824 >> 6 PASSED!
+1073741824 >> 7 PASSED!
+1073741824 >> 8 PASSED!
+1073741824 >> 9 PASSED!
+1073741824 >> 10 PASSED!
+1073741824 >> 11 PASSED!
+1073741824 >> 12 PASSED!
+1073741824 >> 13 PASSED!
+1073741824 >> 14 PASSED!
+1073741824 >> 15 PASSED!
+1073741824 >> 16 PASSED!
+1073741824 >> 17 PASSED!
+1073741824 >> 18 PASSED!
+1073741824 >> 19 PASSED!
+1073741824 >> 20 PASSED!
+1073741824 >> 21 PASSED!
+1073741824 >> 22 PASSED!
+1073741824 >> 23 PASSED!
+1073741824 >> 24 PASSED!
+1073741824 >> 25 PASSED!
+1073741824 >> 26 PASSED!
+1073741824 >> 27 PASSED!
+1073741824 >> 28 PASSED!
+1073741824 >> 29 PASSED!
+1073741824 >> 30 PASSED!
+1073741824 >> 31 PASSED!
+1073741824 >> 32 PASSED!
+2147483648 >> 0 PASSED!
+2147483648 >> 1 PASSED!
+2147483648 >> 2 PASSED!
+2147483648 >> 3 PASSED!
+2147483648 >> 4 PASSED!
+2147483648 >> 5 PASSED!
+2147483648 >> 6 PASSED!
+2147483648 >> 7 PASSED!
+2147483648 >> 8 PASSED!
+2147483648 >> 9 PASSED!
+2147483648 >> 10 PASSED!
+2147483648 >> 11 PASSED!
+2147483648 >> 12 PASSED!
+2147483648 >> 13 PASSED!
+2147483648 >> 14 PASSED!
+2147483648 >> 15 PASSED!
+2147483648 >> 16 PASSED!
+2147483648 >> 17 PASSED!
+2147483648 >> 18 PASSED!
+2147483648 >> 19 PASSED!
+2147483648 >> 20 PASSED!
+2147483648 >> 21 PASSED!
+2147483648 >> 22 PASSED!
+2147483648 >> 23 PASSED!
+2147483648 >> 24 PASSED!
+2147483648 >> 25 PASSED!
+2147483648 >> 26 PASSED!
+2147483648 >> 27 PASSED!
+2147483648 >> 28 PASSED!
+2147483648 >> 29 PASSED!
+2147483648 >> 30 PASSED!
+2147483648 >> 31 PASSED!
+2147483648 >> 32 PASSED!
+4294967296 >> 0 PASSED!
+4294967296 >> 1 PASSED!
+4294967296 >> 2 PASSED!
+4294967296 >> 3 PASSED!
+4294967296 >> 4 PASSED!
+4294967296 >> 5 PASSED!
+4294967296 >> 6 PASSED!
+4294967296 >> 7 PASSED!
+4294967296 >> 8 PASSED!
+4294967296 >> 9 PASSED!
+4294967296 >> 10 PASSED!
+4294967296 >> 11 PASSED!
+4294967296 >> 12 PASSED!
+4294967296 >> 13 PASSED!
+4294967296 >> 14 PASSED!
+4294967296 >> 15 PASSED!
+4294967296 >> 16 PASSED!
+4294967296 >> 17 PASSED!
+4294967296 >> 18 PASSED!
+4294967296 >> 19 PASSED!
+4294967296 >> 20 PASSED!
+4294967296 >> 21 PASSED!
+4294967296 >> 22 PASSED!
+4294967296 >> 23 PASSED!
+4294967296 >> 24 PASSED!
+4294967296 >> 25 PASSED!
+4294967296 >> 26 PASSED!
+4294967296 >> 27 PASSED!
+4294967296 >> 28 PASSED!
+4294967296 >> 29 PASSED!
+4294967296 >> 30 PASSED!
+4294967296 >> 31 PASSED!
+4294967296 >> 32 PASSED!
+-1 >> 0 PASSED!
+-1 >> 1 PASSED!
+-1 >> 2 PASSED!
+-1 >> 3 PASSED!
+-1 >> 4 PASSED!
+-1 >> 5 PASSED!
+-1 >> 6 PASSED!
+-1 >> 7 PASSED!
+-1 >> 8 PASSED!
+-1 >> 9 PASSED!
+-1 >> 10 PASSED!
+-1 >> 11 PASSED!
+-1 >> 12 PASSED!
+-1 >> 13 PASSED!
+-1 >> 14 PASSED!
+-1 >> 15 PASSED!
+-1 >> 16 PASSED!
+-1 >> 17 PASSED!
+-1 >> 18 PASSED!
+-1 >> 19 PASSED!
+-1 >> 20 PASSED!
+-1 >> 21 PASSED!
+-1 >> 22 PASSED!
+-1 >> 23 PASSED!
+-1 >> 24 PASSED!
+-1 >> 25 PASSED!
+-1 >> 26 PASSED!
+-1 >> 27 PASSED!
+-1 >> 28 PASSED!
+-1 >> 29 PASSED!
+-1 >> 30 PASSED!
+-1 >> 31 PASSED!
+-1 >> 32 PASSED!
+-2 >> 0 PASSED!
+-2 >> 1 PASSED!
+-2 >> 2 PASSED!
+-2 >> 3 PASSED!
+-2 >> 4 PASSED!
+-2 >> 5 PASSED!
+-2 >> 6 PASSED!
+-2 >> 7 PASSED!
+-2 >> 8 PASSED!
+-2 >> 9 PASSED!
+-2 >> 10 PASSED!
+-2 >> 11 PASSED!
+-2 >> 12 PASSED!
+-2 >> 13 PASSED!
+-2 >> 14 PASSED!
+-2 >> 15 PASSED!
+-2 >> 16 PASSED!
+-2 >> 17 PASSED!
+-2 >> 18 PASSED!
+-2 >> 19 PASSED!
+-2 >> 20 PASSED!
+-2 >> 21 PASSED!
+-2 >> 22 PASSED!
+-2 >> 23 PASSED!
+-2 >> 24 PASSED!
+-2 >> 25 PASSED!
+-2 >> 26 PASSED!
+-2 >> 27 PASSED!
+-2 >> 28 PASSED!
+-2 >> 29 PASSED!
+-2 >> 30 PASSED!
+-2 >> 31 PASSED!
+-2 >> 32 PASSED!
+-4 >> 0 PASSED!
+-4 >> 1 PASSED!
+-4 >> 2 PASSED!
+-4 >> 3 PASSED!
+-4 >> 4 PASSED!
+-4 >> 5 PASSED!
+-4 >> 6 PASSED!
+-4 >> 7 PASSED!
+-4 >> 8 PASSED!
+-4 >> 9 PASSED!
+-4 >> 10 PASSED!
+-4 >> 11 PASSED!
+-4 >> 12 PASSED!
+-4 >> 13 PASSED!
+-4 >> 14 PASSED!
+-4 >> 15 PASSED!
+-4 >> 16 PASSED!
+-4 >> 17 PASSED!
+-4 >> 18 PASSED!
+-4 >> 19 PASSED!
+-4 >> 20 PASSED!
+-4 >> 21 PASSED!
+-4 >> 22 PASSED!
+-4 >> 23 PASSED!
+-4 >> 24 PASSED!
+-4 >> 25 PASSED!
+-4 >> 26 PASSED!
+-4 >> 27 PASSED!
+-4 >> 28 PASSED!
+-4 >> 29 PASSED!
+-4 >> 30 PASSED!
+-4 >> 31 PASSED!
+-4 >> 32 PASSED!
+-8 >> 0 PASSED!
+-8 >> 1 PASSED!
+-8 >> 2 PASSED!
+-8 >> 3 PASSED!
+-8 >> 4 PASSED!
+-8 >> 5 PASSED!
+-8 >> 6 PASSED!
+-8 >> 7 PASSED!
+-8 >> 8 PASSED!
+-8 >> 9 PASSED!
+-8 >> 10 PASSED!
+-8 >> 11 PASSED!
+-8 >> 12 PASSED!
+-8 >> 13 PASSED!
+-8 >> 14 PASSED!
+-8 >> 15 PASSED!
+-8 >> 16 PASSED!
+-8 >> 17 PASSED!
+-8 >> 18 PASSED!
+-8 >> 19 PASSED!
+-8 >> 20 PASSED!
+-8 >> 21 PASSED!
+-8 >> 22 PASSED!
+-8 >> 23 PASSED!
+-8 >> 24 PASSED!
+-8 >> 25 PASSED!
+-8 >> 26 PASSED!
+-8 >> 27 PASSED!
+-8 >> 28 PASSED!
+-8 >> 29 PASSED!
+-8 >> 30 PASSED!
+-8 >> 31 PASSED!
+-8 >> 32 PASSED!
+-16 >> 0 PASSED!
+-16 >> 1 PASSED!
+-16 >> 2 PASSED!
+-16 >> 3 PASSED!
+-16 >> 4 PASSED!
+-16 >> 5 PASSED!
+-16 >> 6 PASSED!
+-16 >> 7 PASSED!
+-16 >> 8 PASSED!
+-16 >> 9 PASSED!
+-16 >> 10 PASSED!
+-16 >> 11 PASSED!
+-16 >> 12 PASSED!
+-16 >> 13 PASSED!
+-16 >> 14 PASSED!
+-16 >> 15 PASSED!
+-16 >> 16 PASSED!
+-16 >> 17 PASSED!
+-16 >> 18 PASSED!
+-16 >> 19 PASSED!
+-16 >> 20 PASSED!
+-16 >> 21 PASSED!
+-16 >> 22 PASSED!
+-16 >> 23 PASSED!
+-16 >> 24 PASSED!
+-16 >> 25 PASSED!
+-16 >> 26 PASSED!
+-16 >> 27 PASSED!
+-16 >> 28 PASSED!
+-16 >> 29 PASSED!
+-16 >> 30 PASSED!
+-16 >> 31 PASSED!
+-16 >> 32 PASSED!
+-32 >> 0 PASSED!
+-32 >> 1 PASSED!
+-32 >> 2 PASSED!
+-32 >> 3 PASSED!
+-32 >> 4 PASSED!
+-32 >> 5 PASSED!
+-32 >> 6 PASSED!
+-32 >> 7 PASSED!
+-32 >> 8 PASSED!
+-32 >> 9 PASSED!
+-32 >> 10 PASSED!
+-32 >> 11 PASSED!
+-32 >> 12 PASSED!
+-32 >> 13 PASSED!
+-32 >> 14 PASSED!
+-32 >> 15 PASSED!
+-32 >> 16 PASSED!
+-32 >> 17 PASSED!
+-32 >> 18 PASSED!
+-32 >> 19 PASSED!
+-32 >> 20 PASSED!
+-32 >> 21 PASSED!
+-32 >> 22 PASSED!
+-32 >> 23 PASSED!
+-32 >> 24 PASSED!
+-32 >> 25 PASSED!
+-32 >> 26 PASSED!
+-32 >> 27 PASSED!
+-32 >> 28 PASSED!
+-32 >> 29 PASSED!
+-32 >> 30 PASSED!
+-32 >> 31 PASSED!
+-32 >> 32 PASSED!
+-64 >> 0 PASSED!
+-64 >> 1 PASSED!
+-64 >> 2 PASSED!
+-64 >> 3 PASSED!
+-64 >> 4 PASSED!
+-64 >> 5 PASSED!
+-64 >> 6 PASSED!
+-64 >> 7 PASSED!
+-64 >> 8 PASSED!
+-64 >> 9 PASSED!
+-64 >> 10 PASSED!
+-64 >> 11 PASSED!
+-64 >> 12 PASSED!
+-64 >> 13 PASSED!
+-64 >> 14 PASSED!
+-64 >> 15 PASSED!
+-64 >> 16 PASSED!
+-64 >> 17 PASSED!
+-64 >> 18 PASSED!
+-64 >> 19 PASSED!
+-64 >> 20 PASSED!
+-64 >> 21 PASSED!
+-64 >> 22 PASSED!
+-64 >> 23 PASSED!
+-64 >> 24 PASSED!
+-64 >> 25 PASSED!
+-64 >> 26 PASSED!
+-64 >> 27 PASSED!
+-64 >> 28 PASSED!
+-64 >> 29 PASSED!
+-64 >> 30 PASSED!
+-64 >> 31 PASSED!
+-64 >> 32 PASSED!
+-128 >> 0 PASSED!
+-128 >> 1 PASSED!
+-128 >> 2 PASSED!
+-128 >> 3 PASSED!
+-128 >> 4 PASSED!
+-128 >> 5 PASSED!
+-128 >> 6 PASSED!
+-128 >> 7 PASSED!
+-128 >> 8 PASSED!
+-128 >> 9 PASSED!
+-128 >> 10 PASSED!
+-128 >> 11 PASSED!
+-128 >> 12 PASSED!
+-128 >> 13 PASSED!
+-128 >> 14 PASSED!
+-128 >> 15 PASSED!
+-128 >> 16 PASSED!
+-128 >> 17 PASSED!
+-128 >> 18 PASSED!
+-128 >> 19 PASSED!
+-128 >> 20 PASSED!
+-128 >> 21 PASSED!
+-128 >> 22 PASSED!
+-128 >> 23 PASSED!
+-128 >> 24 PASSED!
+-128 >> 25 PASSED!
+-128 >> 26 PASSED!
+-128 >> 27 PASSED!
+-128 >> 28 PASSED!
+-128 >> 29 PASSED!
+-128 >> 30 PASSED!
+-128 >> 31 PASSED!
+-128 >> 32 PASSED!
+-256 >> 0 PASSED!
+-256 >> 1 PASSED!
+-256 >> 2 PASSED!
+-256 >> 3 PASSED!
+-256 >> 4 PASSED!
+-256 >> 5 PASSED!
+-256 >> 6 PASSED!
+-256 >> 7 PASSED!
+-256 >> 8 PASSED!
+-256 >> 9 PASSED!
+-256 >> 10 PASSED!
+-256 >> 11 PASSED!
+-256 >> 12 PASSED!
+-256 >> 13 PASSED!
+-256 >> 14 PASSED!
+-256 >> 15 PASSED!
+-256 >> 16 PASSED!
+-256 >> 17 PASSED!
+-256 >> 18 PASSED!
+-256 >> 19 PASSED!
+-256 >> 20 PASSED!
+-256 >> 21 PASSED!
+-256 >> 22 PASSED!
+-256 >> 23 PASSED!
+-256 >> 24 PASSED!
+-256 >> 25 PASSED!
+-256 >> 26 PASSED!
+-256 >> 27 PASSED!
+-256 >> 28 PASSED!
+-256 >> 29 PASSED!
+-256 >> 30 PASSED!
+-256 >> 31 PASSED!
+-256 >> 32 PASSED!
+-512 >> 0 PASSED!
+-512 >> 1 PASSED!
+-512 >> 2 PASSED!
+-512 >> 3 PASSED!
+-512 >> 4 PASSED!
+-512 >> 5 PASSED!
+-512 >> 6 PASSED!
+-512 >> 7 PASSED!
+-512 >> 8 PASSED!
+-512 >> 9 PASSED!
+-512 >> 10 PASSED!
+-512 >> 11 PASSED!
+-512 >> 12 PASSED!
+-512 >> 13 PASSED!
+-512 >> 14 PASSED!
+-512 >> 15 PASSED!
+-512 >> 16 PASSED!
+-512 >> 17 PASSED!
+-512 >> 18 PASSED!
+-512 >> 19 PASSED!
+-512 >> 20 PASSED!
+-512 >> 21 PASSED!
+-512 >> 22 PASSED!
+-512 >> 23 PASSED!
+-512 >> 24 PASSED!
+-512 >> 25 PASSED!
+-512 >> 26 PASSED!
+-512 >> 27 PASSED!
+-512 >> 28 PASSED!
+-512 >> 29 PASSED!
+-512 >> 30 PASSED!
+-512 >> 31 PASSED!
+-512 >> 32 PASSED!
+-1024 >> 0 PASSED!
+-1024 >> 1 PASSED!
+-1024 >> 2 PASSED!
+-1024 >> 3 PASSED!
+-1024 >> 4 PASSED!
+-1024 >> 5 PASSED!
+-1024 >> 6 PASSED!
+-1024 >> 7 PASSED!
+-1024 >> 8 PASSED!
+-1024 >> 9 PASSED!
+-1024 >> 10 PASSED!
+-1024 >> 11 PASSED!
+-1024 >> 12 PASSED!
+-1024 >> 13 PASSED!
+-1024 >> 14 PASSED!
+-1024 >> 15 PASSED!
+-1024 >> 16 PASSED!
+-1024 >> 17 PASSED!
+-1024 >> 18 PASSED!
+-1024 >> 19 PASSED!
+-1024 >> 20 PASSED!
+-1024 >> 21 PASSED!
+-1024 >> 22 PASSED!
+-1024 >> 23 PASSED!
+-1024 >> 24 PASSED!
+-1024 >> 25 PASSED!
+-1024 >> 26 PASSED!
+-1024 >> 27 PASSED!
+-1024 >> 28 PASSED!
+-1024 >> 29 PASSED!
+-1024 >> 30 PASSED!
+-1024 >> 31 PASSED!
+-1024 >> 32 PASSED!
+-2048 >> 0 PASSED!
+-2048 >> 1 PASSED!
+-2048 >> 2 PASSED!
+-2048 >> 3 PASSED!
+-2048 >> 4 PASSED!
+-2048 >> 5 PASSED!
+-2048 >> 6 PASSED!
+-2048 >> 7 PASSED!
+-2048 >> 8 PASSED!
+-2048 >> 9 PASSED!
+-2048 >> 10 PASSED!
+-2048 >> 11 PASSED!
+-2048 >> 12 PASSED!
+-2048 >> 13 PASSED!
+-2048 >> 14 PASSED!
+-2048 >> 15 PASSED!
+-2048 >> 16 PASSED!
+-2048 >> 17 PASSED!
+-2048 >> 18 PASSED!
+-2048 >> 19 PASSED!
+-2048 >> 20 PASSED!
+-2048 >> 21 PASSED!
+-2048 >> 22 PASSED!
+-2048 >> 23 PASSED!
+-2048 >> 24 PASSED!
+-2048 >> 25 PASSED!
+-2048 >> 26 PASSED!
+-2048 >> 27 PASSED!
+-2048 >> 28 PASSED!
+-2048 >> 29 PASSED!
+-2048 >> 30 PASSED!
+-2048 >> 31 PASSED!
+-2048 >> 32 PASSED!
+-4096 >> 0 PASSED!
+-4096 >> 1 PASSED!
+-4096 >> 2 PASSED!
+-4096 >> 3 PASSED!
+-4096 >> 4 PASSED!
+-4096 >> 5 PASSED!
+-4096 >> 6 PASSED!
+-4096 >> 7 PASSED!
+-4096 >> 8 PASSED!
+-4096 >> 9 PASSED!
+-4096 >> 10 PASSED!
+-4096 >> 11 PASSED!
+-4096 >> 12 PASSED!
+-4096 >> 13 PASSED!
+-4096 >> 14 PASSED!
+-4096 >> 15 PASSED!
+-4096 >> 16 PASSED!
+-4096 >> 17 PASSED!
+-4096 >> 18 PASSED!
+-4096 >> 19 PASSED!
+-4096 >> 20 PASSED!
+-4096 >> 21 PASSED!
+-4096 >> 22 PASSED!
+-4096 >> 23 PASSED!
+-4096 >> 24 PASSED!
+-4096 >> 25 PASSED!
+-4096 >> 26 PASSED!
+-4096 >> 27 PASSED!
+-4096 >> 28 PASSED!
+-4096 >> 29 PASSED!
+-4096 >> 30 PASSED!
+-4096 >> 31 PASSED!
+-4096 >> 32 PASSED!
+-8192 >> 0 PASSED!
+-8192 >> 1 PASSED!
+-8192 >> 2 PASSED!
+-8192 >> 3 PASSED!
+-8192 >> 4 PASSED!
+-8192 >> 5 PASSED!
+-8192 >> 6 PASSED!
+-8192 >> 7 PASSED!
+-8192 >> 8 PASSED!
+-8192 >> 9 PASSED!
+-8192 >> 10 PASSED!
+-8192 >> 11 PASSED!
+-8192 >> 12 PASSED!
+-8192 >> 13 PASSED!
+-8192 >> 14 PASSED!
+-8192 >> 15 PASSED!
+-8192 >> 16 PASSED!
+-8192 >> 17 PASSED!
+-8192 >> 18 PASSED!
+-8192 >> 19 PASSED!
+-8192 >> 20 PASSED!
+-8192 >> 21 PASSED!
+-8192 >> 22 PASSED!
+-8192 >> 23 PASSED!
+-8192 >> 24 PASSED!
+-8192 >> 25 PASSED!
+-8192 >> 26 PASSED!
+-8192 >> 27 PASSED!
+-8192 >> 28 PASSED!
+-8192 >> 29 PASSED!
+-8192 >> 30 PASSED!
+-8192 >> 31 PASSED!
+-8192 >> 32 PASSED!
+-16384 >> 0 PASSED!
+-16384 >> 1 PASSED!
+-16384 >> 2 PASSED!
+-16384 >> 3 PASSED!
+-16384 >> 4 PASSED!
+-16384 >> 5 PASSED!
+-16384 >> 6 PASSED!
+-16384 >> 7 PASSED!
+-16384 >> 8 PASSED!
+-16384 >> 9 PASSED!
+-16384 >> 10 PASSED!
+-16384 >> 11 PASSED!
+-16384 >> 12 PASSED!
+-16384 >> 13 PASSED!
+-16384 >> 14 PASSED!
+-16384 >> 15 PASSED!
+-16384 >> 16 PASSED!
+-16384 >> 17 PASSED!
+-16384 >> 18 PASSED!
+-16384 >> 19 PASSED!
+-16384 >> 20 PASSED!
+-16384 >> 21 PASSED!
+-16384 >> 22 PASSED!
+-16384 >> 23 PASSED!
+-16384 >> 24 PASSED!
+-16384 >> 25 PASSED!
+-16384 >> 26 PASSED!
+-16384 >> 27 PASSED!
+-16384 >> 28 PASSED!
+-16384 >> 29 PASSED!
+-16384 >> 30 PASSED!
+-16384 >> 31 PASSED!
+-16384 >> 32 PASSED!
+-32768 >> 0 PASSED!
+-32768 >> 1 PASSED!
+-32768 >> 2 PASSED!
+-32768 >> 3 PASSED!
+-32768 >> 4 PASSED!
+-32768 >> 5 PASSED!
+-32768 >> 6 PASSED!
+-32768 >> 7 PASSED!
+-32768 >> 8 PASSED!
+-32768 >> 9 PASSED!
+-32768 >> 10 PASSED!
+-32768 >> 11 PASSED!
+-32768 >> 12 PASSED!
+-32768 >> 13 PASSED!
+-32768 >> 14 PASSED!
+-32768 >> 15 PASSED!
+-32768 >> 16 PASSED!
+-32768 >> 17 PASSED!
+-32768 >> 18 PASSED!
+-32768 >> 19 PASSED!
+-32768 >> 20 PASSED!
+-32768 >> 21 PASSED!
+-32768 >> 22 PASSED!
+-32768 >> 23 PASSED!
+-32768 >> 24 PASSED!
+-32768 >> 25 PASSED!
+-32768 >> 26 PASSED!
+-32768 >> 27 PASSED!
+-32768 >> 28 PASSED!
+-32768 >> 29 PASSED!
+-32768 >> 30 PASSED!
+-32768 >> 31 PASSED!
+-32768 >> 32 PASSED!
+-65536 >> 0 PASSED!
+-65536 >> 1 PASSED!
+-65536 >> 2 PASSED!
+-65536 >> 3 PASSED!
+-65536 >> 4 PASSED!
+-65536 >> 5 PASSED!
+-65536 >> 6 PASSED!
+-65536 >> 7 PASSED!
+-65536 >> 8 PASSED!
+-65536 >> 9 PASSED!
+-65536 >> 10 PASSED!
+-65536 >> 11 PASSED!
+-65536 >> 12 PASSED!
+-65536 >> 13 PASSED!
+-65536 >> 14 PASSED!
+-65536 >> 15 PASSED!
+-65536 >> 16 PASSED!
+-65536 >> 17 PASSED!
+-65536 >> 18 PASSED!
+-65536 >> 19 PASSED!
+-65536 >> 20 PASSED!
+-65536 >> 21 PASSED!
+-65536 >> 22 PASSED!
+-65536 >> 23 PASSED!
+-65536 >> 24 PASSED!
+-65536 >> 25 PASSED!
+-65536 >> 26 PASSED!
+-65536 >> 27 PASSED!
+-65536 >> 28 PASSED!
+-65536 >> 29 PASSED!
+-65536 >> 30 PASSED!
+-65536 >> 31 PASSED!
+-65536 >> 32 PASSED!
+-131072 >> 0 PASSED!
+-131072 >> 1 PASSED!
+-131072 >> 2 PASSED!
+-131072 >> 3 PASSED!
+-131072 >> 4 PASSED!
+-131072 >> 5 PASSED!
+-131072 >> 6 PASSED!
+-131072 >> 7 PASSED!
+-131072 >> 8 PASSED!
+-131072 >> 9 PASSED!
+-131072 >> 10 PASSED!
+-131072 >> 11 PASSED!
+-131072 >> 12 PASSED!
+-131072 >> 13 PASSED!
+-131072 >> 14 PASSED!
+-131072 >> 15 PASSED!
+-131072 >> 16 PASSED!
+-131072 >> 17 PASSED!
+-131072 >> 18 PASSED!
+-131072 >> 19 PASSED!
+-131072 >> 20 PASSED!
+-131072 >> 21 PASSED!
+-131072 >> 22 PASSED!
+-131072 >> 23 PASSED!
+-131072 >> 24 PASSED!
+-131072 >> 25 PASSED!
+-131072 >> 26 PASSED!
+-131072 >> 27 PASSED!
+-131072 >> 28 PASSED!
+-131072 >> 29 PASSED!
+-131072 >> 30 PASSED!
+-131072 >> 31 PASSED!
+-131072 >> 32 PASSED!
+-262144 >> 0 PASSED!
+-262144 >> 1 PASSED!
+-262144 >> 2 PASSED!
+-262144 >> 3 PASSED!
+-262144 >> 4 PASSED!
+-262144 >> 5 PASSED!
+-262144 >> 6 PASSED!
+-262144 >> 7 PASSED!
+-262144 >> 8 PASSED!
+-262144 >> 9 PASSED!
+-262144 >> 10 PASSED!
+-262144 >> 11 PASSED!
+-262144 >> 12 PASSED!
+-262144 >> 13 PASSED!
+-262144 >> 14 PASSED!
+-262144 >> 15 PASSED!
+-262144 >> 16 PASSED!
+-262144 >> 17 PASSED!
+-262144 >> 18 PASSED!
+-262144 >> 19 PASSED!
+-262144 >> 20 PASSED!
+-262144 >> 21 PASSED!
+-262144 >> 22 PASSED!
+-262144 >> 23 PASSED!
+-262144 >> 24 PASSED!
+-262144 >> 25 PASSED!
+-262144 >> 26 PASSED!
+-262144 >> 27 PASSED!
+-262144 >> 28 PASSED!
+-262144 >> 29 PASSED!
+-262144 >> 30 PASSED!
+-262144 >> 31 PASSED!
+-262144 >> 32 PASSED!
+-524288 >> 0 PASSED!
+-524288 >> 1 PASSED!
+-524288 >> 2 PASSED!
+-524288 >> 3 PASSED!
+-524288 >> 4 PASSED!
+-524288 >> 5 PASSED!
+-524288 >> 6 PASSED!
+-524288 >> 7 PASSED!
+-524288 >> 8 PASSED!
+-524288 >> 9 PASSED!
+-524288 >> 10 PASSED!
+-524288 >> 11 PASSED!
+-524288 >> 12 PASSED!
+-524288 >> 13 PASSED!
+-524288 >> 14 PASSED!
+-524288 >> 15 PASSED!
+-524288 >> 16 PASSED!
+-524288 >> 17 PASSED!
+-524288 >> 18 PASSED!
+-524288 >> 19 PASSED!
+-524288 >> 20 PASSED!
+-524288 >> 21 PASSED!
+-524288 >> 22 PASSED!
+-524288 >> 23 PASSED!
+-524288 >> 24 PASSED!
+-524288 >> 25 PASSED!
+-524288 >> 26 PASSED!
+-524288 >> 27 PASSED!
+-524288 >> 28 PASSED!
+-524288 >> 29 PASSED!
+-524288 >> 30 PASSED!
+-524288 >> 31 PASSED!
+-524288 >> 32 PASSED!
+-1048576 >> 0 PASSED!
+-1048576 >> 1 PASSED!
+-1048576 >> 2 PASSED!
+-1048576 >> 3 PASSED!
+-1048576 >> 4 PASSED!
+-1048576 >> 5 PASSED!
+-1048576 >> 6 PASSED!
+-1048576 >> 7 PASSED!
+-1048576 >> 8 PASSED!
+-1048576 >> 9 PASSED!
+-1048576 >> 10 PASSED!
+-1048576 >> 11 PASSED!
+-1048576 >> 12 PASSED!
+-1048576 >> 13 PASSED!
+-1048576 >> 14 PASSED!
+-1048576 >> 15 PASSED!
+-1048576 >> 16 PASSED!
+-1048576 >> 17 PASSED!
+-1048576 >> 18 PASSED!
+-1048576 >> 19 PASSED!
+-1048576 >> 20 PASSED!
+-1048576 >> 21 PASSED!
+-1048576 >> 22 PASSED!
+-1048576 >> 23 PASSED!
+-1048576 >> 24 PASSED!
+-1048576 >> 25 PASSED!
+-1048576 >> 26 PASSED!
+-1048576 >> 27 PASSED!
+-1048576 >> 28 PASSED!
+-1048576 >> 29 PASSED!
+-1048576 >> 30 PASSED!
+-1048576 >> 31 PASSED!
+-1048576 >> 32 PASSED!
+-2097152 >> 0 PASSED!
+-2097152 >> 1 PASSED!
+-2097152 >> 2 PASSED!
+-2097152 >> 3 PASSED!
+-2097152 >> 4 PASSED!
+-2097152 >> 5 PASSED!
+-2097152 >> 6 PASSED!
+-2097152 >> 7 PASSED!
+-2097152 >> 8 PASSED!
+-2097152 >> 9 PASSED!
+-2097152 >> 10 PASSED!
+-2097152 >> 11 PASSED!
+-2097152 >> 12 PASSED!
+-2097152 >> 13 PASSED!
+-2097152 >> 14 PASSED!
+-2097152 >> 15 PASSED!
+-2097152 >> 16 PASSED!
+-2097152 >> 17 PASSED!
+-2097152 >> 18 PASSED!
+-2097152 >> 19 PASSED!
+-2097152 >> 20 PASSED!
+-2097152 >> 21 PASSED!
+-2097152 >> 22 PASSED!
+-2097152 >> 23 PASSED!
+-2097152 >> 24 PASSED!
+-2097152 >> 25 PASSED!
+-2097152 >> 26 PASSED!
+-2097152 >> 27 PASSED!
+-2097152 >> 28 PASSED!
+-2097152 >> 29 PASSED!
+-2097152 >> 30 PASSED!
+-2097152 >> 31 PASSED!
+-2097152 >> 32 PASSED!
+-4194304 >> 0 PASSED!
+-4194304 >> 1 PASSED!
+-4194304 >> 2 PASSED!
+-4194304 >> 3 PASSED!
+-4194304 >> 4 PASSED!
+-4194304 >> 5 PASSED!
+-4194304 >> 6 PASSED!
+-4194304 >> 7 PASSED!
+-4194304 >> 8 PASSED!
+-4194304 >> 9 PASSED!
+-4194304 >> 10 PASSED!
+-4194304 >> 11 PASSED!
+-4194304 >> 12 PASSED!
+-4194304 >> 13 PASSED!
+-4194304 >> 14 PASSED!
+-4194304 >> 15 PASSED!
+-4194304 >> 16 PASSED!
+-4194304 >> 17 PASSED!
+-4194304 >> 18 PASSED!
+-4194304 >> 19 PASSED!
+-4194304 >> 20 PASSED!
+-4194304 >> 21 PASSED!
+-4194304 >> 22 PASSED!
+-4194304 >> 23 PASSED!
+-4194304 >> 24 PASSED!
+-4194304 >> 25 PASSED!
+-4194304 >> 26 PASSED!
+-4194304 >> 27 PASSED!
+-4194304 >> 28 PASSED!
+-4194304 >> 29 PASSED!
+-4194304 >> 30 PASSED!
+-4194304 >> 31 PASSED!
+-4194304 >> 32 PASSED!
+-8388608 >> 0 PASSED!
+-8388608 >> 1 PASSED!
+-8388608 >> 2 PASSED!
+-8388608 >> 3 PASSED!
+-8388608 >> 4 PASSED!
+-8388608 >> 5 PASSED!
+-8388608 >> 6 PASSED!
+-8388608 >> 7 PASSED!
+-8388608 >> 8 PASSED!
+-8388608 >> 9 PASSED!
+-8388608 >> 10 PASSED!
+-8388608 >> 11 PASSED!
+-8388608 >> 12 PASSED!
+-8388608 >> 13 PASSED!
+-8388608 >> 14 PASSED!
+-8388608 >> 15 PASSED!
+-8388608 >> 16 PASSED!
+-8388608 >> 17 PASSED!
+-8388608 >> 18 PASSED!
+-8388608 >> 19 PASSED!
+-8388608 >> 20 PASSED!
+-8388608 >> 21 PASSED!
+-8388608 >> 22 PASSED!
+-8388608 >> 23 PASSED!
+-8388608 >> 24 PASSED!
+-8388608 >> 25 PASSED!
+-8388608 >> 26 PASSED!
+-8388608 >> 27 PASSED!
+-8388608 >> 28 PASSED!
+-8388608 >> 29 PASSED!
+-8388608 >> 30 PASSED!
+-8388608 >> 31 PASSED!
+-8388608 >> 32 PASSED!
+-16777216 >> 0 PASSED!
+-16777216 >> 1 PASSED!
+-16777216 >> 2 PASSED!
+-16777216 >> 3 PASSED!
+-16777216 >> 4 PASSED!
+-16777216 >> 5 PASSED!
+-16777216 >> 6 PASSED!
+-16777216 >> 7 PASSED!
+-16777216 >> 8 PASSED!
+-16777216 >> 9 PASSED!
+-16777216 >> 10 PASSED!
+-16777216 >> 11 PASSED!
+-16777216 >> 12 PASSED!
+-16777216 >> 13 PASSED!
+-16777216 >> 14 PASSED!
+-16777216 >> 15 PASSED!
+-16777216 >> 16 PASSED!
+-16777216 >> 17 PASSED!
+-16777216 >> 18 PASSED!
+-16777216 >> 19 PASSED!
+-16777216 >> 20 PASSED!
+-16777216 >> 21 PASSED!
+-16777216 >> 22 PASSED!
+-16777216 >> 23 PASSED!
+-16777216 >> 24 PASSED!
+-16777216 >> 25 PASSED!
+-16777216 >> 26 PASSED!
+-16777216 >> 27 PASSED!
+-16777216 >> 28 PASSED!
+-16777216 >> 29 PASSED!
+-16777216 >> 30 PASSED!
+-16777216 >> 31 PASSED!
+-16777216 >> 32 PASSED!
+-33554432 >> 0 PASSED!
+-33554432 >> 1 PASSED!
+-33554432 >> 2 PASSED!
+-33554432 >> 3 PASSED!
+-33554432 >> 4 PASSED!
+-33554432 >> 5 PASSED!
+-33554432 >> 6 PASSED!
+-33554432 >> 7 PASSED!
+-33554432 >> 8 PASSED!
+-33554432 >> 9 PASSED!
+-33554432 >> 10 PASSED!
+-33554432 >> 11 PASSED!
+-33554432 >> 12 PASSED!
+-33554432 >> 13 PASSED!
+-33554432 >> 14 PASSED!
+-33554432 >> 15 PASSED!
+-33554432 >> 16 PASSED!
+-33554432 >> 17 PASSED!
+-33554432 >> 18 PASSED!
+-33554432 >> 19 PASSED!
+-33554432 >> 20 PASSED!
+-33554432 >> 21 PASSED!
+-33554432 >> 22 PASSED!
+-33554432 >> 23 PASSED!
+-33554432 >> 24 PASSED!
+-33554432 >> 25 PASSED!
+-33554432 >> 26 PASSED!
+-33554432 >> 27 PASSED!
+-33554432 >> 28 PASSED!
+-33554432 >> 29 PASSED!
+-33554432 >> 30 PASSED!
+-33554432 >> 31 PASSED!
+-33554432 >> 32 PASSED!
+-67108864 >> 0 PASSED!
+-67108864 >> 1 PASSED!
+-67108864 >> 2 PASSED!
+-67108864 >> 3 PASSED!
+-67108864 >> 4 PASSED!
+-67108864 >> 5 PASSED!
+-67108864 >> 6 PASSED!
+-67108864 >> 7 PASSED!
+-67108864 >> 8 PASSED!
+-67108864 >> 9 PASSED!
+-67108864 >> 10 PASSED!
+-67108864 >> 11 PASSED!
+-67108864 >> 12 PASSED!
+-67108864 >> 13 PASSED!
+-67108864 >> 14 PASSED!
+-67108864 >> 15 PASSED!
+-67108864 >> 16 PASSED!
+-67108864 >> 17 PASSED!
+-67108864 >> 18 PASSED!
+-67108864 >> 19 PASSED!
+-67108864 >> 20 PASSED!
+-67108864 >> 21 PASSED!
+-67108864 >> 22 PASSED!
+-67108864 >> 23 PASSED!
+-67108864 >> 24 PASSED!
+-67108864 >> 25 PASSED!
+-67108864 >> 26 PASSED!
+-67108864 >> 27 PASSED!
+-67108864 >> 28 PASSED!
+-67108864 >> 29 PASSED!
+-67108864 >> 30 PASSED!
+-67108864 >> 31 PASSED!
+-67108864 >> 32 PASSED!
+-134217728 >> 0 PASSED!
+-134217728 >> 1 PASSED!
+-134217728 >> 2 PASSED!
+-134217728 >> 3 PASSED!
+-134217728 >> 4 PASSED!
+-134217728 >> 5 PASSED!
+-134217728 >> 6 PASSED!
+-134217728 >> 7 PASSED!
+-134217728 >> 8 PASSED!
+-134217728 >> 9 PASSED!
+-134217728 >> 10 PASSED!
+-134217728 >> 11 PASSED!
+-134217728 >> 12 PASSED!
+-134217728 >> 13 PASSED!
+-134217728 >> 14 PASSED!
+-134217728 >> 15 PASSED!
+-134217728 >> 16 PASSED!
+-134217728 >> 17 PASSED!
+-134217728 >> 18 PASSED!
+-134217728 >> 19 PASSED!
+-134217728 >> 20 PASSED!
+-134217728 >> 21 PASSED!
+-134217728 >> 22 PASSED!
+-134217728 >> 23 PASSED!
+-134217728 >> 24 PASSED!
+-134217728 >> 25 PASSED!
+-134217728 >> 26 PASSED!
+-134217728 >> 27 PASSED!
+-134217728 >> 28 PASSED!
+-134217728 >> 29 PASSED!
+-134217728 >> 30 PASSED!
+-134217728 >> 31 PASSED!
+-134217728 >> 32 PASSED!
+-268435456 >> 0 PASSED!
+-268435456 >> 1 PASSED!
+-268435456 >> 2 PASSED!
+-268435456 >> 3 PASSED!
+-268435456 >> 4 PASSED!
+-268435456 >> 5 PASSED!
+-268435456 >> 6 PASSED!
+-268435456 >> 7 PASSED!
+-268435456 >> 8 PASSED!
+-268435456 >> 9 PASSED!
+-268435456 >> 10 PASSED!
+-268435456 >> 11 PASSED!
+-268435456 >> 12 PASSED!
+-268435456 >> 13 PASSED!
+-268435456 >> 14 PASSED!
+-268435456 >> 15 PASSED!
+-268435456 >> 16 PASSED!
+-268435456 >> 17 PASSED!
+-268435456 >> 18 PASSED!
+-268435456 >> 19 PASSED!
+-268435456 >> 20 PASSED!
+-268435456 >> 21 PASSED!
+-268435456 >> 22 PASSED!
+-268435456 >> 23 PASSED!
+-268435456 >> 24 PASSED!
+-268435456 >> 25 PASSED!
+-268435456 >> 26 PASSED!
+-268435456 >> 27 PASSED!
+-268435456 >> 28 PASSED!
+-268435456 >> 29 PASSED!
+-268435456 >> 30 PASSED!
+-268435456 >> 31 PASSED!
+-268435456 >> 32 PASSED!
+-536870912 >> 0 PASSED!
+-536870912 >> 1 PASSED!
+-536870912 >> 2 PASSED!
+-536870912 >> 3 PASSED!
+-536870912 >> 4 PASSED!
+-536870912 >> 5 PASSED!
+-536870912 >> 6 PASSED!
+-536870912 >> 7 PASSED!
+-536870912 >> 8 PASSED!
+-536870912 >> 9 PASSED!
+-536870912 >> 10 PASSED!
+-536870912 >> 11 PASSED!
+-536870912 >> 12 PASSED!
+-536870912 >> 13 PASSED!
+-536870912 >> 14 PASSED!
+-536870912 >> 15 PASSED!
+-536870912 >> 16 PASSED!
+-536870912 >> 17 PASSED!
+-536870912 >> 18 PASSED!
+-536870912 >> 19 PASSED!
+-536870912 >> 20 PASSED!
+-536870912 >> 21 PASSED!
+-536870912 >> 22 PASSED!
+-536870912 >> 23 PASSED!
+-536870912 >> 24 PASSED!
+-536870912 >> 25 PASSED!
+-536870912 >> 26 PASSED!
+-536870912 >> 27 PASSED!
+-536870912 >> 28 PASSED!
+-536870912 >> 29 PASSED!
+-536870912 >> 30 PASSED!
+-536870912 >> 31 PASSED!
+-536870912 >> 32 PASSED!
+-1073741824 >> 0 PASSED!
+-1073741824 >> 1 PASSED!
+-1073741824 >> 2 PASSED!
+-1073741824 >> 3 PASSED!
+-1073741824 >> 4 PASSED!
+-1073741824 >> 5 PASSED!
+-1073741824 >> 6 PASSED!
+-1073741824 >> 7 PASSED!
+-1073741824 >> 8 PASSED!
+-1073741824 >> 9 PASSED!
+-1073741824 >> 10 PASSED!
+-1073741824 >> 11 PASSED!
+-1073741824 >> 12 PASSED!
+-1073741824 >> 13 PASSED!
+-1073741824 >> 14 PASSED!
+-1073741824 >> 15 PASSED!
+-1073741824 >> 16 PASSED!
+-1073741824 >> 17 PASSED!
+-1073741824 >> 18 PASSED!
+-1073741824 >> 19 PASSED!
+-1073741824 >> 20 PASSED!
+-1073741824 >> 21 PASSED!
+-1073741824 >> 22 PASSED!
+-1073741824 >> 23 PASSED!
+-1073741824 >> 24 PASSED!
+-1073741824 >> 25 PASSED!
+-1073741824 >> 26 PASSED!
+-1073741824 >> 27 PASSED!
+-1073741824 >> 28 PASSED!
+-1073741824 >> 29 PASSED!
+-1073741824 >> 30 PASSED!
+-1073741824 >> 31 PASSED!
+-1073741824 >> 32 PASSED!
+-2147483648 >> 0 PASSED!
+-2147483648 >> 1 PASSED!
+-2147483648 >> 2 PASSED!
+-2147483648 >> 3 PASSED!
+-2147483648 >> 4 PASSED!
+-2147483648 >> 5 PASSED!
+-2147483648 >> 6 PASSED!
+-2147483648 >> 7 PASSED!
+-2147483648 >> 8 PASSED!
+-2147483648 >> 9 PASSED!
+-2147483648 >> 10 PASSED!
+-2147483648 >> 11 PASSED!
+-2147483648 >> 12 PASSED!
+-2147483648 >> 13 PASSED!
+-2147483648 >> 14 PASSED!
+-2147483648 >> 15 PASSED!
+-2147483648 >> 16 PASSED!
+-2147483648 >> 17 PASSED!
+-2147483648 >> 18 PASSED!
+-2147483648 >> 19 PASSED!
+-2147483648 >> 20 PASSED!
+-2147483648 >> 21 PASSED!
+-2147483648 >> 22 PASSED!
+-2147483648 >> 23 PASSED!
+-2147483648 >> 24 PASSED!
+-2147483648 >> 25 PASSED!
+-2147483648 >> 26 PASSED!
+-2147483648 >> 27 PASSED!
+-2147483648 >> 28 PASSED!
+-2147483648 >> 29 PASSED!
+-2147483648 >> 30 PASSED!
+-2147483648 >> 31 PASSED!
+-2147483648 >> 32 PASSED!
+-4294967296 >> 0 PASSED!
+-4294967296 >> 1 PASSED!
+-4294967296 >> 2 PASSED!
+-4294967296 >> 3 PASSED!
+-4294967296 >> 4 PASSED!
+-4294967296 >> 5 PASSED!
+-4294967296 >> 6 PASSED!
+-4294967296 >> 7 PASSED!
+-4294967296 >> 8 PASSED!
+-4294967296 >> 9 PASSED!
+-4294967296 >> 10 PASSED!
+-4294967296 >> 11 PASSED!
+-4294967296 >> 12 PASSED!
+-4294967296 >> 13 PASSED!
+-4294967296 >> 14 PASSED!
+-4294967296 >> 15 PASSED!
+-4294967296 >> 16 PASSED!
+-4294967296 >> 17 PASSED!
+-4294967296 >> 18 PASSED!
+-4294967296 >> 19 PASSED!
+-4294967296 >> 20 PASSED!
+-4294967296 >> 21 PASSED!
+-4294967296 >> 22 PASSED!
+-4294967296 >> 23 PASSED!
+-4294967296 >> 24 PASSED!
+-4294967296 >> 25 PASSED!
+-4294967296 >> 26 PASSED!
+-4294967296 >> 27 PASSED!
+-4294967296 >> 28 PASSED!
+-4294967296 >> 29 PASSED!
+-4294967296 >> 30 PASSED!
+-4294967296 >> 31 PASSED!
+-4294967296 >> 32 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_2/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_2/test.swf
new file mode 100644
index 000000000..024bccef0
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_2/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_2/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_2/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_2/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_3/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_3/Test.as
new file mode 100644
index 000000000..2b5cd99b8
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_3/Test.as
@@ -0,0 +1,174 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_7_3";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ var addexp = 0;
+ var power = 0;
+
+ for ( power = 0; power <= 32; power++ ) {
+ shiftexp = Math.pow( 2, power );
+
+ for ( addexp = 0; addexp <= 32; addexp++ ) {
+ array[item++] = Assert.expectEq(
+ shiftexp + " >>> " + addexp,
+ UnsignedRightShift( shiftexp, addexp ),
+ shiftexp >>> addexp );
+ }
+ }
+
+ return ( array );
+}
+
+function ToInteger( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( n != n ) {
+ return 0;
+ }
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY ) {
+ return n;
+ }
+ return ( sign * Math.floor(Math.abs(n)) );
+}
+function ToInt32( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+
+ n = (sign * Math.floor( Math.abs(n) )) % Math.pow(2,32);
+ n = ( n >= Math.pow(2,31) ) ? n - Math.pow(2,32) : n;
+
+ return ( n );
+}
+function ToUint32( n ) {
+ n = Number( n );
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+ n = sign * Math.floor( Math.abs(n) )
+
+ n = n % Math.pow(2,32);
+
+ if ( n < 0 ){
+ n += Math.pow(2,32);
+ }
+
+ return ( n );
+}
+function ToUint16( n ) {
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) {
+ return 0;
+ }
+
+ n = ( sign * Math.floor( Math.abs(n) ) ) % Math.pow(2,16);
+
+ if (n <0) {
+ n += Math.pow(2,16);
+ }
+
+ return ( n );
+}
+function Mask( b, n ) {
+ b = ToUint32BitString( b );
+ b = b.substring( b.length - n );
+ b = ToUint32Decimal( b );
+ return ( b );
+}
+function ToUint32BitString( n ) {
+ var b = "";
+ for ( p = 31; p >=0; p-- ) {
+ if ( n >= Math.pow(2,p) ) {
+ b += "1";
+ n -= Math.pow(2,p);
+ } else {
+ b += "0";
+ }
+ }
+ return b;
+}
+function ToInt32BitString( n ) {
+ var b = "";
+ var sign = ( n < 0 ) ? -1 : 1;
+
+ b += ( sign == 1 ) ? "0" : "1";
+
+ for ( p = 30; p >=0; p-- ) {
+ if ( (sign == 1 ) ? sign * n >= Math.pow(2,p) : sign * n > Math.pow(2,p) ) {
+ b += ( sign == 1 ) ? "1" : "0";
+ n -= sign * Math.pow( 2, p );
+ } else {
+ b += ( sign == 1 ) ? "0" : "1";
+ }
+ }
+
+ return b;
+}
+function ToInt32Decimal( bin ) {
+ var r = 0;
+ var sign;
+
+ if ( Number(bin.charAt(0)) == 0 ) {
+ sign = 1;
+ r = 0;
+ } else {
+ sign = -1;
+ r = -(Math.pow(2,31));
+ }
+
+ for ( var j = 0; j < 31; j++ ) {
+ r += Math.pow( 2, j ) * Number(bin.charAt(31-j));
+ }
+
+ return r;
+}
+function ToUint32Decimal( bin ) {
+ var r:Number = 0;
+
+
+ for ( l = bin.length; l < 32; l++ ) {
+ bin = "0" + bin;
+ }
+
+ for ( j = 0; j < 32; j++ ) {
+ r += Math.pow( 2, j ) * Number(bin.charAt(31-j));
+
+ }
+
+ return r;
+}
+function RShift( s, a ) {
+ s = ToUint32BitString( s );
+ for ( z = 0; z < a; z++ ) {
+ s = "0" + s;
+ }
+ s = s.substring( 0, s.length - a );
+
+ return ToUint32Decimal(s);
+}
+function UnsignedRightShift( s, a ) {
+ s = ToUint32( s );
+ a = ToUint32( a );
+ a = Mask( a, 5 );
+ return ( RShift( s, a ) );
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_3/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_3/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_3/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_3/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_3/output.txt
new file mode 100644
index 000000000..d67b7613b
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_3/output.txt
@@ -0,0 +1,1089 @@
+1 >>> 0 PASSED!
+1 >>> 1 PASSED!
+1 >>> 2 PASSED!
+1 >>> 3 PASSED!
+1 >>> 4 PASSED!
+1 >>> 5 PASSED!
+1 >>> 6 PASSED!
+1 >>> 7 PASSED!
+1 >>> 8 PASSED!
+1 >>> 9 PASSED!
+1 >>> 10 PASSED!
+1 >>> 11 PASSED!
+1 >>> 12 PASSED!
+1 >>> 13 PASSED!
+1 >>> 14 PASSED!
+1 >>> 15 PASSED!
+1 >>> 16 PASSED!
+1 >>> 17 PASSED!
+1 >>> 18 PASSED!
+1 >>> 19 PASSED!
+1 >>> 20 PASSED!
+1 >>> 21 PASSED!
+1 >>> 22 PASSED!
+1 >>> 23 PASSED!
+1 >>> 24 PASSED!
+1 >>> 25 PASSED!
+1 >>> 26 PASSED!
+1 >>> 27 PASSED!
+1 >>> 28 PASSED!
+1 >>> 29 PASSED!
+1 >>> 30 PASSED!
+1 >>> 31 PASSED!
+1 >>> 32 PASSED!
+2 >>> 0 PASSED!
+2 >>> 1 PASSED!
+2 >>> 2 PASSED!
+2 >>> 3 PASSED!
+2 >>> 4 PASSED!
+2 >>> 5 PASSED!
+2 >>> 6 PASSED!
+2 >>> 7 PASSED!
+2 >>> 8 PASSED!
+2 >>> 9 PASSED!
+2 >>> 10 PASSED!
+2 >>> 11 PASSED!
+2 >>> 12 PASSED!
+2 >>> 13 PASSED!
+2 >>> 14 PASSED!
+2 >>> 15 PASSED!
+2 >>> 16 PASSED!
+2 >>> 17 PASSED!
+2 >>> 18 PASSED!
+2 >>> 19 PASSED!
+2 >>> 20 PASSED!
+2 >>> 21 PASSED!
+2 >>> 22 PASSED!
+2 >>> 23 PASSED!
+2 >>> 24 PASSED!
+2 >>> 25 PASSED!
+2 >>> 26 PASSED!
+2 >>> 27 PASSED!
+2 >>> 28 PASSED!
+2 >>> 29 PASSED!
+2 >>> 30 PASSED!
+2 >>> 31 PASSED!
+2 >>> 32 PASSED!
+4 >>> 0 PASSED!
+4 >>> 1 PASSED!
+4 >>> 2 PASSED!
+4 >>> 3 PASSED!
+4 >>> 4 PASSED!
+4 >>> 5 PASSED!
+4 >>> 6 PASSED!
+4 >>> 7 PASSED!
+4 >>> 8 PASSED!
+4 >>> 9 PASSED!
+4 >>> 10 PASSED!
+4 >>> 11 PASSED!
+4 >>> 12 PASSED!
+4 >>> 13 PASSED!
+4 >>> 14 PASSED!
+4 >>> 15 PASSED!
+4 >>> 16 PASSED!
+4 >>> 17 PASSED!
+4 >>> 18 PASSED!
+4 >>> 19 PASSED!
+4 >>> 20 PASSED!
+4 >>> 21 PASSED!
+4 >>> 22 PASSED!
+4 >>> 23 PASSED!
+4 >>> 24 PASSED!
+4 >>> 25 PASSED!
+4 >>> 26 PASSED!
+4 >>> 27 PASSED!
+4 >>> 28 PASSED!
+4 >>> 29 PASSED!
+4 >>> 30 PASSED!
+4 >>> 31 PASSED!
+4 >>> 32 PASSED!
+8 >>> 0 PASSED!
+8 >>> 1 PASSED!
+8 >>> 2 PASSED!
+8 >>> 3 PASSED!
+8 >>> 4 PASSED!
+8 >>> 5 PASSED!
+8 >>> 6 PASSED!
+8 >>> 7 PASSED!
+8 >>> 8 PASSED!
+8 >>> 9 PASSED!
+8 >>> 10 PASSED!
+8 >>> 11 PASSED!
+8 >>> 12 PASSED!
+8 >>> 13 PASSED!
+8 >>> 14 PASSED!
+8 >>> 15 PASSED!
+8 >>> 16 PASSED!
+8 >>> 17 PASSED!
+8 >>> 18 PASSED!
+8 >>> 19 PASSED!
+8 >>> 20 PASSED!
+8 >>> 21 PASSED!
+8 >>> 22 PASSED!
+8 >>> 23 PASSED!
+8 >>> 24 PASSED!
+8 >>> 25 PASSED!
+8 >>> 26 PASSED!
+8 >>> 27 PASSED!
+8 >>> 28 PASSED!
+8 >>> 29 PASSED!
+8 >>> 30 PASSED!
+8 >>> 31 PASSED!
+8 >>> 32 PASSED!
+16 >>> 0 PASSED!
+16 >>> 1 PASSED!
+16 >>> 2 PASSED!
+16 >>> 3 PASSED!
+16 >>> 4 PASSED!
+16 >>> 5 PASSED!
+16 >>> 6 PASSED!
+16 >>> 7 PASSED!
+16 >>> 8 PASSED!
+16 >>> 9 PASSED!
+16 >>> 10 PASSED!
+16 >>> 11 PASSED!
+16 >>> 12 PASSED!
+16 >>> 13 PASSED!
+16 >>> 14 PASSED!
+16 >>> 15 PASSED!
+16 >>> 16 PASSED!
+16 >>> 17 PASSED!
+16 >>> 18 PASSED!
+16 >>> 19 PASSED!
+16 >>> 20 PASSED!
+16 >>> 21 PASSED!
+16 >>> 22 PASSED!
+16 >>> 23 PASSED!
+16 >>> 24 PASSED!
+16 >>> 25 PASSED!
+16 >>> 26 PASSED!
+16 >>> 27 PASSED!
+16 >>> 28 PASSED!
+16 >>> 29 PASSED!
+16 >>> 30 PASSED!
+16 >>> 31 PASSED!
+16 >>> 32 PASSED!
+32 >>> 0 PASSED!
+32 >>> 1 PASSED!
+32 >>> 2 PASSED!
+32 >>> 3 PASSED!
+32 >>> 4 PASSED!
+32 >>> 5 PASSED!
+32 >>> 6 PASSED!
+32 >>> 7 PASSED!
+32 >>> 8 PASSED!
+32 >>> 9 PASSED!
+32 >>> 10 PASSED!
+32 >>> 11 PASSED!
+32 >>> 12 PASSED!
+32 >>> 13 PASSED!
+32 >>> 14 PASSED!
+32 >>> 15 PASSED!
+32 >>> 16 PASSED!
+32 >>> 17 PASSED!
+32 >>> 18 PASSED!
+32 >>> 19 PASSED!
+32 >>> 20 PASSED!
+32 >>> 21 PASSED!
+32 >>> 22 PASSED!
+32 >>> 23 PASSED!
+32 >>> 24 PASSED!
+32 >>> 25 PASSED!
+32 >>> 26 PASSED!
+32 >>> 27 PASSED!
+32 >>> 28 PASSED!
+32 >>> 29 PASSED!
+32 >>> 30 PASSED!
+32 >>> 31 PASSED!
+32 >>> 32 PASSED!
+64 >>> 0 PASSED!
+64 >>> 1 PASSED!
+64 >>> 2 PASSED!
+64 >>> 3 PASSED!
+64 >>> 4 PASSED!
+64 >>> 5 PASSED!
+64 >>> 6 PASSED!
+64 >>> 7 PASSED!
+64 >>> 8 PASSED!
+64 >>> 9 PASSED!
+64 >>> 10 PASSED!
+64 >>> 11 PASSED!
+64 >>> 12 PASSED!
+64 >>> 13 PASSED!
+64 >>> 14 PASSED!
+64 >>> 15 PASSED!
+64 >>> 16 PASSED!
+64 >>> 17 PASSED!
+64 >>> 18 PASSED!
+64 >>> 19 PASSED!
+64 >>> 20 PASSED!
+64 >>> 21 PASSED!
+64 >>> 22 PASSED!
+64 >>> 23 PASSED!
+64 >>> 24 PASSED!
+64 >>> 25 PASSED!
+64 >>> 26 PASSED!
+64 >>> 27 PASSED!
+64 >>> 28 PASSED!
+64 >>> 29 PASSED!
+64 >>> 30 PASSED!
+64 >>> 31 PASSED!
+64 >>> 32 PASSED!
+128 >>> 0 PASSED!
+128 >>> 1 PASSED!
+128 >>> 2 PASSED!
+128 >>> 3 PASSED!
+128 >>> 4 PASSED!
+128 >>> 5 PASSED!
+128 >>> 6 PASSED!
+128 >>> 7 PASSED!
+128 >>> 8 PASSED!
+128 >>> 9 PASSED!
+128 >>> 10 PASSED!
+128 >>> 11 PASSED!
+128 >>> 12 PASSED!
+128 >>> 13 PASSED!
+128 >>> 14 PASSED!
+128 >>> 15 PASSED!
+128 >>> 16 PASSED!
+128 >>> 17 PASSED!
+128 >>> 18 PASSED!
+128 >>> 19 PASSED!
+128 >>> 20 PASSED!
+128 >>> 21 PASSED!
+128 >>> 22 PASSED!
+128 >>> 23 PASSED!
+128 >>> 24 PASSED!
+128 >>> 25 PASSED!
+128 >>> 26 PASSED!
+128 >>> 27 PASSED!
+128 >>> 28 PASSED!
+128 >>> 29 PASSED!
+128 >>> 30 PASSED!
+128 >>> 31 PASSED!
+128 >>> 32 PASSED!
+256 >>> 0 PASSED!
+256 >>> 1 PASSED!
+256 >>> 2 PASSED!
+256 >>> 3 PASSED!
+256 >>> 4 PASSED!
+256 >>> 5 PASSED!
+256 >>> 6 PASSED!
+256 >>> 7 PASSED!
+256 >>> 8 PASSED!
+256 >>> 9 PASSED!
+256 >>> 10 PASSED!
+256 >>> 11 PASSED!
+256 >>> 12 PASSED!
+256 >>> 13 PASSED!
+256 >>> 14 PASSED!
+256 >>> 15 PASSED!
+256 >>> 16 PASSED!
+256 >>> 17 PASSED!
+256 >>> 18 PASSED!
+256 >>> 19 PASSED!
+256 >>> 20 PASSED!
+256 >>> 21 PASSED!
+256 >>> 22 PASSED!
+256 >>> 23 PASSED!
+256 >>> 24 PASSED!
+256 >>> 25 PASSED!
+256 >>> 26 PASSED!
+256 >>> 27 PASSED!
+256 >>> 28 PASSED!
+256 >>> 29 PASSED!
+256 >>> 30 PASSED!
+256 >>> 31 PASSED!
+256 >>> 32 PASSED!
+512 >>> 0 PASSED!
+512 >>> 1 PASSED!
+512 >>> 2 PASSED!
+512 >>> 3 PASSED!
+512 >>> 4 PASSED!
+512 >>> 5 PASSED!
+512 >>> 6 PASSED!
+512 >>> 7 PASSED!
+512 >>> 8 PASSED!
+512 >>> 9 PASSED!
+512 >>> 10 PASSED!
+512 >>> 11 PASSED!
+512 >>> 12 PASSED!
+512 >>> 13 PASSED!
+512 >>> 14 PASSED!
+512 >>> 15 PASSED!
+512 >>> 16 PASSED!
+512 >>> 17 PASSED!
+512 >>> 18 PASSED!
+512 >>> 19 PASSED!
+512 >>> 20 PASSED!
+512 >>> 21 PASSED!
+512 >>> 22 PASSED!
+512 >>> 23 PASSED!
+512 >>> 24 PASSED!
+512 >>> 25 PASSED!
+512 >>> 26 PASSED!
+512 >>> 27 PASSED!
+512 >>> 28 PASSED!
+512 >>> 29 PASSED!
+512 >>> 30 PASSED!
+512 >>> 31 PASSED!
+512 >>> 32 PASSED!
+1024 >>> 0 PASSED!
+1024 >>> 1 PASSED!
+1024 >>> 2 PASSED!
+1024 >>> 3 PASSED!
+1024 >>> 4 PASSED!
+1024 >>> 5 PASSED!
+1024 >>> 6 PASSED!
+1024 >>> 7 PASSED!
+1024 >>> 8 PASSED!
+1024 >>> 9 PASSED!
+1024 >>> 10 PASSED!
+1024 >>> 11 PASSED!
+1024 >>> 12 PASSED!
+1024 >>> 13 PASSED!
+1024 >>> 14 PASSED!
+1024 >>> 15 PASSED!
+1024 >>> 16 PASSED!
+1024 >>> 17 PASSED!
+1024 >>> 18 PASSED!
+1024 >>> 19 PASSED!
+1024 >>> 20 PASSED!
+1024 >>> 21 PASSED!
+1024 >>> 22 PASSED!
+1024 >>> 23 PASSED!
+1024 >>> 24 PASSED!
+1024 >>> 25 PASSED!
+1024 >>> 26 PASSED!
+1024 >>> 27 PASSED!
+1024 >>> 28 PASSED!
+1024 >>> 29 PASSED!
+1024 >>> 30 PASSED!
+1024 >>> 31 PASSED!
+1024 >>> 32 PASSED!
+2048 >>> 0 PASSED!
+2048 >>> 1 PASSED!
+2048 >>> 2 PASSED!
+2048 >>> 3 PASSED!
+2048 >>> 4 PASSED!
+2048 >>> 5 PASSED!
+2048 >>> 6 PASSED!
+2048 >>> 7 PASSED!
+2048 >>> 8 PASSED!
+2048 >>> 9 PASSED!
+2048 >>> 10 PASSED!
+2048 >>> 11 PASSED!
+2048 >>> 12 PASSED!
+2048 >>> 13 PASSED!
+2048 >>> 14 PASSED!
+2048 >>> 15 PASSED!
+2048 >>> 16 PASSED!
+2048 >>> 17 PASSED!
+2048 >>> 18 PASSED!
+2048 >>> 19 PASSED!
+2048 >>> 20 PASSED!
+2048 >>> 21 PASSED!
+2048 >>> 22 PASSED!
+2048 >>> 23 PASSED!
+2048 >>> 24 PASSED!
+2048 >>> 25 PASSED!
+2048 >>> 26 PASSED!
+2048 >>> 27 PASSED!
+2048 >>> 28 PASSED!
+2048 >>> 29 PASSED!
+2048 >>> 30 PASSED!
+2048 >>> 31 PASSED!
+2048 >>> 32 PASSED!
+4096 >>> 0 PASSED!
+4096 >>> 1 PASSED!
+4096 >>> 2 PASSED!
+4096 >>> 3 PASSED!
+4096 >>> 4 PASSED!
+4096 >>> 5 PASSED!
+4096 >>> 6 PASSED!
+4096 >>> 7 PASSED!
+4096 >>> 8 PASSED!
+4096 >>> 9 PASSED!
+4096 >>> 10 PASSED!
+4096 >>> 11 PASSED!
+4096 >>> 12 PASSED!
+4096 >>> 13 PASSED!
+4096 >>> 14 PASSED!
+4096 >>> 15 PASSED!
+4096 >>> 16 PASSED!
+4096 >>> 17 PASSED!
+4096 >>> 18 PASSED!
+4096 >>> 19 PASSED!
+4096 >>> 20 PASSED!
+4096 >>> 21 PASSED!
+4096 >>> 22 PASSED!
+4096 >>> 23 PASSED!
+4096 >>> 24 PASSED!
+4096 >>> 25 PASSED!
+4096 >>> 26 PASSED!
+4096 >>> 27 PASSED!
+4096 >>> 28 PASSED!
+4096 >>> 29 PASSED!
+4096 >>> 30 PASSED!
+4096 >>> 31 PASSED!
+4096 >>> 32 PASSED!
+8192 >>> 0 PASSED!
+8192 >>> 1 PASSED!
+8192 >>> 2 PASSED!
+8192 >>> 3 PASSED!
+8192 >>> 4 PASSED!
+8192 >>> 5 PASSED!
+8192 >>> 6 PASSED!
+8192 >>> 7 PASSED!
+8192 >>> 8 PASSED!
+8192 >>> 9 PASSED!
+8192 >>> 10 PASSED!
+8192 >>> 11 PASSED!
+8192 >>> 12 PASSED!
+8192 >>> 13 PASSED!
+8192 >>> 14 PASSED!
+8192 >>> 15 PASSED!
+8192 >>> 16 PASSED!
+8192 >>> 17 PASSED!
+8192 >>> 18 PASSED!
+8192 >>> 19 PASSED!
+8192 >>> 20 PASSED!
+8192 >>> 21 PASSED!
+8192 >>> 22 PASSED!
+8192 >>> 23 PASSED!
+8192 >>> 24 PASSED!
+8192 >>> 25 PASSED!
+8192 >>> 26 PASSED!
+8192 >>> 27 PASSED!
+8192 >>> 28 PASSED!
+8192 >>> 29 PASSED!
+8192 >>> 30 PASSED!
+8192 >>> 31 PASSED!
+8192 >>> 32 PASSED!
+16384 >>> 0 PASSED!
+16384 >>> 1 PASSED!
+16384 >>> 2 PASSED!
+16384 >>> 3 PASSED!
+16384 >>> 4 PASSED!
+16384 >>> 5 PASSED!
+16384 >>> 6 PASSED!
+16384 >>> 7 PASSED!
+16384 >>> 8 PASSED!
+16384 >>> 9 PASSED!
+16384 >>> 10 PASSED!
+16384 >>> 11 PASSED!
+16384 >>> 12 PASSED!
+16384 >>> 13 PASSED!
+16384 >>> 14 PASSED!
+16384 >>> 15 PASSED!
+16384 >>> 16 PASSED!
+16384 >>> 17 PASSED!
+16384 >>> 18 PASSED!
+16384 >>> 19 PASSED!
+16384 >>> 20 PASSED!
+16384 >>> 21 PASSED!
+16384 >>> 22 PASSED!
+16384 >>> 23 PASSED!
+16384 >>> 24 PASSED!
+16384 >>> 25 PASSED!
+16384 >>> 26 PASSED!
+16384 >>> 27 PASSED!
+16384 >>> 28 PASSED!
+16384 >>> 29 PASSED!
+16384 >>> 30 PASSED!
+16384 >>> 31 PASSED!
+16384 >>> 32 PASSED!
+32768 >>> 0 PASSED!
+32768 >>> 1 PASSED!
+32768 >>> 2 PASSED!
+32768 >>> 3 PASSED!
+32768 >>> 4 PASSED!
+32768 >>> 5 PASSED!
+32768 >>> 6 PASSED!
+32768 >>> 7 PASSED!
+32768 >>> 8 PASSED!
+32768 >>> 9 PASSED!
+32768 >>> 10 PASSED!
+32768 >>> 11 PASSED!
+32768 >>> 12 PASSED!
+32768 >>> 13 PASSED!
+32768 >>> 14 PASSED!
+32768 >>> 15 PASSED!
+32768 >>> 16 PASSED!
+32768 >>> 17 PASSED!
+32768 >>> 18 PASSED!
+32768 >>> 19 PASSED!
+32768 >>> 20 PASSED!
+32768 >>> 21 PASSED!
+32768 >>> 22 PASSED!
+32768 >>> 23 PASSED!
+32768 >>> 24 PASSED!
+32768 >>> 25 PASSED!
+32768 >>> 26 PASSED!
+32768 >>> 27 PASSED!
+32768 >>> 28 PASSED!
+32768 >>> 29 PASSED!
+32768 >>> 30 PASSED!
+32768 >>> 31 PASSED!
+32768 >>> 32 PASSED!
+65536 >>> 0 PASSED!
+65536 >>> 1 PASSED!
+65536 >>> 2 PASSED!
+65536 >>> 3 PASSED!
+65536 >>> 4 PASSED!
+65536 >>> 5 PASSED!
+65536 >>> 6 PASSED!
+65536 >>> 7 PASSED!
+65536 >>> 8 PASSED!
+65536 >>> 9 PASSED!
+65536 >>> 10 PASSED!
+65536 >>> 11 PASSED!
+65536 >>> 12 PASSED!
+65536 >>> 13 PASSED!
+65536 >>> 14 PASSED!
+65536 >>> 15 PASSED!
+65536 >>> 16 PASSED!
+65536 >>> 17 PASSED!
+65536 >>> 18 PASSED!
+65536 >>> 19 PASSED!
+65536 >>> 20 PASSED!
+65536 >>> 21 PASSED!
+65536 >>> 22 PASSED!
+65536 >>> 23 PASSED!
+65536 >>> 24 PASSED!
+65536 >>> 25 PASSED!
+65536 >>> 26 PASSED!
+65536 >>> 27 PASSED!
+65536 >>> 28 PASSED!
+65536 >>> 29 PASSED!
+65536 >>> 30 PASSED!
+65536 >>> 31 PASSED!
+65536 >>> 32 PASSED!
+131072 >>> 0 PASSED!
+131072 >>> 1 PASSED!
+131072 >>> 2 PASSED!
+131072 >>> 3 PASSED!
+131072 >>> 4 PASSED!
+131072 >>> 5 PASSED!
+131072 >>> 6 PASSED!
+131072 >>> 7 PASSED!
+131072 >>> 8 PASSED!
+131072 >>> 9 PASSED!
+131072 >>> 10 PASSED!
+131072 >>> 11 PASSED!
+131072 >>> 12 PASSED!
+131072 >>> 13 PASSED!
+131072 >>> 14 PASSED!
+131072 >>> 15 PASSED!
+131072 >>> 16 PASSED!
+131072 >>> 17 PASSED!
+131072 >>> 18 PASSED!
+131072 >>> 19 PASSED!
+131072 >>> 20 PASSED!
+131072 >>> 21 PASSED!
+131072 >>> 22 PASSED!
+131072 >>> 23 PASSED!
+131072 >>> 24 PASSED!
+131072 >>> 25 PASSED!
+131072 >>> 26 PASSED!
+131072 >>> 27 PASSED!
+131072 >>> 28 PASSED!
+131072 >>> 29 PASSED!
+131072 >>> 30 PASSED!
+131072 >>> 31 PASSED!
+131072 >>> 32 PASSED!
+262144 >>> 0 PASSED!
+262144 >>> 1 PASSED!
+262144 >>> 2 PASSED!
+262144 >>> 3 PASSED!
+262144 >>> 4 PASSED!
+262144 >>> 5 PASSED!
+262144 >>> 6 PASSED!
+262144 >>> 7 PASSED!
+262144 >>> 8 PASSED!
+262144 >>> 9 PASSED!
+262144 >>> 10 PASSED!
+262144 >>> 11 PASSED!
+262144 >>> 12 PASSED!
+262144 >>> 13 PASSED!
+262144 >>> 14 PASSED!
+262144 >>> 15 PASSED!
+262144 >>> 16 PASSED!
+262144 >>> 17 PASSED!
+262144 >>> 18 PASSED!
+262144 >>> 19 PASSED!
+262144 >>> 20 PASSED!
+262144 >>> 21 PASSED!
+262144 >>> 22 PASSED!
+262144 >>> 23 PASSED!
+262144 >>> 24 PASSED!
+262144 >>> 25 PASSED!
+262144 >>> 26 PASSED!
+262144 >>> 27 PASSED!
+262144 >>> 28 PASSED!
+262144 >>> 29 PASSED!
+262144 >>> 30 PASSED!
+262144 >>> 31 PASSED!
+262144 >>> 32 PASSED!
+524288 >>> 0 PASSED!
+524288 >>> 1 PASSED!
+524288 >>> 2 PASSED!
+524288 >>> 3 PASSED!
+524288 >>> 4 PASSED!
+524288 >>> 5 PASSED!
+524288 >>> 6 PASSED!
+524288 >>> 7 PASSED!
+524288 >>> 8 PASSED!
+524288 >>> 9 PASSED!
+524288 >>> 10 PASSED!
+524288 >>> 11 PASSED!
+524288 >>> 12 PASSED!
+524288 >>> 13 PASSED!
+524288 >>> 14 PASSED!
+524288 >>> 15 PASSED!
+524288 >>> 16 PASSED!
+524288 >>> 17 PASSED!
+524288 >>> 18 PASSED!
+524288 >>> 19 PASSED!
+524288 >>> 20 PASSED!
+524288 >>> 21 PASSED!
+524288 >>> 22 PASSED!
+524288 >>> 23 PASSED!
+524288 >>> 24 PASSED!
+524288 >>> 25 PASSED!
+524288 >>> 26 PASSED!
+524288 >>> 27 PASSED!
+524288 >>> 28 PASSED!
+524288 >>> 29 PASSED!
+524288 >>> 30 PASSED!
+524288 >>> 31 PASSED!
+524288 >>> 32 PASSED!
+1048576 >>> 0 PASSED!
+1048576 >>> 1 PASSED!
+1048576 >>> 2 PASSED!
+1048576 >>> 3 PASSED!
+1048576 >>> 4 PASSED!
+1048576 >>> 5 PASSED!
+1048576 >>> 6 PASSED!
+1048576 >>> 7 PASSED!
+1048576 >>> 8 PASSED!
+1048576 >>> 9 PASSED!
+1048576 >>> 10 PASSED!
+1048576 >>> 11 PASSED!
+1048576 >>> 12 PASSED!
+1048576 >>> 13 PASSED!
+1048576 >>> 14 PASSED!
+1048576 >>> 15 PASSED!
+1048576 >>> 16 PASSED!
+1048576 >>> 17 PASSED!
+1048576 >>> 18 PASSED!
+1048576 >>> 19 PASSED!
+1048576 >>> 20 PASSED!
+1048576 >>> 21 PASSED!
+1048576 >>> 22 PASSED!
+1048576 >>> 23 PASSED!
+1048576 >>> 24 PASSED!
+1048576 >>> 25 PASSED!
+1048576 >>> 26 PASSED!
+1048576 >>> 27 PASSED!
+1048576 >>> 28 PASSED!
+1048576 >>> 29 PASSED!
+1048576 >>> 30 PASSED!
+1048576 >>> 31 PASSED!
+1048576 >>> 32 PASSED!
+2097152 >>> 0 PASSED!
+2097152 >>> 1 PASSED!
+2097152 >>> 2 PASSED!
+2097152 >>> 3 PASSED!
+2097152 >>> 4 PASSED!
+2097152 >>> 5 PASSED!
+2097152 >>> 6 PASSED!
+2097152 >>> 7 PASSED!
+2097152 >>> 8 PASSED!
+2097152 >>> 9 PASSED!
+2097152 >>> 10 PASSED!
+2097152 >>> 11 PASSED!
+2097152 >>> 12 PASSED!
+2097152 >>> 13 PASSED!
+2097152 >>> 14 PASSED!
+2097152 >>> 15 PASSED!
+2097152 >>> 16 PASSED!
+2097152 >>> 17 PASSED!
+2097152 >>> 18 PASSED!
+2097152 >>> 19 PASSED!
+2097152 >>> 20 PASSED!
+2097152 >>> 21 PASSED!
+2097152 >>> 22 PASSED!
+2097152 >>> 23 PASSED!
+2097152 >>> 24 PASSED!
+2097152 >>> 25 PASSED!
+2097152 >>> 26 PASSED!
+2097152 >>> 27 PASSED!
+2097152 >>> 28 PASSED!
+2097152 >>> 29 PASSED!
+2097152 >>> 30 PASSED!
+2097152 >>> 31 PASSED!
+2097152 >>> 32 PASSED!
+4194304 >>> 0 PASSED!
+4194304 >>> 1 PASSED!
+4194304 >>> 2 PASSED!
+4194304 >>> 3 PASSED!
+4194304 >>> 4 PASSED!
+4194304 >>> 5 PASSED!
+4194304 >>> 6 PASSED!
+4194304 >>> 7 PASSED!
+4194304 >>> 8 PASSED!
+4194304 >>> 9 PASSED!
+4194304 >>> 10 PASSED!
+4194304 >>> 11 PASSED!
+4194304 >>> 12 PASSED!
+4194304 >>> 13 PASSED!
+4194304 >>> 14 PASSED!
+4194304 >>> 15 PASSED!
+4194304 >>> 16 PASSED!
+4194304 >>> 17 PASSED!
+4194304 >>> 18 PASSED!
+4194304 >>> 19 PASSED!
+4194304 >>> 20 PASSED!
+4194304 >>> 21 PASSED!
+4194304 >>> 22 PASSED!
+4194304 >>> 23 PASSED!
+4194304 >>> 24 PASSED!
+4194304 >>> 25 PASSED!
+4194304 >>> 26 PASSED!
+4194304 >>> 27 PASSED!
+4194304 >>> 28 PASSED!
+4194304 >>> 29 PASSED!
+4194304 >>> 30 PASSED!
+4194304 >>> 31 PASSED!
+4194304 >>> 32 PASSED!
+8388608 >>> 0 PASSED!
+8388608 >>> 1 PASSED!
+8388608 >>> 2 PASSED!
+8388608 >>> 3 PASSED!
+8388608 >>> 4 PASSED!
+8388608 >>> 5 PASSED!
+8388608 >>> 6 PASSED!
+8388608 >>> 7 PASSED!
+8388608 >>> 8 PASSED!
+8388608 >>> 9 PASSED!
+8388608 >>> 10 PASSED!
+8388608 >>> 11 PASSED!
+8388608 >>> 12 PASSED!
+8388608 >>> 13 PASSED!
+8388608 >>> 14 PASSED!
+8388608 >>> 15 PASSED!
+8388608 >>> 16 PASSED!
+8388608 >>> 17 PASSED!
+8388608 >>> 18 PASSED!
+8388608 >>> 19 PASSED!
+8388608 >>> 20 PASSED!
+8388608 >>> 21 PASSED!
+8388608 >>> 22 PASSED!
+8388608 >>> 23 PASSED!
+8388608 >>> 24 PASSED!
+8388608 >>> 25 PASSED!
+8388608 >>> 26 PASSED!
+8388608 >>> 27 PASSED!
+8388608 >>> 28 PASSED!
+8388608 >>> 29 PASSED!
+8388608 >>> 30 PASSED!
+8388608 >>> 31 PASSED!
+8388608 >>> 32 PASSED!
+16777216 >>> 0 PASSED!
+16777216 >>> 1 PASSED!
+16777216 >>> 2 PASSED!
+16777216 >>> 3 PASSED!
+16777216 >>> 4 PASSED!
+16777216 >>> 5 PASSED!
+16777216 >>> 6 PASSED!
+16777216 >>> 7 PASSED!
+16777216 >>> 8 PASSED!
+16777216 >>> 9 PASSED!
+16777216 >>> 10 PASSED!
+16777216 >>> 11 PASSED!
+16777216 >>> 12 PASSED!
+16777216 >>> 13 PASSED!
+16777216 >>> 14 PASSED!
+16777216 >>> 15 PASSED!
+16777216 >>> 16 PASSED!
+16777216 >>> 17 PASSED!
+16777216 >>> 18 PASSED!
+16777216 >>> 19 PASSED!
+16777216 >>> 20 PASSED!
+16777216 >>> 21 PASSED!
+16777216 >>> 22 PASSED!
+16777216 >>> 23 PASSED!
+16777216 >>> 24 PASSED!
+16777216 >>> 25 PASSED!
+16777216 >>> 26 PASSED!
+16777216 >>> 27 PASSED!
+16777216 >>> 28 PASSED!
+16777216 >>> 29 PASSED!
+16777216 >>> 30 PASSED!
+16777216 >>> 31 PASSED!
+16777216 >>> 32 PASSED!
+33554432 >>> 0 PASSED!
+33554432 >>> 1 PASSED!
+33554432 >>> 2 PASSED!
+33554432 >>> 3 PASSED!
+33554432 >>> 4 PASSED!
+33554432 >>> 5 PASSED!
+33554432 >>> 6 PASSED!
+33554432 >>> 7 PASSED!
+33554432 >>> 8 PASSED!
+33554432 >>> 9 PASSED!
+33554432 >>> 10 PASSED!
+33554432 >>> 11 PASSED!
+33554432 >>> 12 PASSED!
+33554432 >>> 13 PASSED!
+33554432 >>> 14 PASSED!
+33554432 >>> 15 PASSED!
+33554432 >>> 16 PASSED!
+33554432 >>> 17 PASSED!
+33554432 >>> 18 PASSED!
+33554432 >>> 19 PASSED!
+33554432 >>> 20 PASSED!
+33554432 >>> 21 PASSED!
+33554432 >>> 22 PASSED!
+33554432 >>> 23 PASSED!
+33554432 >>> 24 PASSED!
+33554432 >>> 25 PASSED!
+33554432 >>> 26 PASSED!
+33554432 >>> 27 PASSED!
+33554432 >>> 28 PASSED!
+33554432 >>> 29 PASSED!
+33554432 >>> 30 PASSED!
+33554432 >>> 31 PASSED!
+33554432 >>> 32 PASSED!
+67108864 >>> 0 PASSED!
+67108864 >>> 1 PASSED!
+67108864 >>> 2 PASSED!
+67108864 >>> 3 PASSED!
+67108864 >>> 4 PASSED!
+67108864 >>> 5 PASSED!
+67108864 >>> 6 PASSED!
+67108864 >>> 7 PASSED!
+67108864 >>> 8 PASSED!
+67108864 >>> 9 PASSED!
+67108864 >>> 10 PASSED!
+67108864 >>> 11 PASSED!
+67108864 >>> 12 PASSED!
+67108864 >>> 13 PASSED!
+67108864 >>> 14 PASSED!
+67108864 >>> 15 PASSED!
+67108864 >>> 16 PASSED!
+67108864 >>> 17 PASSED!
+67108864 >>> 18 PASSED!
+67108864 >>> 19 PASSED!
+67108864 >>> 20 PASSED!
+67108864 >>> 21 PASSED!
+67108864 >>> 22 PASSED!
+67108864 >>> 23 PASSED!
+67108864 >>> 24 PASSED!
+67108864 >>> 25 PASSED!
+67108864 >>> 26 PASSED!
+67108864 >>> 27 PASSED!
+67108864 >>> 28 PASSED!
+67108864 >>> 29 PASSED!
+67108864 >>> 30 PASSED!
+67108864 >>> 31 PASSED!
+67108864 >>> 32 PASSED!
+134217728 >>> 0 PASSED!
+134217728 >>> 1 PASSED!
+134217728 >>> 2 PASSED!
+134217728 >>> 3 PASSED!
+134217728 >>> 4 PASSED!
+134217728 >>> 5 PASSED!
+134217728 >>> 6 PASSED!
+134217728 >>> 7 PASSED!
+134217728 >>> 8 PASSED!
+134217728 >>> 9 PASSED!
+134217728 >>> 10 PASSED!
+134217728 >>> 11 PASSED!
+134217728 >>> 12 PASSED!
+134217728 >>> 13 PASSED!
+134217728 >>> 14 PASSED!
+134217728 >>> 15 PASSED!
+134217728 >>> 16 PASSED!
+134217728 >>> 17 PASSED!
+134217728 >>> 18 PASSED!
+134217728 >>> 19 PASSED!
+134217728 >>> 20 PASSED!
+134217728 >>> 21 PASSED!
+134217728 >>> 22 PASSED!
+134217728 >>> 23 PASSED!
+134217728 >>> 24 PASSED!
+134217728 >>> 25 PASSED!
+134217728 >>> 26 PASSED!
+134217728 >>> 27 PASSED!
+134217728 >>> 28 PASSED!
+134217728 >>> 29 PASSED!
+134217728 >>> 30 PASSED!
+134217728 >>> 31 PASSED!
+134217728 >>> 32 PASSED!
+268435456 >>> 0 PASSED!
+268435456 >>> 1 PASSED!
+268435456 >>> 2 PASSED!
+268435456 >>> 3 PASSED!
+268435456 >>> 4 PASSED!
+268435456 >>> 5 PASSED!
+268435456 >>> 6 PASSED!
+268435456 >>> 7 PASSED!
+268435456 >>> 8 PASSED!
+268435456 >>> 9 PASSED!
+268435456 >>> 10 PASSED!
+268435456 >>> 11 PASSED!
+268435456 >>> 12 PASSED!
+268435456 >>> 13 PASSED!
+268435456 >>> 14 PASSED!
+268435456 >>> 15 PASSED!
+268435456 >>> 16 PASSED!
+268435456 >>> 17 PASSED!
+268435456 >>> 18 PASSED!
+268435456 >>> 19 PASSED!
+268435456 >>> 20 PASSED!
+268435456 >>> 21 PASSED!
+268435456 >>> 22 PASSED!
+268435456 >>> 23 PASSED!
+268435456 >>> 24 PASSED!
+268435456 >>> 25 PASSED!
+268435456 >>> 26 PASSED!
+268435456 >>> 27 PASSED!
+268435456 >>> 28 PASSED!
+268435456 >>> 29 PASSED!
+268435456 >>> 30 PASSED!
+268435456 >>> 31 PASSED!
+268435456 >>> 32 PASSED!
+536870912 >>> 0 PASSED!
+536870912 >>> 1 PASSED!
+536870912 >>> 2 PASSED!
+536870912 >>> 3 PASSED!
+536870912 >>> 4 PASSED!
+536870912 >>> 5 PASSED!
+536870912 >>> 6 PASSED!
+536870912 >>> 7 PASSED!
+536870912 >>> 8 PASSED!
+536870912 >>> 9 PASSED!
+536870912 >>> 10 PASSED!
+536870912 >>> 11 PASSED!
+536870912 >>> 12 PASSED!
+536870912 >>> 13 PASSED!
+536870912 >>> 14 PASSED!
+536870912 >>> 15 PASSED!
+536870912 >>> 16 PASSED!
+536870912 >>> 17 PASSED!
+536870912 >>> 18 PASSED!
+536870912 >>> 19 PASSED!
+536870912 >>> 20 PASSED!
+536870912 >>> 21 PASSED!
+536870912 >>> 22 PASSED!
+536870912 >>> 23 PASSED!
+536870912 >>> 24 PASSED!
+536870912 >>> 25 PASSED!
+536870912 >>> 26 PASSED!
+536870912 >>> 27 PASSED!
+536870912 >>> 28 PASSED!
+536870912 >>> 29 PASSED!
+536870912 >>> 30 PASSED!
+536870912 >>> 31 PASSED!
+536870912 >>> 32 PASSED!
+1073741824 >>> 0 PASSED!
+1073741824 >>> 1 PASSED!
+1073741824 >>> 2 PASSED!
+1073741824 >>> 3 PASSED!
+1073741824 >>> 4 PASSED!
+1073741824 >>> 5 PASSED!
+1073741824 >>> 6 PASSED!
+1073741824 >>> 7 PASSED!
+1073741824 >>> 8 PASSED!
+1073741824 >>> 9 PASSED!
+1073741824 >>> 10 PASSED!
+1073741824 >>> 11 PASSED!
+1073741824 >>> 12 PASSED!
+1073741824 >>> 13 PASSED!
+1073741824 >>> 14 PASSED!
+1073741824 >>> 15 PASSED!
+1073741824 >>> 16 PASSED!
+1073741824 >>> 17 PASSED!
+1073741824 >>> 18 PASSED!
+1073741824 >>> 19 PASSED!
+1073741824 >>> 20 PASSED!
+1073741824 >>> 21 PASSED!
+1073741824 >>> 22 PASSED!
+1073741824 >>> 23 PASSED!
+1073741824 >>> 24 PASSED!
+1073741824 >>> 25 PASSED!
+1073741824 >>> 26 PASSED!
+1073741824 >>> 27 PASSED!
+1073741824 >>> 28 PASSED!
+1073741824 >>> 29 PASSED!
+1073741824 >>> 30 PASSED!
+1073741824 >>> 31 PASSED!
+1073741824 >>> 32 PASSED!
+2147483648 >>> 0 PASSED!
+2147483648 >>> 1 PASSED!
+2147483648 >>> 2 PASSED!
+2147483648 >>> 3 PASSED!
+2147483648 >>> 4 PASSED!
+2147483648 >>> 5 PASSED!
+2147483648 >>> 6 PASSED!
+2147483648 >>> 7 PASSED!
+2147483648 >>> 8 PASSED!
+2147483648 >>> 9 PASSED!
+2147483648 >>> 10 PASSED!
+2147483648 >>> 11 PASSED!
+2147483648 >>> 12 PASSED!
+2147483648 >>> 13 PASSED!
+2147483648 >>> 14 PASSED!
+2147483648 >>> 15 PASSED!
+2147483648 >>> 16 PASSED!
+2147483648 >>> 17 PASSED!
+2147483648 >>> 18 PASSED!
+2147483648 >>> 19 PASSED!
+2147483648 >>> 20 PASSED!
+2147483648 >>> 21 PASSED!
+2147483648 >>> 22 PASSED!
+2147483648 >>> 23 PASSED!
+2147483648 >>> 24 PASSED!
+2147483648 >>> 25 PASSED!
+2147483648 >>> 26 PASSED!
+2147483648 >>> 27 PASSED!
+2147483648 >>> 28 PASSED!
+2147483648 >>> 29 PASSED!
+2147483648 >>> 30 PASSED!
+2147483648 >>> 31 PASSED!
+2147483648 >>> 32 PASSED!
+4294967296 >>> 0 PASSED!
+4294967296 >>> 1 PASSED!
+4294967296 >>> 2 PASSED!
+4294967296 >>> 3 PASSED!
+4294967296 >>> 4 PASSED!
+4294967296 >>> 5 PASSED!
+4294967296 >>> 6 PASSED!
+4294967296 >>> 7 PASSED!
+4294967296 >>> 8 PASSED!
+4294967296 >>> 9 PASSED!
+4294967296 >>> 10 PASSED!
+4294967296 >>> 11 PASSED!
+4294967296 >>> 12 PASSED!
+4294967296 >>> 13 PASSED!
+4294967296 >>> 14 PASSED!
+4294967296 >>> 15 PASSED!
+4294967296 >>> 16 PASSED!
+4294967296 >>> 17 PASSED!
+4294967296 >>> 18 PASSED!
+4294967296 >>> 19 PASSED!
+4294967296 >>> 20 PASSED!
+4294967296 >>> 21 PASSED!
+4294967296 >>> 22 PASSED!
+4294967296 >>> 23 PASSED!
+4294967296 >>> 24 PASSED!
+4294967296 >>> 25 PASSED!
+4294967296 >>> 26 PASSED!
+4294967296 >>> 27 PASSED!
+4294967296 >>> 28 PASSED!
+4294967296 >>> 29 PASSED!
+4294967296 >>> 30 PASSED!
+4294967296 >>> 31 PASSED!
+4294967296 >>> 32 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_3/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_3/test.swf
new file mode 100644
index 000000000..46f40e9f8
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_3/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_3/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_3/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_7_3/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_1/Test.as
new file mode 100644
index 000000000..936d5a52c
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_1/Test.as
@@ -0,0 +1,119 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_8_1";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ array[item++] = Assert.expectEq( "true < false", false, true < false );
+ array[item++] = Assert.expectEq( "false < true", true, false < true );
+ array[item++] = Assert.expectEq( "false < false", false, false < false );
+ array[item++] = Assert.expectEq( "true < true", false, true < true );
+
+ array[item++] = Assert.expectEq( "new Boolean(true) < new Boolean(true)", false, new Boolean(true) < new Boolean(true) );
+ array[item++] = Assert.expectEq( "new Boolean(true) < new Boolean(false)", false, new Boolean(true) < new Boolean(false) );
+ array[item++] = Assert.expectEq( "new Boolean(false) < new Boolean(true)", true, new Boolean(false) < new Boolean(true) );
+ array[item++] = Assert.expectEq( "new Boolean(false) < new Boolean(false)", false, new Boolean(false) < new Boolean(false) );
+
+ array[item++] = Assert.expectEq( "new MyObject(Infinity) < new MyObject(Infinity)", false, new MyObject( Number.POSITIVE_INFINITY ) < new MyObject( Number.POSITIVE_INFINITY) );
+ array[item++] = Assert.expectEq( "new MyObject(-Infinity) < new MyObject(Infinity)", true, new MyObject( Number.NEGATIVE_INFINITY ) < new MyObject( Number.POSITIVE_INFINITY) );
+ array[item++] = Assert.expectEq( "new MyObject(-Infinity) < new MyObject(-Infinity)", false, new MyObject( Number.NEGATIVE_INFINITY ) < new MyObject( Number.NEGATIVE_INFINITY) );
+
+ array[item++] = Assert.expectEq( "new MyValueObject(false) < new MyValueObject(true)", true, new MyValueObject(false) < new MyValueObject(true) );
+ array[item++] = Assert.expectEq( "new MyValueObject(true) < new MyValueObject(true)", false, new MyValueObject(true) < new MyValueObject(true) );
+ array[item++] = Assert.expectEq( "new MyValueObject(false) < new MyValueObject(false)", false, new MyValueObject(false) < new MyValueObject(false) );
+
+ array[item++] = Assert.expectEq( "new MyStringObject(false) < new MyStringObject(true)", true, new MyStringObject(false) < new MyStringObject(true) );
+ array[item++] = Assert.expectEq( "new MyStringObject(true) < new MyStringObject(true)", false, new MyStringObject(true) < new MyStringObject(true) );
+ array[item++] = Assert.expectEq( "new MyStringObject(false) < new MyStringObject(false)", false, new MyStringObject(false) < new MyStringObject(false) );
+
+ array[item++] = Assert.expectEq( "Number.NaN < Number.NaN", false, Number.NaN < Number.NaN );
+ array[item++] = Assert.expectEq( "0 < Number.NaN", false, 0 < Number.NaN );
+ array[item++] = Assert.expectEq( "Number.NaN < 0", false, Number.NaN < 0 );
+
+ array[item++] = Assert.expectEq( "0 < -0", false, 0 < -0 );
+ array[item++] = Assert.expectEq( "-0 < 0", false, -0 < 0 );
+
+ array[item++] = Assert.expectEq( "Infinity < 0", false, Number.POSITIVE_INFINITY < 0 );
+ array[item++] = Assert.expectEq( "Infinity < Number.MAX_VALUE", false, Number.POSITIVE_INFINITY < Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "Infinity < Infinity", false, Number.POSITIVE_INFINITY < Number.POSITIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "0 < Infinity", true, 0 < Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE < Infinity", true, Number.MAX_VALUE < Number.POSITIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "0 < -Infinity", false, 0 < Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE < -Infinity", false, Number.MAX_VALUE < Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-Infinity < -Infinity", false, Number.NEGATIVE_INFINITY < Number.NEGATIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "-Infinity < 0", true, Number.NEGATIVE_INFINITY < 0 );
+ array[item++] = Assert.expectEq( "-Infinity < -Number.MAX_VALUE", true, Number.NEGATIVE_INFINITY < -Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "-Infinity < Number.MIN_VALUE", true, Number.NEGATIVE_INFINITY < Number.MIN_VALUE );
+
+ array[item++] = Assert.expectEq( "'string' < 'string'", false, 'string' < 'string' );
+ array[item++] = Assert.expectEq( "'astring' < 'string'", true, 'astring' < 'string' );
+ array[item++] = Assert.expectEq( "'strings' < 'stringy'", true, 'strings' < 'stringy' );
+ array[item++] = Assert.expectEq( "'strings' < 'stringier'", false, 'strings' < 'stringier' );
+ array[item++] = Assert.expectEq( "'string' < 'astring'", false, 'string' < 'astring' );
+ array[item++] = Assert.expectEq( "'string' < 'strings'", true, 'string' < 'strings' );
+ array[item++] = Assert.expectEq( "'string' < 'str'", false, 'string' < 'str' );
+
+ array[item++] = Assert.expectEq( "44 < 55", true, 44 < 55 );
+ array[item++] = Assert.expectEq( "55 < 44", false, 55 < 44 );
+ array[item++] = Assert.expectEq( "56.43 < 65.0", true, 56.43 < 65.0 );
+ array[item++] = Assert.expectEq( "65.0 < 56.43", false, 65.0 < 56.43 );
+ array[item++] = Assert.expectEq( "43247503.43 < 945540654.654", true, 43247503.43 < 945540654.654 );
+ array[item++] = Assert.expectEq( "43247503.43<945540654.654", true, 43247503.43<945540654.654 );
+ array[item++] = Assert.expectEq( "43247503.43< 945540654.654", true, 43247503.43< 945540654.654 );
+ array[item++] = Assert.expectEq( "43247503.43 < 945540654.654", true, 43247503.43 < 945540654.654 );
+ array[item++] = Assert.expectEq( "-56.43 < 65.0", true, -56.43 < 65.0 );
+ array[item++] = Assert.expectEq( "-56.43 < -65.0", false, -56.43 < -65.0 );
+ var b = (-56.43) < (-56.43);
+ array[item++] = Assert.expectEq( "-56.43 < -56.43", false, b );
+
+ array[item++] = Assert.expectEq( "100 < 100", false, 100 < 100 );
+
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=476556
+ //
+ // This test is not really sufficient, because it depends on the code generated by
+ // the compiler. In the case of ASC it generates IFNLE, and the IFN* instructions
+ // were buggy when NaN were involved in double/double comparisons. To do better
+ // we need an ABC assembler, _and_ even then we may need to switch off optimization
+ // in the interpreter.
+
+ var b = 0/0;
+ var result;
+ if (b < 0.0001)
+ result = "wrong";
+ else
+ result = "right";
+ array[item++] = Assert.expectEq( "if (NaN < 0.0001) ...", "right", result);
+
+ return ( array );
+}
+function MyObject(value) {
+ this.value = value;
+ //this.valueOf = new Function( "return this.value" );
+ //this.toString = new Function( "return this.value +''" );
+ this.valueOf = function(){return this.value};
+ this.toString = function(){return this.value +''};
+}
+function MyValueObject(value) {
+ this.value = value;
+ //this.valueOf = new Function( "return this.value" );
+ this.valueOf = function(){return this.value};
+}
+function MyStringObject(value) {
+ this.value = value;
+ //this.toString = new Function( "return this.value +''" );
+ this.toString = function(){return this.value +'' };
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_1/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_1/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_1/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_1/output.txt
new file mode 100644
index 000000000..1915068a5
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_1/output.txt
@@ -0,0 +1,53 @@
+true < false PASSED!
+false < true PASSED!
+false < false PASSED!
+true < true PASSED!
+new Boolean(true) < new Boolean(true) PASSED!
+new Boolean(true) < new Boolean(false) PASSED!
+new Boolean(false) < new Boolean(true) PASSED!
+new Boolean(false) < new Boolean(false) PASSED!
+new MyObject(Infinity) < new MyObject(Infinity) PASSED!
+new MyObject(-Infinity) < new MyObject(Infinity) PASSED!
+new MyObject(-Infinity) < new MyObject(-Infinity) PASSED!
+new MyValueObject(false) < new MyValueObject(true) PASSED!
+new MyValueObject(true) < new MyValueObject(true) PASSED!
+new MyValueObject(false) < new MyValueObject(false) PASSED!
+new MyStringObject(false) < new MyStringObject(true) PASSED!
+new MyStringObject(true) < new MyStringObject(true) PASSED!
+new MyStringObject(false) < new MyStringObject(false) PASSED!
+Number.NaN < Number.NaN PASSED!
+0 < Number.NaN PASSED!
+Number.NaN < 0 PASSED!
+0 < -0 PASSED!
+-0 < 0 PASSED!
+Infinity < 0 PASSED!
+Infinity < Number.MAX_VALUE PASSED!
+Infinity < Infinity PASSED!
+0 < Infinity PASSED!
+Number.MAX_VALUE < Infinity PASSED!
+0 < -Infinity PASSED!
+Number.MAX_VALUE < -Infinity PASSED!
+-Infinity < -Infinity PASSED!
+-Infinity < 0 PASSED!
+-Infinity < -Number.MAX_VALUE PASSED!
+-Infinity < Number.MIN_VALUE PASSED!
+'string' < 'string' PASSED!
+'astring' < 'string' PASSED!
+'strings' < 'stringy' PASSED!
+'strings' < 'stringier' PASSED!
+'string' < 'astring' PASSED!
+'string' < 'strings' PASSED!
+'string' < 'str' PASSED!
+44 < 55 PASSED!
+55 < 44 PASSED!
+56.43 < 65.0 PASSED!
+65.0 < 56.43 PASSED!
+43247503.43 < 945540654.654 PASSED!
+43247503.43<945540654.654 PASSED!
+43247503.43< 945540654.654 PASSED!
+43247503.43 < 945540654.654 PASSED!
+-56.43 < 65.0 PASSED!
+-56.43 < -65.0 PASSED!
+-56.43 < -56.43 PASSED!
+100 < 100 PASSED!
+if (NaN < 0.0001) ... PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_1/test.swf
new file mode 100644
index 000000000..62e48e8ed
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_1/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_1/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_2/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_2/Test.as
new file mode 100644
index 000000000..71d075515
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_2/Test.as
@@ -0,0 +1,102 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_8_2";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ array[item++] = Assert.expectEq( "true > false", true, true > false );
+ array[item++] = Assert.expectEq( "false > true", false, false > true );
+ array[item++] = Assert.expectEq( "false > false", false, false > false );
+ array[item++] = Assert.expectEq( "true > true", false, true > true );
+
+ array[item++] = Assert.expectEq( "new Boolean(true) > new Boolean(true)", false, new Boolean(true) > new Boolean(true) );
+ array[item++] = Assert.expectEq( "new Boolean(true) > new Boolean(false)", true, new Boolean(true) > new Boolean(false) );
+ array[item++] = Assert.expectEq( "new Boolean(false) > new Boolean(true)", false, new Boolean(false) > new Boolean(true) );
+ array[item++] = Assert.expectEq( "new Boolean(false) > new Boolean(false)", false, new Boolean(false) > new Boolean(false) );
+
+ array[item++] = Assert.expectEq( "new MyObject(Infinity) > new MyObject(Infinity)", false, new MyObject( Number.POSITIVE_INFINITY ) > new MyObject( Number.POSITIVE_INFINITY) );
+ array[item++] = Assert.expectEq( "new MyObject(-Infinity) > new MyObject(Infinity)", false, new MyObject( Number.NEGATIVE_INFINITY ) > new MyObject( Number.POSITIVE_INFINITY) );
+ array[item++] = Assert.expectEq( "new MyObject(-Infinity) > new MyObject(-Infinity)", false, new MyObject( Number.NEGATIVE_INFINITY ) > new MyObject( Number.NEGATIVE_INFINITY) );
+
+ array[item++] = Assert.expectEq( "new MyValueObject(false) > new MyValueObject(true)", false, new MyValueObject(false) > new MyValueObject(true) );
+ array[item++] = Assert.expectEq( "new MyValueObject(true) > new MyValueObject(true)", false, new MyValueObject(true) > new MyValueObject(true) );
+ array[item++] = Assert.expectEq( "new MyValueObject(false) > new MyValueObject(false)", false, new MyValueObject(false) > new MyValueObject(false) );
+
+ array[item++] = Assert.expectEq( "new MyStringObject(false) > new MyStringObject(true)", false, new MyStringObject(false) > new MyStringObject(true) );
+ array[item++] = Assert.expectEq( "new MyStringObject(true) > new MyStringObject(true)", false, new MyStringObject(true) > new MyStringObject(true) );
+ array[item++] = Assert.expectEq( "new MyStringObject(false) > new MyStringObject(false)", false, new MyStringObject(false) > new MyStringObject(false) );
+
+ array[item++] = Assert.expectEq( "Number.NaN > Number.NaN", false, Number.NaN > Number.NaN );
+ array[item++] = Assert.expectEq( "0 > Number.NaN", false, 0 > Number.NaN );
+ array[item++] = Assert.expectEq( "Number.NaN > 0", false, Number.NaN > 0 );
+
+ array[item++] = Assert.expectEq( "0 > -0", false, 0 > -0 );
+ array[item++] = Assert.expectEq( "-0 > 0", false, -0 > 0 );
+
+ array[item++] = Assert.expectEq( "Infinity > 0", true, Number.POSITIVE_INFINITY > 0 );
+ array[item++] = Assert.expectEq( "Infinity > Number.MAX_VALUE", true, Number.POSITIVE_INFINITY > Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "Infinity > Infinity", false, Number.POSITIVE_INFINITY > Number.POSITIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "0 > Infinity", false, 0 > Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE > Infinity", false, Number.MAX_VALUE > Number.POSITIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "0 > -Infinity", true, 0 > Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE > -Infinity", true, Number.MAX_VALUE > Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-Infinity > -Infinity", false, Number.NEGATIVE_INFINITY > Number.NEGATIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "-Infinity > 0", false, Number.NEGATIVE_INFINITY > 0 );
+ array[item++] = Assert.expectEq( "-Infinity > -Number.MAX_VALUE", false, Number.NEGATIVE_INFINITY > -Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "-Infinity > Number.MIN_VALUE", false, Number.NEGATIVE_INFINITY > Number.MIN_VALUE );
+
+ array[item++] = Assert.expectEq( "'string' > 'string'", false, 'string' > 'string' );
+ array[item++] = Assert.expectEq( "'astring' > 'string'", false, 'astring' > 'string' );
+ array[item++] = Assert.expectEq( "'strings' > 'stringy'", false, 'strings' > 'stringy' );
+ array[item++] = Assert.expectEq( "'strings' > 'stringier'", true, 'strings' > 'stringier' );
+ array[item++] = Assert.expectEq( "'string' > 'astring'", true, 'string' > 'astring' );
+ array[item++] = Assert.expectEq( "'string' > 'strings'", false, 'string' > 'strings' );
+ array[item++] = Assert.expectEq( "'string' > 'str'", true, 'string' > 'str' );
+
+ array[item++] = Assert.expectEq( "44 > 55", false, 44 > 55 );
+ array[item++] = Assert.expectEq( "55 > 44", true, 55 > 44 );
+ array[item++] = Assert.expectEq( "56.43 > 65.0", false, 56.43 > 65.0 );
+ array[item++] = Assert.expectEq( "65.0 > 56.43", true, 65.0 > 56.43 );
+ array[item++] = Assert.expectEq( "43247503.43 > 945540654.654", false, 43247503.43 > 945540654.654 );
+ array[item++] = Assert.expectEq( "43247503.43>945540654.654", false, 43247503.43>945540654.654 );
+ array[item++] = Assert.expectEq( "43247503.43> 945540654.654", false, 43247503.43> 945540654.654 );
+ array[item++] = Assert.expectEq( "43247503.43 > 945540654.654", false, 43247503.43 > 945540654.654 );
+ array[item++] = Assert.expectEq( "-56.43 > 65.0", false, -56.43 > 65.0 );
+ array[item++] = Assert.expectEq( "-56.43 > -65.0", true, -56.43 > -65.0 );
+ array[item++] = Assert.expectEq( "-56.43 > -56.43", false, -56.43 > -56.43 );
+ array[item++] = Assert.expectEq( "100 > 100", false, 100 > 100 );
+
+
+ return ( array );
+}
+function MyObject(value) {
+ this.value = value;
+ //this.valueOf = new Function( "return this.value" );
+ //this.toString = new Function( "return this.value +''" );
+ this.valueOf = function(){return this.value};
+ this.toString = function(){return this.value +''};
+}
+function MyValueObject(value) {
+ this.value = value;
+ //this.valueOf = new Function( "return this.value" );
+ this.valueOf = function(){return this.value};
+}
+function MyStringObject(value) {
+ this.value = value;
+ //this.toString = new Function( "return this.value +''" );
+ this.toString = function(){return this.value +''};
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_2/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_2/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_2/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_2/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_2/output.txt
new file mode 100644
index 000000000..d10f00b58
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_2/output.txt
@@ -0,0 +1,52 @@
+true > false PASSED!
+false > true PASSED!
+false > false PASSED!
+true > true PASSED!
+new Boolean(true) > new Boolean(true) PASSED!
+new Boolean(true) > new Boolean(false) PASSED!
+new Boolean(false) > new Boolean(true) PASSED!
+new Boolean(false) > new Boolean(false) PASSED!
+new MyObject(Infinity) > new MyObject(Infinity) PASSED!
+new MyObject(-Infinity) > new MyObject(Infinity) PASSED!
+new MyObject(-Infinity) > new MyObject(-Infinity) PASSED!
+new MyValueObject(false) > new MyValueObject(true) PASSED!
+new MyValueObject(true) > new MyValueObject(true) PASSED!
+new MyValueObject(false) > new MyValueObject(false) PASSED!
+new MyStringObject(false) > new MyStringObject(true) PASSED!
+new MyStringObject(true) > new MyStringObject(true) PASSED!
+new MyStringObject(false) > new MyStringObject(false) PASSED!
+Number.NaN > Number.NaN PASSED!
+0 > Number.NaN PASSED!
+Number.NaN > 0 PASSED!
+0 > -0 PASSED!
+-0 > 0 PASSED!
+Infinity > 0 PASSED!
+Infinity > Number.MAX_VALUE PASSED!
+Infinity > Infinity PASSED!
+0 > Infinity PASSED!
+Number.MAX_VALUE > Infinity PASSED!
+0 > -Infinity PASSED!
+Number.MAX_VALUE > -Infinity PASSED!
+-Infinity > -Infinity PASSED!
+-Infinity > 0 PASSED!
+-Infinity > -Number.MAX_VALUE PASSED!
+-Infinity > Number.MIN_VALUE PASSED!
+'string' > 'string' PASSED!
+'astring' > 'string' PASSED!
+'strings' > 'stringy' PASSED!
+'strings' > 'stringier' PASSED!
+'string' > 'astring' PASSED!
+'string' > 'strings' PASSED!
+'string' > 'str' PASSED!
+44 > 55 PASSED!
+55 > 44 PASSED!
+56.43 > 65.0 PASSED!
+65.0 > 56.43 PASSED!
+43247503.43 > 945540654.654 PASSED!
+43247503.43>945540654.654 PASSED!
+43247503.43> 945540654.654 PASSED!
+43247503.43 > 945540654.654 PASSED!
+-56.43 > 65.0 PASSED!
+-56.43 > -65.0 PASSED!
+-56.43 > -56.43 PASSED!
+100 > 100 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_2/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_2/test.swf
new file mode 100644
index 000000000..b519b8151
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_2/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_2/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_2/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_2/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_3/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_3/Test.as
new file mode 100644
index 000000000..5310e351b
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_3/Test.as
@@ -0,0 +1,106 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_8_3";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ array[item++] = Assert.expectEq( "true <= false", false, true <= false );
+ array[item++] = Assert.expectEq( "false <= true", true, false <= true );
+ array[item++] = Assert.expectEq( "false <= false", true, false <= false );
+ array[item++] = Assert.expectEq( "true <= true", true, true <= true );
+
+ array[item++] = Assert.expectEq( "new Boolean(true) <= new Boolean(true)", true, new Boolean(true) <= new Boolean(true) );
+ array[item++] = Assert.expectEq( "new Boolean(true) <= new Boolean(false)", false, new Boolean(true) <= new Boolean(false) );
+ array[item++] = Assert.expectEq( "new Boolean(false) <= new Boolean(true)", true, new Boolean(false) <= new Boolean(true) );
+ array[item++] = Assert.expectEq( "new Boolean(false) <= new Boolean(false)", true, new Boolean(false) <= new Boolean(false) );
+
+ array[item++] = Assert.expectEq( "new MyObject(Infinity) <= new MyObject(Infinity)", true, new MyObject( Number.POSITIVE_INFINITY ) <= new MyObject( Number.POSITIVE_INFINITY) );
+ array[item++] = Assert.expectEq( "new MyObject(-Infinity) <= new MyObject(Infinity)", true, new MyObject( Number.NEGATIVE_INFINITY ) <= new MyObject( Number.POSITIVE_INFINITY) );
+ array[item++] = Assert.expectEq( "new MyObject(-Infinity) <= new MyObject(-Infinity)", true, new MyObject( Number.NEGATIVE_INFINITY ) <= new MyObject( Number.NEGATIVE_INFINITY) );
+
+ array[item++] = Assert.expectEq( "new MyValueObject(false) <= new MyValueObject(true)", true, new MyValueObject(false) <= new MyValueObject(true) );
+ array[item++] = Assert.expectEq( "new MyValueObject(true) <= new MyValueObject(true)", true, new MyValueObject(true) <= new MyValueObject(true) );
+ array[item++] = Assert.expectEq( "new MyValueObject(false) <= new MyValueObject(false)", true, new MyValueObject(false) <= new MyValueObject(false) );
+
+ array[item++] = Assert.expectEq( "new MyStringObject(false) <= new MyStringObject(true)", true, new MyStringObject(false) <= new MyStringObject(true) );
+ array[item++] = Assert.expectEq( "new MyStringObject(true) <= new MyStringObject(true)", true, new MyStringObject(true) <= new MyStringObject(true) );
+ array[item++] = Assert.expectEq( "new MyStringObject(false) <= new MyStringObject(false)", true, new MyStringObject(false) <= new MyStringObject(false) );
+
+ array[item++] = Assert.expectEq( "Number.NaN <= Number.NaN", false, Number.NaN <= Number.NaN );
+ array[item++] = Assert.expectEq( "0 <= Number.NaN", false, 0 <= Number.NaN );
+ array[item++] = Assert.expectEq( "Number.NaN <= 0", false, Number.NaN <= 0 );
+
+ array[item++] = Assert.expectEq( "0 <= -0", true, 0 <= -0 );
+ array[item++] = Assert.expectEq( "-0 <= 0", true, -0 <= 0 );
+
+ array[item++] = Assert.expectEq( "Infinity <= 0", false, Number.POSITIVE_INFINITY <= 0 );
+ array[item++] = Assert.expectEq( "Infinity <= Number.MAX_VALUE", false, Number.POSITIVE_INFINITY <= Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "Infinity <= Infinity", true, Number.POSITIVE_INFINITY <= Number.POSITIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "0 <= Infinity", true, 0 <= Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE <= Infinity", true, Number.MAX_VALUE <= Number.POSITIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "0 <= -Infinity", false, 0 <= Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE <= -Infinity", false, Number.MAX_VALUE <= Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-Infinity <= -Infinity", true, Number.NEGATIVE_INFINITY <= Number.NEGATIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "-Infinity <= 0", true, Number.NEGATIVE_INFINITY <= 0 );
+ array[item++] = Assert.expectEq( "-Infinity <= -Number.MAX_VALUE", true, Number.NEGATIVE_INFINITY <= -Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "-Infinity <= Number.MIN_VALUE", true, Number.NEGATIVE_INFINITY <= Number.MIN_VALUE );
+
+ array[item++] = Assert.expectEq( "'string' <= 'string'", true, 'string' <= 'string' );
+ array[item++] = Assert.expectEq( "'astring' <= 'string'", true, 'astring' <= 'string' );
+ array[item++] = Assert.expectEq( "'strings' <= 'stringy'", true, 'strings' <= 'stringy' );
+ array[item++] = Assert.expectEq( "'strings' <= 'stringier'", false, 'strings' <= 'stringier' );
+ array[item++] = Assert.expectEq( "'string' <= 'astring'", false, 'string' <= 'astring' );
+ array[item++] = Assert.expectEq( "'string' <= 'strings'", true, 'string' <= 'strings' );
+ array[item++] = Assert.expectEq( "'string' <= 'str'", false, 'string' <= 'str' );
+
+ array[item++] = Assert.expectEq( "'string' <= undefined", false, 'string' <= undefined );
+ array[item++] = Assert.expectEq( "undefined <= 'string'", false, undefined <= 'string' );
+ array[item++] = Assert.expectEq( "6.9 <= undefined", false, 6.9 <= undefined );
+ array[item++] = Assert.expectEq( "undefined <= 343", false, undefined <= 343);
+
+ array[item++] = Assert.expectEq( "44 <= 55", true, 44 <= 55 );
+ array[item++] = Assert.expectEq( "55 <= 44", false, 55 <= 44 );
+ array[item++] = Assert.expectEq( "56.43 <= 65.0", true, 56.43 <= 65.0 );
+ array[item++] = Assert.expectEq( "65.0 <= 56.43", false, 65.0 <= 56.43 );
+ array[item++] = Assert.expectEq( "43247503.43 <= 945540654.654", true, 43247503.43 <= 945540654.654 );
+ array[item++] = Assert.expectEq( "43247503.43<=945540654.654", true, 43247503.43<=945540654.654 );
+ array[item++] = Assert.expectEq( "43247503.43<= 945540654.654", true, 43247503.43<= 945540654.654 );
+ array[item++] = Assert.expectEq( "43247503.43 <= 945540654.654", true, 43247503.43 <= 945540654.654 );
+ array[item++] = Assert.expectEq( "-56.43 <= 65.0", true, -56.43 <= 65.0 );
+ array[item++] = Assert.expectEq( "-56.43 <= -65.0", false, -56.43 <= -65.0 );
+ array[item++] = Assert.expectEq( "100 <= 100", true, 100 <= 100 );
+ array[item++] = Assert.expectEq( "-56.43 <= -56.43", true, -56.43 <= -56.43 );
+
+ return ( array );
+}
+function MyObject(value) {
+ this.value = value;
+ //this.valueOf = new Function( "return this.value" );
+ //this.toString = new Function( "return this.value +''" );
+ this.valueOf = function(){return this.value};
+ this.toString = function(){return this.value+''};
+}
+function MyValueObject(value) {
+ this.value = value;
+// this.valueOf = new Function( "return this.value" );
+ this.valueOf = function(){return this.value};
+}
+function MyStringObject(value) {
+ this.value = value;
+// this.toString = new Function( "return this.value +''" );
+ this.toString = function(){return this.value+''};
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_3/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_3/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_3/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_3/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_3/output.txt
new file mode 100644
index 000000000..d2d0ade89
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_3/output.txt
@@ -0,0 +1,56 @@
+true <= false PASSED!
+false <= true PASSED!
+false <= false PASSED!
+true <= true PASSED!
+new Boolean(true) <= new Boolean(true) PASSED!
+new Boolean(true) <= new Boolean(false) PASSED!
+new Boolean(false) <= new Boolean(true) PASSED!
+new Boolean(false) <= new Boolean(false) PASSED!
+new MyObject(Infinity) <= new MyObject(Infinity) PASSED!
+new MyObject(-Infinity) <= new MyObject(Infinity) PASSED!
+new MyObject(-Infinity) <= new MyObject(-Infinity) PASSED!
+new MyValueObject(false) <= new MyValueObject(true) PASSED!
+new MyValueObject(true) <= new MyValueObject(true) PASSED!
+new MyValueObject(false) <= new MyValueObject(false) PASSED!
+new MyStringObject(false) <= new MyStringObject(true) PASSED!
+new MyStringObject(true) <= new MyStringObject(true) PASSED!
+new MyStringObject(false) <= new MyStringObject(false) PASSED!
+Number.NaN <= Number.NaN PASSED!
+0 <= Number.NaN PASSED!
+Number.NaN <= 0 PASSED!
+0 <= -0 PASSED!
+-0 <= 0 PASSED!
+Infinity <= 0 PASSED!
+Infinity <= Number.MAX_VALUE PASSED!
+Infinity <= Infinity PASSED!
+0 <= Infinity PASSED!
+Number.MAX_VALUE <= Infinity PASSED!
+0 <= -Infinity PASSED!
+Number.MAX_VALUE <= -Infinity PASSED!
+-Infinity <= -Infinity PASSED!
+-Infinity <= 0 PASSED!
+-Infinity <= -Number.MAX_VALUE PASSED!
+-Infinity <= Number.MIN_VALUE PASSED!
+'string' <= 'string' PASSED!
+'astring' <= 'string' PASSED!
+'strings' <= 'stringy' PASSED!
+'strings' <= 'stringier' PASSED!
+'string' <= 'astring' PASSED!
+'string' <= 'strings' PASSED!
+'string' <= 'str' PASSED!
+'string' <= undefined PASSED!
+undefined <= 'string' PASSED!
+6.9 <= undefined PASSED!
+undefined <= 343 PASSED!
+44 <= 55 PASSED!
+55 <= 44 PASSED!
+56.43 <= 65.0 PASSED!
+65.0 <= 56.43 PASSED!
+43247503.43 <= 945540654.654 PASSED!
+43247503.43<=945540654.654 PASSED!
+43247503.43<= 945540654.654 PASSED!
+43247503.43 <= 945540654.654 PASSED!
+-56.43 <= 65.0 PASSED!
+-56.43 <= -65.0 PASSED!
+100 <= 100 PASSED!
+-56.43 <= -56.43 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_3/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_3/test.swf
new file mode 100644
index 000000000..259004eda
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_3/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_3/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_3/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_3/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_4/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_4/Test.as
new file mode 100644
index 000000000..03ca06a11
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_4/Test.as
@@ -0,0 +1,107 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "e11_8_4";
+// var VERSION = "ECMA_1";
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ array[item++] = Assert.expectEq( "true >= false", true, true >= false );
+ array[item++] = Assert.expectEq( "false >= true", false, false >= true );
+ array[item++] = Assert.expectEq( "false >= false", true, false >= false );
+ array[item++] = Assert.expectEq( "true >= true", true, true >= true );
+
+ array[item++] = Assert.expectEq( "new Boolean(true) >= new Boolean(true)", true, new Boolean(true) >= new Boolean(true) );
+ array[item++] = Assert.expectEq( "new Boolean(true) >= new Boolean(false)", true, new Boolean(true) >= new Boolean(false) );
+ array[item++] = Assert.expectEq( "new Boolean(false) >= new Boolean(true)", false, new Boolean(false) >= new Boolean(true) );
+ array[item++] = Assert.expectEq( "new Boolean(false) >= new Boolean(false)", true, new Boolean(false) >= new Boolean(false) );
+
+ array[item++] = Assert.expectEq( "new MyObject(Infinity) >= new MyObject(Infinity)", true, new MyObject( Number.POSITIVE_INFINITY ) >= new MyObject( Number.POSITIVE_INFINITY) );
+ array[item++] = Assert.expectEq( "new MyObject(-Infinity) >= new MyObject(Infinity)", false, new MyObject( Number.NEGATIVE_INFINITY ) >= new MyObject( Number.POSITIVE_INFINITY) );
+ array[item++] = Assert.expectEq( "new MyObject(-Infinity) >= new MyObject(-Infinity)", true, new MyObject( Number.NEGATIVE_INFINITY ) >= new MyObject( Number.NEGATIVE_INFINITY) );
+
+ array[item++] = Assert.expectEq( "new MyValueObject(false) >= new MyValueObject(true)", false, new MyValueObject(false) >= new MyValueObject(true) );
+ array[item++] = Assert.expectEq( "new MyValueObject(true) >= new MyValueObject(true)", true, new MyValueObject(true) >= new MyValueObject(true) );
+ array[item++] = Assert.expectEq( "new MyValueObject(false) >= new MyValueObject(false)", true, new MyValueObject(false) >= new MyValueObject(false) );
+
+ array[item++] = Assert.expectEq( "new MyStringObject(false) >= new MyStringObject(true)", false, new MyStringObject(false) >= new MyStringObject(true) );
+ array[item++] = Assert.expectEq( "new MyStringObject(true) >= new MyStringObject(true)", true, new MyStringObject(true) >= new MyStringObject(true) );
+ array[item++] = Assert.expectEq( "new MyStringObject(false) >= new MyStringObject(false)", true, new MyStringObject(false) >= new MyStringObject(false) );
+
+ array[item++] = Assert.expectEq( "Number.NaN >= Number.NaN", false, Number.NaN >= Number.NaN );
+ array[item++] = Assert.expectEq( "0 >= Number.NaN", false, 0 >= Number.NaN );
+ array[item++] = Assert.expectEq( "Number.NaN >= 0", false, Number.NaN >= 0 );
+
+ array[item++] = Assert.expectEq( "0 >= -0", true, 0 >= -0 );
+ array[item++] = Assert.expectEq( "-0 >= 0", true, -0 >= 0 );
+
+ array[item++] = Assert.expectEq( "Infinity >= 0", true, Number.POSITIVE_INFINITY >= 0 );
+ array[item++] = Assert.expectEq( "Infinity >= Number.MAX_VALUE", true, Number.POSITIVE_INFINITY >= Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "Infinity >= Infinity", true, Number.POSITIVE_INFINITY >= Number.POSITIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "0 >= Infinity", false, 0 >= Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE >= Infinity", false, Number.MAX_VALUE >= Number.POSITIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "0 >= -Infinity", true, 0 >= Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE >= -Infinity", true, Number.MAX_VALUE >= Number.NEGATIVE_INFINITY );
+ array[item++] = Assert.expectEq( "-Infinity >= -Infinity", true, Number.NEGATIVE_INFINITY >= Number.NEGATIVE_INFINITY );
+
+ array[item++] = Assert.expectEq( "-Infinity >= 0", false, Number.NEGATIVE_INFINITY >= 0 );
+ array[item++] = Assert.expectEq( "-Infinity >= -Number.MAX_VALUE", false, Number.NEGATIVE_INFINITY >= -Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "-Infinity >= Number.MIN_VALUE", false, Number.NEGATIVE_INFINITY >= Number.MIN_VALUE );
+
+ array[item++] = Assert.expectEq( "'string' >= 'string'", true, 'string' >= 'string' );
+ array[item++] = Assert.expectEq( "'astring' >= 'string'", false, 'astring' >= 'string' );
+ array[item++] = Assert.expectEq( "'strings' >= 'stringy'", false, 'strings' >= 'stringy' );
+ array[item++] = Assert.expectEq( "'strings' >= 'stringier'", true, 'strings' >= 'stringier' );
+ array[item++] = Assert.expectEq( "'string' >= 'astring'", true, 'string' >= 'astring' );
+ array[item++] = Assert.expectEq( "'string' >= 'strings'", false, 'string' >= 'strings' );
+ array[item++] = Assert.expectEq( "'string' >= 'str'", true, 'string' >= 'str' );
+
+ array[item++] = Assert.expectEq( "'string' >= undefined", false, 'string' >= undefined );
+ array[item++] = Assert.expectEq( "undefined >= 'string'", false, undefined >= 'string' );
+ array[item++] = Assert.expectEq( "6.9 >= undefined", false, 6.9 >= undefined );
+ array[item++] = Assert.expectEq( "undefined >= 343", false, undefined >= 343);
+
+ array[item++] = Assert.expectEq( "44 >= 55", false, 44 >= 55 );
+ array[item++] = Assert.expectEq( "55 >= 44", true, 55 >= 44 );
+ array[item++] = Assert.expectEq( "56.43 >= 65.0", false, 56.43 >= 65.0 );
+ array[item++] = Assert.expectEq( "65.0 >= 56.43", true, 65.0 >= 56.43 );
+ array[item++] = Assert.expectEq( "43247503.43 >= 945540654.654", false, 43247503.43 >= 945540654.654 );
+ array[item++] = Assert.expectEq( "43247503.43>=945540654.654", false, 43247503.43>=945540654.654 );
+ array[item++] = Assert.expectEq( "43247503.43>= 945540654.654", false, 43247503.43>= 945540654.654 );
+ array[item++] = Assert.expectEq( "43247503.43 >= 945540654.654", false, 43247503.43 >= 945540654.654 );
+ array[item++] = Assert.expectEq( "-56.43 >= 65.0", false, -56.43 >= 65.0 );
+ array[item++] = Assert.expectEq( "-56.43 >= -65.0", true, -56.43 >= -65.0 );
+ array[item++] = Assert.expectEq( "100 >= 100", true, 100 >= 100 );
+ array[item++] = Assert.expectEq( "-56.43 >= -56.43", true, -56.43 >= -56.43 );
+
+
+ return ( array );
+}
+function MyObject(value) {
+ this.value = value;
+ //this.valueOf = new Function( "return this.value" );
+ //this.toString = new Function( "return this.value +''" );
+ this.valueOf = function(){return this.value};
+ this.toString = function(){return this.value+''};
+}
+function MyValueObject(value) {
+ this.value = value;
+ //this.valueOf = new Function( "return this.value" );
+ this.valueOf = function(){return this.value};
+}
+function MyStringObject(value) {
+ this.value = value;
+ //this.toString = new Function( "return this.value +''" );
+ this.toString = function(){return this.value+''};
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_4/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_4/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_4/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_4/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_4/output.txt
new file mode 100644
index 000000000..ef9d61621
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_4/output.txt
@@ -0,0 +1,56 @@
+true >= false PASSED!
+false >= true PASSED!
+false >= false PASSED!
+true >= true PASSED!
+new Boolean(true) >= new Boolean(true) PASSED!
+new Boolean(true) >= new Boolean(false) PASSED!
+new Boolean(false) >= new Boolean(true) PASSED!
+new Boolean(false) >= new Boolean(false) PASSED!
+new MyObject(Infinity) >= new MyObject(Infinity) PASSED!
+new MyObject(-Infinity) >= new MyObject(Infinity) PASSED!
+new MyObject(-Infinity) >= new MyObject(-Infinity) PASSED!
+new MyValueObject(false) >= new MyValueObject(true) PASSED!
+new MyValueObject(true) >= new MyValueObject(true) PASSED!
+new MyValueObject(false) >= new MyValueObject(false) PASSED!
+new MyStringObject(false) >= new MyStringObject(true) PASSED!
+new MyStringObject(true) >= new MyStringObject(true) PASSED!
+new MyStringObject(false) >= new MyStringObject(false) PASSED!
+Number.NaN >= Number.NaN PASSED!
+0 >= Number.NaN PASSED!
+Number.NaN >= 0 PASSED!
+0 >= -0 PASSED!
+-0 >= 0 PASSED!
+Infinity >= 0 PASSED!
+Infinity >= Number.MAX_VALUE PASSED!
+Infinity >= Infinity PASSED!
+0 >= Infinity PASSED!
+Number.MAX_VALUE >= Infinity PASSED!
+0 >= -Infinity PASSED!
+Number.MAX_VALUE >= -Infinity PASSED!
+-Infinity >= -Infinity PASSED!
+-Infinity >= 0 PASSED!
+-Infinity >= -Number.MAX_VALUE PASSED!
+-Infinity >= Number.MIN_VALUE PASSED!
+'string' >= 'string' PASSED!
+'astring' >= 'string' PASSED!
+'strings' >= 'stringy' PASSED!
+'strings' >= 'stringier' PASSED!
+'string' >= 'astring' PASSED!
+'string' >= 'strings' PASSED!
+'string' >= 'str' PASSED!
+'string' >= undefined PASSED!
+undefined >= 'string' PASSED!
+6.9 >= undefined PASSED!
+undefined >= 343 PASSED!
+44 >= 55 PASSED!
+55 >= 44 PASSED!
+56.43 >= 65.0 PASSED!
+65.0 >= 56.43 PASSED!
+43247503.43 >= 945540654.654 PASSED!
+43247503.43>=945540654.654 PASSED!
+43247503.43>= 945540654.654 PASSED!
+43247503.43 >= 945540654.654 PASSED!
+-56.43 >= 65.0 PASSED!
+-56.43 >= -65.0 PASSED!
+100 >= 100 PASSED!
+-56.43 >= -56.43 PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_4/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_4/test.swf
new file mode 100644
index 000000000..435489150
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_4/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_4/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_4/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_4/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_7/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_7/Test.as
new file mode 100644
index 000000000..946c17c10
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_7/Test.as
@@ -0,0 +1,216 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+
+// var SECTION = "11.8.7";
+// var VERSION = "ECMA_1";
+// var TITLE = "The in operator";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ var Array_One = new Array(0,1,2,3);
+
+
+
+ array[item++] = Assert.expectEq(
+ "0 in Array_One",
+ true,
+ 0 in Array_One);
+
+ array[item++] = Assert.expectEq(
+ "1 in Array_One",
+ true,
+ 1 in Array_One);
+
+ array[item++] = Assert.expectEq(
+ "2 in Array_One",
+ true,
+ 2 in Array_One);
+
+ array[item++] = Assert.expectEq(
+ "3 in Array_One",
+ true,
+ 3 in Array_One);
+
+
+
+ array[item++] = Assert.expectEq(
+ "4 in Array_One",
+ false,
+ 4 in Array_One);
+
+ var Array_Two = new Array('z','y','x','w');
+
+ array[item++] = Assert.expectEq(
+ "0 in Array_Two",
+ true,
+ 0 in Array_Two);
+
+ array[item++] = Assert.expectEq(
+ "1 in Array_Two",
+ true,
+ 1 in Array_Two);
+
+ array[item++] = Assert.expectEq(
+ "2 in Array_Two",
+ true,
+ 2 in Array_Two);
+
+ array[item++] = Assert.expectEq(
+ "3 in Array_Two",
+ true,
+ 3 in Array_Two);
+
+
+
+ array[item++] = Assert.expectEq(
+ "4 in Array_Two",
+ false,
+ 4 in Array_Two);
+
+ array[item++] = Assert.expectEq(
+ "a in Array_Two",
+ false,
+ 'a' in Array_Two);
+
+ array[item++] = Assert.expectEq(
+ "length in Array_Two",
+ true,
+ "length" in Array_Two);
+
+ var myobj = {obj1:"string1",obj2:"string2"}
+
+ array[item++] = Assert.expectEq(
+ "obj1 in myobj",
+ true,
+ "obj1" in myobj);
+
+ array[item++] = Assert.expectEq(
+ "obj2 in myobj",
+ true,
+ "obj2" in myobj);
+
+ function myfunc():String{
+ return "Hi!!!"}
+
+ MyObject2 = {MyNumber:10,MyString:'string',MyBoolean:true,myarr:[1,2,3],myfuncvar:myfunc}
+
+ array[item++] = Assert.expectEq(
+ "MyNumber in MyObject2",
+ true,
+ "MyNumber" in MyObject2);
+
+ array[item++] = Assert.expectEq(
+ "MyString in MyObject2",
+ true,
+ "MyString" in MyObject2);
+
+ array[item++] = Assert.expectEq(
+ "MyBoolean in MyObject2",
+ true,
+ "MyBoolean" in MyObject2);
+
+
+
+ array[item++] = Assert.expectEq(
+ "myarr in MyObject2",
+ true,
+ "myarr" in MyObject2);
+
+ array[item++] = Assert.expectEq(
+ "myfuncvar in MyObject2",
+ true,
+ "myfuncvar" in MyObject2);
+
+
+ var mystring1 = new String("string1");
+
+ array[item++] = Assert.expectEq(
+ "length in mystring1",
+ true,
+ "length" in mystring1);
+
+ var mystring2 = "string2";
+
+
+ array[item++] = Assert.expectEq(
+ "length in mystring2",
+ true,
+ "length" in mystring2);
+
+ MyObject3 = {MyNumber1:10,MyString1:'string',MyBoolean1:true,myarr1:[1,2,3],myfuncvar1:myfunc}
+
+ delete MyObject3.MyNumber1;
+
+
+ array[item++] = Assert.expectEq(
+ "MyNumber1 in MyObject3",
+ false,
+ "MyNumber1" in MyObject3);
+
+
+ delete MyObject3.myfuncvar1;
+
+ array[item++] = Assert.expectEq(
+ "myfuncvar1 in MyObject3",
+ false,
+ "myfuncvar1" in MyObject3);
+
+ MyObject3.MyNumber1 = undefined;
+
+ array[item++] = Assert.expectEq(
+ "MyNumber1 in MyObject3",
+ true,
+ "MyNumber1" in MyObject3);
+
+ myarr3 = [0,1,2,3];
+
+ delete myarr3[3];
+
+ array[item++] = Assert.expectEq(
+ "3 in myarr3",
+ false,
+ 3 in myarr3);
+
+ myarr3[3] = undefined;
+
+ array[item++] = Assert.expectEq(
+ "3 in myarr3",
+ true,
+ 3 in myarr3);
+
+
+
+ array[item++] = Assert.expectEq(
+ "PI in Math",
+ true,
+ "PI" in Math);
+
+ array[item++] = Assert.expectEq(
+ "myproperty in Math",
+ false,
+ "myproperty" in Math);
+
+ array[item++] = Assert.expectEq(
+ "myproperty in Object",
+ false,
+ "myproperty" in Object)
+
+
+
+
+
+
+ return ( array );
+}
+
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_7/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_7/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_7/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_7/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_7/output.txt
new file mode 100644
index 000000000..d8bbf3637
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_7/output.txt
@@ -0,0 +1,29 @@
+0 in Array_One PASSED!
+1 in Array_One PASSED!
+2 in Array_One PASSED!
+3 in Array_One PASSED!
+4 in Array_One PASSED!
+0 in Array_Two PASSED!
+1 in Array_Two PASSED!
+2 in Array_Two PASSED!
+3 in Array_Two PASSED!
+4 in Array_Two PASSED!
+a in Array_Two PASSED!
+length in Array_Two PASSED!
+obj1 in myobj PASSED!
+obj2 in myobj PASSED!
+MyNumber in MyObject2 PASSED!
+MyString in MyObject2 PASSED!
+MyBoolean in MyObject2 PASSED!
+myarr in MyObject2 PASSED!
+myfuncvar in MyObject2 PASSED!
+length in mystring1 PASSED!
+length in mystring2 PASSED!
+MyNumber1 in MyObject3 PASSED!
+myfuncvar1 in MyObject3 PASSED!
+MyNumber1 in MyObject3 PASSED!
+3 in myarr3 PASSED!
+3 in myarr3 PASSED!
+PI in Math PASSED!
+myproperty in Math PASSED!
+myproperty in Object PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_7/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_7/test.swf
new file mode 100644
index 000000000..7e8de8477
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_7/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_7/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_7/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_8_7/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_1/Test.as
new file mode 100644
index 000000000..e7e2f12ed
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_1/Test.as
@@ -0,0 +1,120 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11.9.1";
+// var VERSION = "ECMA_1";
+ var BUGNUMBER="77391";
+
+
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // type x and type y are the same. if type x is undefined or null, return true
+
+ array[item++] = Assert.expectEq( "void 0 = void 0", true, void 0 == void 0 );
+ array[item++] = Assert.expectEq( "null == null", true, null == null );
+
+ // if x is NaN, return false. if y is NaN, return false.
+
+ array[item++] = Assert.expectEq( "NaN == NaN", false, Number.NaN == Number.NaN );
+ array[item++] = Assert.expectEq( "NaN == 0", false, Number.NaN == 0 );
+ array[item++] = Assert.expectEq( "0 == NaN", false, 0 == Number.NaN );
+ array[item++] = Assert.expectEq( "NaN == Infinity", false, Number.NaN == Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Infinity == NaN", false, Number.POSITIVE_INFINITY == Number.NaN );
+
+ // if x is the same number value as y, return true.
+
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE == Number.MAX_VALUE", true, Number.MAX_VALUE == Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "Number.MIN_VALUE == Number.MIN_VALUE", true, Number.MIN_VALUE == Number.MIN_VALUE );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY == Number.POSITIVE_INFINITY", true, Number.POSITIVE_INFINITY == Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY == Number.NEGATIVE_INFINITY", true, Number.NEGATIVE_INFINITY == Number.NEGATIVE_INFINITY );
+
+ // if xis 0 and y is -0, return true. if x is -0 and y is 0, return true.
+
+ array[item++] = Assert.expectEq( "0 == 0", true, 0 == 0 );
+ array[item++] = Assert.expectEq( "0 == -0", true, 0 == -0 );
+ array[item++] = Assert.expectEq( "-0 == 0", true, -0 == 0 );
+ array[item++] = Assert.expectEq( "-0 == -0", true, -0 == -0 );
+
+ // return false.
+
+ array[item++] = Assert.expectEq( "0.9 == 1", false, 0.9 == 1 );
+ array[item++] = Assert.expectEq( "0.999999 == 1", false, 0.999999 == 1 );
+ array[item++] = Assert.expectEq( "0.9999999999 == 1", false, 0.9999999999 == 1 );
+ array[item++] = Assert.expectEq( "0.9999999999999 == 1", false, 0.9999999999999 == 1 );
+
+ // type x and type y are the same type, but not numbers.
+
+
+ // x and y are strings. return true if x and y are exactly the same sequence of characters.
+ // otherwise, return false.
+
+ array[item++] = Assert.expectEq( "'hello' == 'hello'", true, "hello" == "hello" );
+
+ // x and y are booleans. return true if both are true or both are false.
+
+ array[item++] = Assert.expectEq( "true == true", true, true == true );
+ array[item++] = Assert.expectEq( "false == false", true, false == false );
+ array[item++] = Assert.expectEq( "true == false", false, true == false );
+ array[item++] = Assert.expectEq( "false == true", false, false == true );
+
+ // return true if x and y refer to the same object. otherwise return false.
+
+ array[item++] = Assert.expectEq( "new MyObject(true) == new MyObject(true)", false, new MyObject(true) == new MyObject(true) );
+ array[item++] = Assert.expectEq( "new Boolean(true) == new Boolean(true)", true, new Boolean(true) == new Boolean(true) );
+ array[item++] = Assert.expectEq( "new Boolean(false) == new Boolean(false)", true, new Boolean(false) == new Boolean(false) );
+
+ x = new MyObject(true); y = x; z = x;
+ array[item++] = Assert.expectEq( "x = new MyObject(true); y = x; z = x; z == y", true, z == y );
+ x = new MyObject(false); y = x; z = x;
+ array[item++] = Assert.expectEq( "x = new MyObject(false); y = x; z = x; z == y", true, z == y );
+ x = new Boolean(true); y = x; z = x;
+ array[item++] = Assert.expectEq( "x = new Boolean(true); y = x; z = x; z == y", true, z == y );
+ x = new Boolean(false); y = x; z = x;
+ array[item++] = Assert.expectEq( "x = new Boolean(false); y = x; z = x; z == y", true, z == y );
+
+ array[item++] = Assert.expectEq( "new Boolean(true) == new Boolean(true)", true, new Boolean(true) == new Boolean(true) );
+ array[item++] = Assert.expectEq( "new Boolean(false) == new Boolean(false)", true, new Boolean(false) == new Boolean(false) );
+
+ // if x is null and y is undefined, return true. if x is undefined and y is null return true.
+
+ array[item++] = Assert.expectEq( "null == void 0", true, null == void 0 );
+ array[item++] = Assert.expectEq( "void 0 == null", true, void 0 == null );
+
+ // if type(x) is Number and type(y) is string, return the result of the comparison x == ToNumber(y).
+
+ array[item++] = Assert.expectEq( "1 == '1'", true, 1 == '1' );
+ array[item++] = Assert.expectEq( "255 == '0xff'", true, 255 == '0xff' );
+ array[item++] = Assert.expectEq( "0 == '\\r'", true, 0 == "\r" );
+ array[item++] = Assert.expectEq( "1e19 == '1e19'", true, 1e19 == "1e19" );
+
+
+ array[item++] = Assert.expectEq( "new Boolean(true) == true", true, true == new Boolean(true) );
+ array[item++] = Assert.expectEq( "new MyObject(true) == true", true, true == new MyObject(true) );
+
+ array[item++] = Assert.expectEq( "new Boolean(false) == false", true, new Boolean(false) == false );
+ array[item++] = Assert.expectEq( "new MyObject(false) == false", true, new MyObject(false) == false );
+
+ array[item++] = Assert.expectEq( "true == new Boolean(true)", true, true == new Boolean(true) );
+ array[item++] = Assert.expectEq( "true == new MyObject(true)", true, true == new MyObject(true) );
+
+ array[item++] = Assert.expectEq( "false == new Boolean(false)", true, false == new Boolean(false) );
+ array[item++] = Assert.expectEq( "false == new MyObject(false)", true, false == new MyObject(false) );
+
+ return ( array );
+}
+
+function MyObject( value ) {
+ this.value = value;
+ //this.valueOf = new Function( "return this.value" );
+ this.valueOf = function(){return this.value};
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_1/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_1/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_1/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_1/output.txt
new file mode 100644
index 000000000..c3dee373b
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_1/output.txt
@@ -0,0 +1,47 @@
+void 0 = void 0 PASSED!
+null == null PASSED!
+NaN == NaN PASSED!
+NaN == 0 PASSED!
+0 == NaN PASSED!
+NaN == Infinity PASSED!
+Infinity == NaN PASSED!
+Number.MAX_VALUE == Number.MAX_VALUE PASSED!
+Number.MIN_VALUE == Number.MIN_VALUE PASSED!
+Number.POSITIVE_INFINITY == Number.POSITIVE_INFINITY PASSED!
+Number.NEGATIVE_INFINITY == Number.NEGATIVE_INFINITY PASSED!
+0 == 0 PASSED!
+0 == -0 PASSED!
+-0 == 0 PASSED!
+-0 == -0 PASSED!
+0.9 == 1 PASSED!
+0.999999 == 1 PASSED!
+0.9999999999 == 1 PASSED!
+0.9999999999999 == 1 PASSED!
+'hello' == 'hello' PASSED!
+true == true PASSED!
+false == false PASSED!
+true == false PASSED!
+false == true PASSED!
+new MyObject(true) == new MyObject(true) PASSED!
+new Boolean(true) == new Boolean(true) PASSED!
+new Boolean(false) == new Boolean(false) PASSED!
+x = new MyObject(true); y = x; z = x; z == y PASSED!
+x = new MyObject(false); y = x; z = x; z == y PASSED!
+x = new Boolean(true); y = x; z = x; z == y PASSED!
+x = new Boolean(false); y = x; z = x; z == y PASSED!
+new Boolean(true) == new Boolean(true) PASSED!
+new Boolean(false) == new Boolean(false) PASSED!
+null == void 0 PASSED!
+void 0 == null PASSED!
+1 == '1' PASSED!
+255 == '0xff' PASSED!
+0 == '\r' PASSED!
+1e19 == '1e19' PASSED!
+new Boolean(true) == true PASSED!
+new MyObject(true) == true PASSED!
+new Boolean(false) == false PASSED!
+new MyObject(false) == false PASSED!
+true == new Boolean(true) PASSED!
+true == new MyObject(true) PASSED!
+false == new Boolean(false) PASSED!
+false == new MyObject(false) PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_1/test.swf
new file mode 100644
index 000000000..b38fcea78
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_1/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_1/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_2/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_2/Test.as
new file mode 100644
index 000000000..2f7e6a21d
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_2/Test.as
@@ -0,0 +1,119 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11.9.2";
+// var VERSION = "ECMA_1";
+ var BUGNUMBER="77391";
+
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // type x and type y are the same. if type x is undefined or null, return true
+
+ array[item++] = Assert.expectEq( "void 0 == void 0", false, void 0 != void 0 );
+ array[item++] = Assert.expectEq( "null == null", false, null != null );
+
+ // if x is NaN, return false. if y is NaN, return false.
+
+ array[item++] = Assert.expectEq( "NaN != NaN", true, Number.NaN != Number.NaN );
+ array[item++] = Assert.expectEq( "NaN != 0", true, Number.NaN != 0 );
+ array[item++] = Assert.expectEq( "0 != NaN", true, 0 != Number.NaN );
+ array[item++] = Assert.expectEq( "NaN != Infinity", true, Number.NaN != Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Infinity != NaN", true, Number.POSITIVE_INFINITY != Number.NaN );
+
+ // if x is the same number value as y, return true.
+
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE != Number.MAX_VALUE", false, Number.MAX_VALUE != Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "Number.MIN_VALUE != Number.MIN_VALUE", false, Number.MIN_VALUE != Number.MIN_VALUE );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY != Number.POSITIVE_INFINITY", false, Number.POSITIVE_INFINITY != Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY != Number.NEGATIVE_INFINITY", false, Number.NEGATIVE_INFINITY != Number.NEGATIVE_INFINITY );
+
+ // if xis 0 and y is -0, return true. if x is -0 and y is 0, return true.
+
+ array[item++] = Assert.expectEq( "0 != 0", false, 0 != 0 );
+ array[item++] = Assert.expectEq( "0 != -0", false, 0 != -0 );
+ array[item++] = Assert.expectEq( "-0 != 0", false, -0 != 0 );
+ array[item++] = Assert.expectEq( "-0 != -0", false, -0 != -0 );
+
+ // return false.
+
+ array[item++] = Assert.expectEq( "0.9 != 1", true, 0.9 != 1 );
+ array[item++] = Assert.expectEq( "0.999999 != 1", true, 0.999999 != 1 );
+ array[item++] = Assert.expectEq( "0.9999999999 != 1", true, 0.9999999999 != 1 );
+ array[item++] = Assert.expectEq( "0.9999999999999 != 1", true, 0.9999999999999 != 1 );
+
+ // type x and type y are the same type, but not numbers.
+
+
+ // x and y are strings. return true if x and y are exactly the same sequence of characters.
+ // otherwise, return false.
+
+ array[item++] = Assert.expectEq( "'hello' != 'hello'", false, "hello" != "hello" );
+
+ // x and y are booleans. return true if both are true or both are false.
+
+ array[item++] = Assert.expectEq( "true != true", false, true != true );
+ array[item++] = Assert.expectEq( "false != false", false, false != false );
+ array[item++] = Assert.expectEq( "true != false", true, true != false );
+ array[item++] = Assert.expectEq( "false != true", true, false != true );
+
+ // return true if x and y refer to the same object. otherwise return false.
+
+ array[item++] = Assert.expectEq( "new MyObject(true) != new MyObject(true)", true, new MyObject(true) != new MyObject(true) );
+ array[item++] = Assert.expectEq( "new Boolean(true) != new Boolean(true)", false, new Boolean(true) != new Boolean(true) );
+ array[item++] = Assert.expectEq( "new Boolean(false) != new Boolean(false)", false, new Boolean(false) != new Boolean(false) );
+
+ x = new MyObject(true); y = x; z = x;
+ array[item++] = Assert.expectEq( "x = new MyObject(true); y = x; z = x; z != y", false, z != y );
+ x = new MyObject(false); y = x; z = x;
+ array[item++] = Assert.expectEq( "x = new MyObject(false); y = x; z = x; z != y", false, z != y );
+ x = new Boolean(true); y = x; z = x;
+ array[item++] = Assert.expectEq( "x = new Boolean(true); y = x; z = x; z != y", false, z != y);
+ x = new Boolean(false); y = x; z = x;
+ array[item++] = Assert.expectEq( "x = new Boolean(false); y = x; z = x; z != y", false, z != y );
+
+ array[item++] = Assert.expectEq( "new Boolean(true) != new Boolean(true)", false, new Boolean(true) != new Boolean(true) );
+ array[item++] = Assert.expectEq( "new Boolean(false) != new Boolean(false)", false, new Boolean(false) != new Boolean(false) );
+
+ // if x is null and y is undefined, return true. if x is undefined and y is null return true.
+
+ array[item++] = Assert.expectEq( "null != void 0", false, null != void 0 );
+ array[item++] = Assert.expectEq( "void 0 != null", false, void 0 != null );
+
+ // if type(x) is Number and type(y) is string, return the result of the comparison x != ToNumber(y).
+
+ array[item++] = Assert.expectEq( "1 != '1'", false, 1 != '1' );
+ array[item++] = Assert.expectEq( "255 != '0xff'", false, 255 != '0xff' );
+ array[item++] = Assert.expectEq( "0 != '\\r'", false, 0 != "\r" );
+ array[item++] = Assert.expectEq( "1e19 != '1e19'", false, 1e19 != "1e19" );
+
+
+ array[item++] = Assert.expectEq( "new Boolean(true) != true", false, true != new Boolean(true) );
+ array[item++] = Assert.expectEq( "new MyObject(true) != true", false, true != new MyObject(true) );
+
+ array[item++] = Assert.expectEq( "new Boolean(false) != false", false, new Boolean(false) != false );
+ array[item++] = Assert.expectEq( "new MyObject(false) != false", false, new MyObject(false) != false );
+
+ array[item++] = Assert.expectEq( "true != new Boolean(true)", false, true != new Boolean(true) );
+ array[item++] = Assert.expectEq( "true != new MyObject(true)", false, true != new MyObject(true) );
+
+ array[item++] = Assert.expectEq( "false != new Boolean(false)", false, false != new Boolean(false) );
+ array[item++] = Assert.expectEq( "false != new MyObject(false)", false, false != new MyObject(false) );
+
+ return ( array );
+}
+
+function MyObject( value ) {
+ this.value = value;
+ //this.valueOf = new Function( "return this.value" );
+ this.valueOf = function(){return this.value};
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_2/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_2/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_2/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_2/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_2/output.txt
new file mode 100644
index 000000000..1062a6431
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_2/output.txt
@@ -0,0 +1,47 @@
+void 0 == void 0 PASSED!
+null == null PASSED!
+NaN != NaN PASSED!
+NaN != 0 PASSED!
+0 != NaN PASSED!
+NaN != Infinity PASSED!
+Infinity != NaN PASSED!
+Number.MAX_VALUE != Number.MAX_VALUE PASSED!
+Number.MIN_VALUE != Number.MIN_VALUE PASSED!
+Number.POSITIVE_INFINITY != Number.POSITIVE_INFINITY PASSED!
+Number.NEGATIVE_INFINITY != Number.NEGATIVE_INFINITY PASSED!
+0 != 0 PASSED!
+0 != -0 PASSED!
+-0 != 0 PASSED!
+-0 != -0 PASSED!
+0.9 != 1 PASSED!
+0.999999 != 1 PASSED!
+0.9999999999 != 1 PASSED!
+0.9999999999999 != 1 PASSED!
+'hello' != 'hello' PASSED!
+true != true PASSED!
+false != false PASSED!
+true != false PASSED!
+false != true PASSED!
+new MyObject(true) != new MyObject(true) PASSED!
+new Boolean(true) != new Boolean(true) PASSED!
+new Boolean(false) != new Boolean(false) PASSED!
+x = new MyObject(true); y = x; z = x; z != y PASSED!
+x = new MyObject(false); y = x; z = x; z != y PASSED!
+x = new Boolean(true); y = x; z = x; z != y PASSED!
+x = new Boolean(false); y = x; z = x; z != y PASSED!
+new Boolean(true) != new Boolean(true) PASSED!
+new Boolean(false) != new Boolean(false) PASSED!
+null != void 0 PASSED!
+void 0 != null PASSED!
+1 != '1' PASSED!
+255 != '0xff' PASSED!
+0 != '\r' PASSED!
+1e19 != '1e19' PASSED!
+new Boolean(true) != true PASSED!
+new MyObject(true) != true PASSED!
+new Boolean(false) != false PASSED!
+new MyObject(false) != false PASSED!
+true != new Boolean(true) PASSED!
+true != new MyObject(true) PASSED!
+false != new Boolean(false) PASSED!
+false != new MyObject(false) PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_2/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_2/test.swf
new file mode 100644
index 000000000..18c66e728
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_2/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_2/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_2/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_2/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_3/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_3/Test.as
new file mode 100644
index 000000000..94660d046
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_3/Test.as
@@ -0,0 +1,116 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "11.9.3";
+// var VERSION = "ECMA_1";
+ var BUGNUMBER="77391";
+
+ var testcases = getTestCases();
+
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ // type x and type y are the same. if type x is undefined or null, return true
+
+ array[item++] = Assert.expectEq( "void 0 = void 0", true, void 0 == void 0 );
+ array[item++] = Assert.expectEq( "null == null", true, null == null );
+
+ // if x is NaN, return false. if y is NaN, return false.
+
+ array[item++] = Assert.expectEq( "NaN == NaN", false, Number.NaN == Number.NaN );
+ array[item++] = Assert.expectEq( "NaN == 0", false, Number.NaN == 0 );
+ array[item++] = Assert.expectEq( "0 == NaN", false, 0 == Number.NaN );
+ array[item++] = Assert.expectEq( "NaN == Infinity", false, Number.NaN == Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Infinity == NaN", false, Number.POSITIVE_INFINITY == Number.NaN );
+
+ // if x is the same number value as y, return true.
+
+ array[item++] = Assert.expectEq( "Number.MAX_VALUE == Number.MAX_VALUE", true, Number.MAX_VALUE == Number.MAX_VALUE );
+ array[item++] = Assert.expectEq( "Number.MIN_VALUE == Number.MIN_VALUE", true, Number.MIN_VALUE == Number.MIN_VALUE );
+ array[item++] = Assert.expectEq( "Number.POSITIVE_INFINITY == Number.POSITIVE_INFINITY", true, Number.POSITIVE_INFINITY == Number.POSITIVE_INFINITY );
+ array[item++] = Assert.expectEq( "Number.NEGATIVE_INFINITY == Number.NEGATIVE_INFINITY", true, Number.NEGATIVE_INFINITY == Number.NEGATIVE_INFINITY );
+
+ // if xis 0 and y is -0, return true. if x is -0 and y is 0, return true.
+
+ array[item++] = Assert.expectEq( "0 == 0", true, 0 == 0 );
+ array[item++] = Assert.expectEq( "0 == -0", true, 0 == -0 );
+ array[item++] = Assert.expectEq( "-0 == 0", true, -0 == 0 );
+ array[item++] = Assert.expectEq( "-0 == -0", true, -0 == -0 );
+
+ // return false.
+
+ array[item++] = Assert.expectEq( "0.9 == 1", false, 0.9 == 1 );
+ array[item++] = Assert.expectEq( "0.999999 == 1", false, 0.999999 == 1 );
+ array[item++] = Assert.expectEq( "0.9999999999 == 1", false, 0.9999999999 == 1 );
+ array[item++] = Assert.expectEq( "0.9999999999999 == 1", false, 0.9999999999999 == 1 );
+
+ // type x and type y are the same type, but not numbers.
+
+
+ // x and y are strings. return true if x and y are exactly the same sequence of characters.
+ // otherwise, return false.
+
+ array[item++] = Assert.expectEq( "'hello' == 'hello'", true, "hello" == "hello" );
+
+ // x and y are booleans. return true if both are true or both are false.
+
+ array[item++] = Assert.expectEq( "true == true", true, true == true );
+ array[item++] = Assert.expectEq( "false == false", true, false == false );
+ array[item++] = Assert.expectEq( "true == false", false, true == false );
+ array[item++] = Assert.expectEq( "false == true", false, false == true );
+
+ // return true if x and y refer to the same object. otherwise return false.
+
+ array[item++] = Assert.expectEq( "new MyObject(true) == new MyObject(true)", false, new MyObject(true) == new MyObject(true) );
+ array[item++] = Assert.expectEq( "new Boolean(true) == new Boolean(true)", true, new Boolean(true) == new Boolean(true) );
+ array[item++] = Assert.expectEq( "new Boolean(false) == new Boolean(false)", true, new Boolean(false) == new Boolean(false) );
+
+ array[item++] = Assert.expectEq( "x = new MyObject(true); y = x; z = x; z == y", true, (x = new MyObject(true), y = x, z = x, z == y) );
+ array[item++] = Assert.expectEq( "x = new MyObject(false); y = x; z = x; z == y", true, (x = new MyObject(false), y = x, z = x, z == y) );
+ array[item++] = Assert.expectEq( "x = new Boolean(true); y = x; z = x; z == y", true, (x = new Boolean(true), y = x, z = x, z == y) );
+ array[item++] = Assert.expectEq( "x = new Boolean(false); y = x; z = x; z == y", true, (x = new Boolean(false), y = x, z = x, z == y) );
+
+ array[item++] = Assert.expectEq( "new Boolean(true) == new Boolean(true)", true, new Boolean(true) == new Boolean(true) );
+ array[item++] = Assert.expectEq( "new Boolean(false) == new Boolean(false)", true, new Boolean(false) == new Boolean(false) );
+
+ // if x is null and y is undefined, return true. if x is undefined and y is null return true.
+
+ array[item++] = Assert.expectEq( "null == void 0", true, null == void 0 );
+ array[item++] = Assert.expectEq( "void 0 == null", true, void 0 == null );
+
+ // if type(x) is Number and type(y) is string, return the result of the comparison x == ToNumber(y).
+
+ array[item++] = Assert.expectEq( "1 == '1'", true, 1 == '1' );
+ array[item++] = Assert.expectEq( "255 == '0xff'", true, 255 == '0xff' );
+ array[item++] = Assert.expectEq( "0 == '\\r'", true, 0 == "\r" );
+ array[item++] = Assert.expectEq( "1e19 == '1e19'", true, 1e19 == "1e19" );
+
+
+ array[item++] = Assert.expectEq( "new Boolean(true) == true", true, true == new Boolean(true) );
+ array[item++] = Assert.expectEq( "new MyObject(true) == true", true, true == new MyObject(true) );
+
+ array[item++] = Assert.expectEq( "new Boolean(false) == false", true, new Boolean(false) == false );
+ array[item++] = Assert.expectEq( "new MyObject(false) == false", true, new MyObject(false) == false );
+
+ array[item++] = Assert.expectEq( "true == new Boolean(true)", true, true == new Boolean(true) );
+ array[item++] = Assert.expectEq( "true == new MyObject(true)", true, true == new MyObject(true) );
+
+ array[item++] = Assert.expectEq( "false == new Boolean(false)", true, false == new Boolean(false) );
+ array[item++] = Assert.expectEq( "false == new MyObject(false)", true, false == new MyObject(false) );
+
+ return ( array );
+}
+
+function MyObject( value ) {
+ this.value = value;
+ //this.valueOf = new Function( "return this.value" );
+ this.valueOf = function(){return this.value};
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_3/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_3/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_3/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_3/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_3/output.txt
new file mode 100644
index 000000000..c3dee373b
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_3/output.txt
@@ -0,0 +1,47 @@
+void 0 = void 0 PASSED!
+null == null PASSED!
+NaN == NaN PASSED!
+NaN == 0 PASSED!
+0 == NaN PASSED!
+NaN == Infinity PASSED!
+Infinity == NaN PASSED!
+Number.MAX_VALUE == Number.MAX_VALUE PASSED!
+Number.MIN_VALUE == Number.MIN_VALUE PASSED!
+Number.POSITIVE_INFINITY == Number.POSITIVE_INFINITY PASSED!
+Number.NEGATIVE_INFINITY == Number.NEGATIVE_INFINITY PASSED!
+0 == 0 PASSED!
+0 == -0 PASSED!
+-0 == 0 PASSED!
+-0 == -0 PASSED!
+0.9 == 1 PASSED!
+0.999999 == 1 PASSED!
+0.9999999999 == 1 PASSED!
+0.9999999999999 == 1 PASSED!
+'hello' == 'hello' PASSED!
+true == true PASSED!
+false == false PASSED!
+true == false PASSED!
+false == true PASSED!
+new MyObject(true) == new MyObject(true) PASSED!
+new Boolean(true) == new Boolean(true) PASSED!
+new Boolean(false) == new Boolean(false) PASSED!
+x = new MyObject(true); y = x; z = x; z == y PASSED!
+x = new MyObject(false); y = x; z = x; z == y PASSED!
+x = new Boolean(true); y = x; z = x; z == y PASSED!
+x = new Boolean(false); y = x; z = x; z == y PASSED!
+new Boolean(true) == new Boolean(true) PASSED!
+new Boolean(false) == new Boolean(false) PASSED!
+null == void 0 PASSED!
+void 0 == null PASSED!
+1 == '1' PASSED!
+255 == '0xff' PASSED!
+0 == '\r' PASSED!
+1e19 == '1e19' PASSED!
+new Boolean(true) == true PASSED!
+new MyObject(true) == true PASSED!
+new Boolean(false) == false PASSED!
+new MyObject(false) == false PASSED!
+true == new Boolean(true) PASSED!
+true == new MyObject(true) PASSED!
+false == new Boolean(false) PASSED!
+false == new MyObject(false) PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_3/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_3/test.swf
new file mode 100644
index 000000000..4fb0648df
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_3/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_3/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_3/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_3/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_6_1/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_6_1/Test.as
new file mode 100644
index 000000000..83680a951
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_6_1/Test.as
@@ -0,0 +1,169 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+/*
+*
+* Date: 20 Feb 2002
+* SUMMARY: Testing the comparison |undefined === null|
+* See http://bugzilla.mozilla.org/show_bug.cgi?id=126722
+*
+*/
+//-----------------------------------------------------------------------------
+// var SECTION = "e11_9_6_1";
+// var VERSION = "";
+// var TITLE = "Testing the comparison |undefined === null|"
+// var bug = 126722;
+
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+ var testcases = getTestCases();
+
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ var UBound = 0;
+ var summary = 'Testing the comparison |undefined === null|';
+ var status = '';
+ var statusitems = [];
+ var actual = '';
+ var actualvalues = [];
+ var expect= '';
+ var expectedvalues = [];
+
+
+ //status = inSection(1);
+ if (undefined === null)
+ actual = true;
+ else
+ actual = false;
+ expect = false;
+ //addThis();
+ array[item++] = Assert.expectEq( status + ": if(undefined === null)", expect, actual);
+
+
+ //status = inSection(2);
+ switch(true)
+ {
+ case (undefined === null) :
+ actual = true;
+ break;
+
+ default:
+ actual = false;
+ }
+ expect = false;
+ //addThis();
+ array[item++] = Assert.expectEq( status + ": case(undefined === null)", expect, actual);
+
+
+
+ // status = inSection(3);
+ function f3(x)
+ {
+ var res = false;
+
+ switch(true)
+ {
+ case (x === null) :
+ res = true;
+ break;
+
+ default:
+ // do nothing
+ }
+
+ return res;
+ }
+
+ actual = f3(undefined);
+ expect = false;
+ //addThis();
+ array[item++] = Assert.expectEq( status + ": f3(x); undefined === null", expect, actual);
+
+
+
+ // status = inSection(4);
+ function f4(arr)
+ {
+ var elt = '';
+ var res = false;
+
+ for (i=0; i
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_6_1/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_6_1/output.txt
new file mode 100644
index 000000000..c88a0e4a3
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_6_1/output.txt
@@ -0,0 +1,6 @@
+: if(undefined === null) PASSED!
+: case(undefined === null) PASSED!
+: f3(x); undefined === null PASSED!
+: f4(array); undefined === null PASSED!
+: f5(array); undefined === null PASSED!
+: f6(array); undefined === null PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_6_1/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_6_1/test.swf
new file mode 100644
index 000000000..c0e2b2c43
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_6_1/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_6_1/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_6_1/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/e11_9_6_1/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_001/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_001/Test.as
new file mode 100644
index 000000000..ac9da72e5
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_001/Test.as
@@ -0,0 +1,106 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "instanceof-001";
+// var VERSION = "ECMA_2";
+// var TITLE = "instanceof"
+
+
+ var testcases = getTestCases();
+
+ function InstanceOf( object_1, object_2, expect, array, item ) {
+ result = object_1 instanceof object_2;
+
+ array[item] = Assert.expectEq(
+
+ "(" + object_1 + ") instanceof " + object_2,
+ expect,
+ result );
+ }
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ function Gen3(value) {
+ this.value = value;
+ this.generation = 3;
+ this.toString = function (){return "Gen" + this.generation+ " instance"};
+ }
+ Gen3.name = 3;
+ var origPrototypeToString = Gen3.constructor.prototype.toString;
+ Gen3.constructor.prototype.toString = function(){return this.name+" object"};
+
+ function Gen2(value) {
+ this.value = value;
+ this.generation = 2;
+ }
+ Gen2.name = 2;
+ Gen2.prototype = new Gen3();
+
+ function Gen1(value) {
+ this.value = value;
+ this.generation = 1;
+ }
+ Gen1.name = 1;
+ Gen1.prototype = new Gen2();
+
+ function Gen0(value) {
+ this.value = value;
+ this.generation = 0;
+ }
+ Gen0.name = 0;
+ Gen0.prototype = new Gen1();
+
+
+ function GenA(value) {
+ this.value = value;
+ this.generation = "A";
+ this.toString = function (){return "instance of Gen" +this.generation};
+
+ }
+ GenA.prototype = new Gen0();
+ GenA.name = "A";
+
+ function GenB(value) {
+ this.value = value;
+ this.generation = "B";
+ this.toString = function (){ return "instance of Gen"+this.generation};
+ }
+ GenB.name = "B"
+ //GenB.prototype = void 0;
+
+ // RelationalExpression is not an object.
+
+ InstanceOf( true, Boolean, true, array, item++ );
+ InstanceOf( new Boolean(false), Boolean, true, array, item++ );
+
+ // Identifier is a function, prototype of Identifier is not an object
+
+ // RelationalExpression.__proto__ == (but not ===) Identifier.prototype
+ InstanceOf( new Gen2(), Gen0, false, array, item++ );
+ InstanceOf( new Gen2(), Gen1, false, array, item++ );
+ InstanceOf( new Gen2(), Gen2, true, array, item++ );
+ InstanceOf( new Gen2(), Gen3, true, array, item++ );
+
+ // RelationalExpression.__proto__.__proto__ === Identifier.prototype
+ InstanceOf( new Gen0(), Gen0, true, array, item++ );
+ InstanceOf( new Gen0(), Gen1, true, array, item++ );
+ InstanceOf( new Gen0(), Gen2, true, array, item++ );
+ InstanceOf( new Gen0(), Gen3, true, array, item++ );
+
+ InstanceOf( new Gen0(), Object, true, array, item++ );
+ InstanceOf( new Gen0(), Function, false, array, item++ );
+
+ InstanceOf( Gen0, Function, true, array, item++ );
+ InstanceOf( Gen0, Object, true, array, item++ );
+
+ //restore
+ Gen3.constructor.prototype.toString = origPrototypeToString;
+ return array;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_001/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_001/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_001/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_001/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_001/output.txt
new file mode 100644
index 000000000..692cf2145
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_001/output.txt
@@ -0,0 +1,14 @@
+(true) instanceof [class Boolean] PASSED!
+(false) instanceof [class Boolean] PASSED!
+(Gen2 instance) instanceof 0 object PASSED!
+(Gen2 instance) instanceof 1 object PASSED!
+(Gen2 instance) instanceof 2 object PASSED!
+(Gen2 instance) instanceof 3 object PASSED!
+(Gen0 instance) instanceof 0 object PASSED!
+(Gen0 instance) instanceof 1 object PASSED!
+(Gen0 instance) instanceof 2 object PASSED!
+(Gen0 instance) instanceof 3 object PASSED!
+(Gen0 instance) instanceof [class Object] PASSED!
+(Gen0 instance) instanceof [class Function] PASSED!
+(0 object) instanceof [class Function] PASSED!
+(0 object) instanceof [class Object] PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_001/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_001/test.swf
new file mode 100644
index 000000000..7a152a898
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_001/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_001/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_001/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_001/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_002/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_002/Test.as
new file mode 100644
index 000000000..8d0cd2b6d
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_002/Test.as
@@ -0,0 +1,83 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "instanceof-002";
+// var VERSION = "ECMA_2";
+// var TITLE = "Determining Instance Relationships";
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ function Employee ( name, dept ) {
+ this.name = name || "";
+ this.dept = dept || "general";
+ }
+
+ function Manager () {
+ this.reports = [];
+ }
+ Manager.prototype = new Employee();
+
+ function WorkerBee ( name, dept, projs ) {
+ this.base = Employee;
+ this.base( name, dept)
+ this.projects = projs || new Array();
+ }
+ WorkerBee.prototype = new Employee();
+
+ function SalesPerson () {
+ this.dept = "sales";
+ this.quota = 100;
+ }
+ SalesPerson.prototype = new WorkerBee();
+
+ function Engineer ( name, projs, machine ) {
+ this.base = WorkerBee;
+ this.base( name, "engineering", projs )
+ this.machine = machine || "";
+ }
+ Engineer.prototype = new WorkerBee();
+
+ var pat = new Engineer()
+
+
+ array[item++] = Assert.expectEq(
+ "pat.constructor.prototype == Engineer.prototype",
+ false,
+ pat.constructor.prototype == Engineer.prototype );
+
+ array[item++] = Assert.expectEq(
+ "pat instanceof Engineer",
+ true,
+ pat instanceof Engineer );
+
+ array[item++] = Assert.expectEq(
+ "pat instanceof WorkerBee )",
+ true,
+ pat instanceof WorkerBee );
+
+ array[item++] = Assert.expectEq(
+ "pat instanceof Employee )",
+ true,
+ pat instanceof Employee );
+
+ array[item++] = Assert.expectEq(
+ "pat instanceof Object )",
+ true,
+ pat instanceof Object );
+
+ array[item++] = Assert.expectEq(
+ "pat instanceof SalesPerson )",
+ false,
+ pat instanceof SalesPerson );
+ return array;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_002/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_002/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_002/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_002/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_002/output.txt
new file mode 100644
index 000000000..f3a30e45b
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_002/output.txt
@@ -0,0 +1,6 @@
+pat.constructor.prototype == Engineer.prototype PASSED!
+pat instanceof Engineer PASSED!
+pat instanceof WorkerBee ) PASSED!
+pat instanceof Employee ) PASSED!
+pat instanceof Object ) PASSED!
+pat instanceof SalesPerson ) PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_002/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_002/test.swf
new file mode 100644
index 000000000..d9b3cb238
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_002/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_002/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_002/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_002/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_003_rt/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_003_rt/Test.as
new file mode 100644
index 000000000..1daf1dc84
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_003_rt/Test.as
@@ -0,0 +1,83 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+import com.adobe.test.Utils;
+
+// var SECTION = "instanceof-003_TypeErrors";
+// var VERSION = "ECMA_2";
+// var TITLE = "instanceof"
+
+
+var testcases = getTestCases();
+
+function InstanceOf( object_1, object_2, expect, array, item ) {
+
+ try{
+ result = object_1 instanceof object_2;
+ } catch (e:TypeError) {
+ result = e.toString();
+ } finally {
+ array[item] = Assert.expectEq(
+
+ "(" + object_1 + ") instanceof " + object_2,
+ expect,
+ Utils.typeError(result));
+ }
+
+}
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+ // RHS of instanceof must be a Class or Function
+ var RHSTypeError="TypeError: Error #1040";
+
+ //Boolean
+ InstanceOf( true, true, RHSTypeError, array, item++ );
+ InstanceOf( false, false, RHSTypeError, array, item++ );
+ InstanceOf( false, true, RHSTypeError, array, item++ );
+
+ InstanceOf( new Boolean(), true, RHSTypeError, array, item++ );
+ InstanceOf( new Boolean(true), true, RHSTypeError, array, item++ );
+ InstanceOf( new Boolean(false), true, RHSTypeError, array, item++ );
+
+ InstanceOf( new Boolean(), false, RHSTypeError, array, item++ );
+ InstanceOf( new Boolean(true), false, RHSTypeError, array, item++ );
+ InstanceOf( new Boolean(false), false, RHSTypeError, array, item++ );
+
+ InstanceOf( new Boolean(), new Boolean(), RHSTypeError, array, item++ );
+ InstanceOf( new Boolean(true), new Boolean(), RHSTypeError, array, item++ );
+ InstanceOf( new Boolean(false), new Boolean(), RHSTypeError, array, item++ );
+
+ InstanceOf( new Boolean(), new Boolean(true), RHSTypeError, array, item++ );
+ InstanceOf( new Boolean(true), new Boolean(true), RHSTypeError, array, item++ );
+ InstanceOf( new Boolean(false), new Boolean(true), RHSTypeError, array, item++ );
+
+ InstanceOf( new Boolean(), new Boolean(false), RHSTypeError, array, item++ );
+ InstanceOf( new Boolean(true), new Boolean(false), RHSTypeError, array, item++ );
+ InstanceOf( new Boolean(false), new Boolean(false), RHSTypeError, array, item++ );
+
+ //Number
+ InstanceOf( 4, 3, RHSTypeError, array, item++ );
+ InstanceOf( new Number(), 3, RHSTypeError, array, item++ );
+ InstanceOf( new Number(4), 3, RHSTypeError, array, item++ );
+ InstanceOf( new Number(), new Number(), RHSTypeError, array, item++ );
+ InstanceOf( new Number(4), new Number(4), RHSTypeError, array, item++ );
+
+
+ //String
+ InstanceOf( "test", "test", RHSTypeError, array, item++ );
+ InstanceOf( "test", new String("test"), RHSTypeError, array, item++ );
+ InstanceOf( "test", new String(), RHSTypeError, array, item++ );
+ InstanceOf( "test", new String(""), RHSTypeError, array, item++ );
+ InstanceOf( new String(), new String("test"), RHSTypeError, array, item++ );
+ InstanceOf( new String(""), new String(), RHSTypeError, array, item++ );
+ InstanceOf( new String("test"), new String(""), RHSTypeError, array, item++ );
+
+ return array;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_003_rt/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_003_rt/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_003_rt/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_003_rt/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_003_rt/output.txt
new file mode 100644
index 000000000..ee84d423d
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_003_rt/output.txt
@@ -0,0 +1,30 @@
+(true) instanceof true PASSED!
+(false) instanceof false PASSED!
+(false) instanceof true PASSED!
+(false) instanceof true PASSED!
+(true) instanceof true PASSED!
+(false) instanceof true PASSED!
+(false) instanceof false PASSED!
+(true) instanceof false PASSED!
+(false) instanceof false PASSED!
+(false) instanceof false PASSED!
+(true) instanceof false PASSED!
+(false) instanceof false PASSED!
+(false) instanceof true PASSED!
+(true) instanceof true PASSED!
+(false) instanceof true PASSED!
+(false) instanceof false PASSED!
+(true) instanceof false PASSED!
+(false) instanceof false PASSED!
+(4) instanceof 3 PASSED!
+(0) instanceof 3 PASSED!
+(4) instanceof 3 PASSED!
+(0) instanceof 0 PASSED!
+(4) instanceof 4 PASSED!
+(test) instanceof test PASSED!
+(test) instanceof test PASSED!
+(test) instanceof PASSED!
+(test) instanceof PASSED!
+() instanceof test PASSED!
+() instanceof PASSED!
+(test) instanceof PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_003_rt/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_003_rt/test.swf
new file mode 100644
index 000000000..db8ef45cc
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_003_rt/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_003_rt/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_003_rt/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_003_rt/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_004_rt/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_004_rt/Test.as
new file mode 100644
index 000000000..a496fc4cc
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_004_rt/Test.as
@@ -0,0 +1,49 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+
+// var SECTION = "instanceof-004_TypeErrors";
+// var VERSION = "ECMA_2";
+// var TITLE = "instanceof"
+
+
+var testcases = getTestCases();
+
+function InstanceOf( object_1, object_2, expect, array, item ) {
+
+ try{
+ result = object_1 instanceof object_2;
+ } catch (e) {
+ result = e.toString();
+ } finally {
+ array[item] = Assert.expectEq(
+
+ "(" + object_1 + ") instanceof " + object_2,
+ expect,
+ result);
+ }
+
+}
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+// I'm not sure what we expect here yet... All I know is that this needs to be tested...
+
+ function GenB(value) {
+ this.value=value;
+ this.generation="B";
+ this.toString=function(){return "toString";}
+ }
+
+ GenB.name = "B";
+ GenB.prototype = undefined;
+
+ InstanceOf( new GenB(), GenB, true, array, item++ );
+ return array;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_004_rt/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_004_rt/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_004_rt/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_004_rt/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_004_rt/output.txt
new file mode 100644
index 000000000..f17c39290
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_004_rt/output.txt
@@ -0,0 +1 @@
+(toString) instanceof function Function() {} PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_004_rt/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_004_rt/test.swf
new file mode 100644
index 000000000..58e193870
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_004_rt/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_004_rt/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_004_rt/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_004_rt/test.toml
@@ -0,0 +1 @@
+num_ticks = 1
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_006/Test.as b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_006/Test.as
new file mode 100644
index 000000000..a873b2c56
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_006/Test.as
@@ -0,0 +1,93 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package {
+import flash.display.MovieClip; public class Test extends MovieClip {}
+}
+
+import com.adobe.test.Assert;
+// var SECTION = "instanceof-006";
+// var VERSION = "ECMA_2";
+// var TITLE = "instanceof"
+
+
+ var testcases = getTestCases();
+
+function getTestCases() {
+ var array = new Array();
+ var item = 0;
+
+ function InstanceOf( object_1, object_2, expect, array, item ) {
+ result = object_1 instanceof object_2;
+
+ array[item] = Assert.expectEq(
+
+ "(" + object_1 + ") instanceof " + object_2,
+ expect,
+ result );
+ }
+
+ function Gen3(value) {
+ this.value = value;
+ this.generation = 3;
+ //this.toString = new Function ( "return \"(Gen\"+this.generation+\" instance)\"" );
+ this.toString = function (){return "Gen" + this.generation+" instance"};
+ }
+ Gen3.name = 3;
+ //Gen3.__proto__.toString = new Function( "return \"(\"+this.name+\" object)\"");
+
+ var origPrototypeToString = Gen3.constructor.prototype.toString;
+ Gen3.constructor.prototype.toString = function(){return this.name+" object"};
+
+
+ function Gen2(value) {
+ this.value = value;
+ this.generation = 2;
+ }
+ Gen2.name = 2;
+ Gen2.prototype = new Gen3();
+
+ function Gen1(value) {
+ this.value = value;
+ this.generation = 1;
+ }
+ Gen1.name = 1;
+ Gen1.prototype = new Gen2();
+
+ function Gen0(value) {
+ this.value = value;
+ this.generation = 0;
+ }
+ Gen0.name = 0;
+ Gen0.prototype = new Gen1();
+
+
+ function GenA(value) {
+ this.value = value;
+ this.generation = "A";
+ //this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" );
+ this.toString = function (){return "instance of Gen" + this.generation};
+
+ }
+ GenA.prototype = new Gen0();
+ GenA.name = "A";
+
+ function GenB(value) {
+ this.value = value;
+ this.generation = "B";
+ //this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" );
+ this.toString = function (){return "instance of Gen" + this.generation};
+ }
+ GenB.name = "B"
+ //GenB.prototype = void 0;
+
+ // RelationalExpression is not an object.
+
+// InstanceOf( true, Boolean, false );
+ InstanceOf( new Boolean(false), Boolean, true, array, item++);
+
+ //restore
+ Gen3.constructor.prototype.toString = origPrototypeToString;
+
+ return array;
+}
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_006/config.xml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_006/config.xml
new file mode 100644
index 000000000..18d27f9ba
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_006/config.xml
@@ -0,0 +1,13 @@
+
+
+
+ .
+ ../../../lib
+
+ false
+ false
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_006/output.txt b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_006/output.txt
new file mode 100644
index 000000000..821d3cac7
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_006/output.txt
@@ -0,0 +1 @@
+(false) instanceof [class Boolean] PASSED!
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_006/test.swf b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_006/test.swf
new file mode 100644
index 000000000..61fd75eb9
Binary files /dev/null and b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_006/test.swf differ
diff --git a/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_006/test.toml b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_006/test.toml
new file mode 100644
index 000000000..cf6123969
--- /dev/null
+++ b/tests/tests/swfs/avm2/from_avmplus/ecma3/Expressions/instanceof_006/test.toml
@@ -0,0 +1 @@
+num_ticks = 1