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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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 + + test.swf + \ 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