tests: Add test for Add2 op

This commit is contained in:
Mike Welsh 2022-03-30 13:43:59 -07:00
parent 659db7facc
commit a9aaa0b0de
4 changed files with 356 additions and 0 deletions

View File

@ -100,6 +100,7 @@ macro_rules! swf_tests_approx {
// Inside the folder is expected to be "test.swf" and "output.txt" with the correct output.
swf_tests! {
(action_to_integer, "avm1/action_to_integer", 1),
(add2, "avm1/add2", 1),
(add_property, "avm1/add_property", 1),
(arguments, "avm1/arguments", 1),
(array_call_method, "avm1/array_call_method", 1),

View File

@ -0,0 +1,355 @@
// 0 + 0
0
// 0 + 0
0
// 1 + 2
3
// 2 + 1
3
// NaN + 1
NaN
// 1 + NaN
NaN
// NaN + NaN
NaN
// NaN + NaN
NaN
// Infinity + Infinity
Infinity
// Infinity + Infinity
Infinity
// Infinity + -Infinity
NaN
// -Infinity + Infinity
NaN
// false + false
0
// false + false
0
// true + false
1
// false + true
1
// true + true
2
// true + true
2
// true + false
1
// false + true
1
// false + 1
1
// 1 + false
1
// true + 1
2
// 1 + true
2
// abc + 1
abc1
// 1 + abc
1abc
// abc + false
abcfalse
// false + abc
falseabc
// abc + true
abctrue
// true + abc
trueabc
// 500 + 1
5001
// 1 + 500
1500
// 500 + false
500false
// false + 500
false500
// 500 + true
500true
// true + 500
true500
// undefined + undefined
NaN
// undefined + undefined
NaN
// undefined + 1
NaN
// 1 + undefined
NaN
// undefined + abc
undefinedabc
// abc + undefined
abcundefined
// null + 1
NaN
// 1 + null
NaN
// null + null
NaN
// null + null
NaN
// null + undefined
NaN
// undefined + null
NaN
// null + false
NaN
// false + null
NaN
// null + true
NaN
// true + null
NaN
// null + abc
nullabc
// abc + null
abcnull
// _level0 + 1
NaN
// 1 + _level0
NaN
// _level0 + false
NaN
// false + _level0
NaN
// _level0 + true
NaN
// true + _level0
NaN
// _level0 + abc
_level0abc
// abc + _level0
abc_level0
// _level0 + undefined
NaN
// undefined + _level0
NaN
// obj + 1
NaN
// 1 + obj
NaN
// obj + false
NaN
// false + obj
NaN
// obj + true
NaN
// true + obj
NaN
// obj + abc
[object Object]abc
// abc + obj
abc[object Object]
// obj + undefined
NaN
// undefined + obj
NaN
// obj + null
NaN
// null + obj
NaN
// obj + _level0
NaN
// _level0 + obj
NaN
// obj + obj
NaN
// obj + obj
NaN
// objValue1 + 1
objValue1.valueOf
2
// 1 + objValue1
objValue1.valueOf
2
// objValue1 + false
objValue1.valueOf
1
// false + objValue1
objValue1.valueOf
1
// objValue1 + true
objValue1.valueOf
2
// true + objValue1
objValue1.valueOf
2
// objValue1 + abc
objValue1.valueOf
1abc
// abc + objValue1
objValue1.valueOf
abc1
// objValue1 + undefined
objValue1.valueOf
NaN
// undefined + objValue1
objValue1.valueOf
NaN
// objValue1 + null
objValue1.valueOf
NaN
// null + objValue1
objValue1.valueOf
NaN
// objValue1 + _level0
objValue1.valueOf
NaN
// _level0 + objValue1
objValue1.valueOf
NaN
// objValue1 + obj
objValue1.valueOf
NaN
// obj + objValue1
objValue1.valueOf
NaN
// objValue1 + obj
objValue1.valueOf
NaN
// obj + objValue1
objValue1.valueOf
NaN
// objValue1 + objValue1
objValue1.valueOf
objValue1.valueOf
2
// objValue1 + objValue1
objValue1.valueOf
objValue1.valueOf
2
// objValue1 + objValue2
objValue2.valueOf
objValue1.valueOf
1xyz
// objValue2 + objValue1
objValue1.valueOf
objValue2.valueOf
xyz1
// objValue1 + objValue3
objValue3.valueOf
objValue1.valueOf
objValue3.valueOf
NaN
// objValue3 + objValue1
objValue1.valueOf
objValue3.valueOf
objValue3.valueOf
NaN
// objValue1 + objValue4
objValue4.valueOf
objValue1.valueOf
NaN
// objValue4 + objValue1
objValue1.valueOf
objValue4.valueOf
NaN
// objValue2 + obj
objValue2.valueOf
xyz[object Object]
// obj + objValue2
objValue2.valueOf
[object Object]xyz
// objValue2 + objValue2
objValue2.valueOf
objValue2.valueOf
xyzxyz
// objValue2 + objValue2
objValue2.valueOf
objValue2.valueOf
xyzxyz
// objValue2 + objValue3
objValue3.valueOf
objValue2.valueOf
objValue3.toString
xyz[type Object]
// objValue3 + objValue2
objValue2.valueOf
objValue3.valueOf
objValue3.toString
[type Object]xyz
// objValue3 + obj
objValue3.valueOf
objValue3.valueOf
NaN
// obj + objValue3
objValue3.valueOf
objValue3.valueOf
NaN
// objValue3 + objValue4
objValue4.valueOf
objValue3.valueOf
objValue3.valueOf
NaN
// objValue4 + objValue3
objValue3.valueOf
objValue4.valueOf
objValue3.valueOf
NaN
// objValue4 + obj
objValue4.valueOf
NaN
// obj + objValue4
objValue4.valueOf
NaN

Binary file not shown.

Binary file not shown.