diff --git a/core/tests/regression_tests.rs b/core/tests/regression_tests.rs index d4f176a05..5e75139da 100644 --- a/core/tests/regression_tests.rs +++ b/core/tests/regression_tests.rs @@ -273,6 +273,7 @@ swf_tests! { (as3_es4_interfaces, "avm2/es4_interfaces", 1), (as3_istype, "avm2/istype", 1), (as3_instanceof, "avm2/instanceof", 1), + (as3_truthiness, "avm2/truthiness", 1), } // TODO: These tests have some inaccuracies currently, so we use approx_eq to test that numeric values are close enough. diff --git a/core/tests/swfs/avm2/truthiness/Test.as b/core/tests/swfs/avm2/truthiness/Test.as new file mode 100644 index 000000000..c69047534 --- /dev/null +++ b/core/tests/swfs/avm2/truthiness/Test.as @@ -0,0 +1,57 @@ +package { + public class Test { + } +} + +function assert_truthiness(val) { + if (val) { + trace("Value is truthy"); + } else { + trace("Value is falsy"); + } +} + +trace("//if (true)"); +assert_truthiness(true); + +trace("//if (false)"); +assert_truthiness(false); + +trace("//if (null)"); +assert_truthiness(null); + +trace("//if (undefined)"); +assert_truthiness(undefined); + +trace("//if (\"\")"); +assert_truthiness(""); + +trace("//if (\"str\")"); +assert_truthiness("str"); + +trace("//if (\"true\")"); +assert_truthiness("true"); + +trace("//if (\"false\")"); +assert_truthiness("false"); + +trace("//if (0.0)"); +assert_truthiness(0.0); + +trace("//if (NaN)"); +assert_truthiness(NaN); + +trace("//if (-0.0)"); +assert_truthiness(-0.0); + +trace("//if (Infinity)"); +assert_truthiness(Infinity); + +trace("//if (1.0)"); +assert_truthiness(1.0); + +trace("//if (-1.0)"); +assert_truthiness(-1.0); + +trace("//if (new Object())"); +assert_truthiness({}); \ No newline at end of file diff --git a/core/tests/swfs/avm2/truthiness/output.txt b/core/tests/swfs/avm2/truthiness/output.txt new file mode 100644 index 000000000..fa55cfc5c --- /dev/null +++ b/core/tests/swfs/avm2/truthiness/output.txt @@ -0,0 +1,30 @@ +//if (true) +Value is truthy +//if (false) +Value is falsy +//if (null) +Value is falsy +//if (undefined) +Value is falsy +//if ("") +Value is falsy +//if ("str") +Value is truthy +//if ("true") +Value is truthy +//if ("false") +Value is truthy +//if (0.0) +Value is falsy +//if (NaN) +Value is falsy +//if (-0.0) +Value is falsy +//if (Infinity) +Value is truthy +//if (1.0) +Value is truthy +//if (-1.0) +Value is truthy +//if (new Object()) +Value is truthy diff --git a/core/tests/swfs/avm2/truthiness/test.fla b/core/tests/swfs/avm2/truthiness/test.fla new file mode 100644 index 000000000..c41c9f293 Binary files /dev/null and b/core/tests/swfs/avm2/truthiness/test.fla differ diff --git a/core/tests/swfs/avm2/truthiness/test.swf b/core/tests/swfs/avm2/truthiness/test.swf new file mode 100644 index 000000000..2d3ab177c Binary files /dev/null and b/core/tests/swfs/avm2/truthiness/test.swf differ