From 4de46562ca8fd5d75c8f26449aa235a651e0c435 Mon Sep 17 00:00:00 2001 From: David Wendt Date: Sun, 28 Aug 2022 15:31:16 -0400 Subject: [PATCH] tests: Add a test for class singleton properties. --- tests/tests/regression_tests.rs | 1 + tests/tests/swfs/avm2/class_singleton/Test.as | 32 ++++++++++++++++++ .../swfs/avm2/class_singleton/output.txt | 18 ++++++++++ .../tests/swfs/avm2/class_singleton/test.fla | Bin 0 -> 4031 bytes .../tests/swfs/avm2/class_singleton/test.swf | Bin 0 -> 1236 bytes 5 files changed, 51 insertions(+) create mode 100644 tests/tests/swfs/avm2/class_singleton/Test.as create mode 100644 tests/tests/swfs/avm2/class_singleton/output.txt create mode 100644 tests/tests/swfs/avm2/class_singleton/test.fla create mode 100644 tests/tests/swfs/avm2/class_singleton/test.swf diff --git a/tests/tests/regression_tests.rs b/tests/tests/regression_tests.rs index d45b8849a..e9d38555e 100644 --- a/tests/tests/regression_tests.rs +++ b/tests/tests/regression_tests.rs @@ -204,6 +204,7 @@ swf_tests! { (as3_class_enumeration, "avm2/class_enumeration", 1), (as3_class_is, "avm2/class_is", 1), (as3_class_methods, "avm2/class_methods", 1), + (as3_class_singleton, "avm2/class_singleton", 1), (as3_class_supercalls_mismatched, "avm2/class_supercalls_mismatched", 1), (as3_class_to_locale_string, "avm2/class_to_locale_string", 1), (as3_class_to_string, "avm2/class_to_string", 1), diff --git a/tests/tests/swfs/avm2/class_singleton/Test.as b/tests/tests/swfs/avm2/class_singleton/Test.as new file mode 100644 index 000000000..02929ed75 --- /dev/null +++ b/tests/tests/swfs/avm2/class_singleton/Test.as @@ -0,0 +1,32 @@ +package { + public class Test {} +} + +class ES4Class { + public static var INSTANCE: ES4Class = new ES4Class(); + + public static var NULL: ES4Class = null; + + public static var UNDEFINED: ES4Class = undefined; +} + +trace("///ES4Class.INSTANCE === null"); +trace(ES4Class.INSTANCE === null); +trace("///ES4Class.INSTANCE === undefined"); +trace(ES4Class.INSTANCE === undefined); +trace("///ES4Class.INSTANCE is ES4Class"); +trace(ES4Class.INSTANCE is ES4Class); + +trace("///ES4Class.NULL === null"); +trace(ES4Class.NULL === null); +trace("///ES4Class.NULL === undefined"); +trace(ES4Class.NULL === undefined); +trace("///ES4Class.NULL is ES4Class"); +trace(ES4Class.NULL is ES4Class); + +trace("///ES4Class.UNDEFINED === null"); +trace(ES4Class.UNDEFINED === null); +trace("///ES4Class.UNDEFINED === undefined"); +trace(ES4Class.UNDEFINED === undefined); +trace("///ES4Class.UNDEFINED is ES4Class"); +trace(ES4Class.UNDEFINED is ES4Class); \ No newline at end of file diff --git a/tests/tests/swfs/avm2/class_singleton/output.txt b/tests/tests/swfs/avm2/class_singleton/output.txt new file mode 100644 index 000000000..c5c6da45a --- /dev/null +++ b/tests/tests/swfs/avm2/class_singleton/output.txt @@ -0,0 +1,18 @@ +///ES4Class.INSTANCE === null +false +///ES4Class.INSTANCE === undefined +false +///ES4Class.INSTANCE is ES4Class +true +///ES4Class.NULL === null +true +///ES4Class.NULL === undefined +false +///ES4Class.NULL is ES4Class +false +///ES4Class.UNDEFINED === null +true +///ES4Class.UNDEFINED === undefined +false +///ES4Class.UNDEFINED is ES4Class +false diff --git a/tests/tests/swfs/avm2/class_singleton/test.fla b/tests/tests/swfs/avm2/class_singleton/test.fla new file mode 100644 index 0000000000000000000000000000000000000000..d382fbe3e8ab454910c617c4d2ff9d879207277d GIT binary patch literal 4031 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 literal 0 HcmV?d00001