diff --git a/tests/tests/swfs/avm2/xml_namespace_methods/Test.as b/tests/tests/swfs/avm2/xml_namespace_methods/Test.as new file mode 100644 index 000000000000..e2d87abd288f --- /dev/null +++ b/tests/tests/swfs/avm2/xml_namespace_methods/Test.as @@ -0,0 +1,81 @@ +package { + import flash.display.MovieClip; + import flash.xml.XMLNode; + + + public class Test extends MovieClip { + + + public function Test() { + XML.prettyPrinting = false; + + var xml: XML = + + + + + + + + + + + ; + + dump(xml); + + trace(""); + trace("top.addNamespace(new Namespace(\"topns\", \"https://example.org/top/but/replaced\"))"); + xml.outer[0].top[0].addNamespace(new Namespace("topns", "https://example.org/top/but/replaced")); + trace("top.addNamespace(new Namespace(\"middlens\", \"https://example.org/middle/but/replaced\"))"); + xml.outer[0].top[0].addNamespace(new Namespace("middlens", "https://example.org/middle/but/replaced")); + trace("top.addNamespace(new Namespace(\"newns\", \"https://example.org/new\"))"); + xml.outer[0].top[0].addNamespace(new Namespace("newns", "https://example.org/new")); + trace("top.addNamespace(new Namespace(undefined, \"https://example.org/undefined\"))"); + xml.outer[0].top[0].addNamespace(new Namespace(undefined, "https://example.org/undefined")); + + trace(""); + dump(xml); + trace(""); + trace(""); + trace(xml.toString()); + } + + function dump(node: XML) { + trace("// " + node.localName() + " namespace()"); + traceNs(node.namespace()); + trace(""); + + trace("// " + node.localName() + " inScopeNamespaces()"); + for each (var ns in node.inScopeNamespaces()) { + traceNs(ns); + } + trace(""); + + trace("// " + node.localName() + " inScopeNamespaces()"); + for each (var ns in node.inScopeNamespaces()) { + traceNs(ns); + } + trace(""); + + trace("// " + node.localName() + " namespaceDeclarations()"); + for each (var ns in node.namespaceDeclarations()) { + traceNs(ns); + } + trace(""); + + trace("// " + node.localName() + " namespace(\"middlens\")"); + trace(node.namespace("middlens")); + trace(""); + + for each (var child in node.children()) { + dump(child); + } + } + + function traceNs(ns: Namespace) { + trace(ns.prefix + " = " + ns.uri); + } + } + +} diff --git a/tests/tests/swfs/avm2/xml_namespace_methods/output.txt b/tests/tests/swfs/avm2/xml_namespace_methods/output.txt new file mode 100644 index 000000000000..e8c03bf4207c --- /dev/null +++ b/tests/tests/swfs/avm2/xml_namespace_methods/output.txt @@ -0,0 +1,245 @@ +// root namespace() + = + +// root inScopeNamespaces() + = + +// root inScopeNamespaces() + = + +// root namespaceDeclarations() + +// root namespace("middlens") +undefined + +// outer namespace() + = + +// outer inScopeNamespaces() + = + +// outer inScopeNamespaces() + = + +// outer namespaceDeclarations() + +// outer namespace("middlens") +undefined + +// top namespace() + = + +// top inScopeNamespaces() +topns = https://example.org/top + +// top inScopeNamespaces() +topns = https://example.org/top + +// top namespaceDeclarations() +topns = https://example.org/top + +// top namespace("middlens") +undefined + +// middle namespace() + = + +// middle inScopeNamespaces() +middlens = https://example.org/middle +topns = https://example.org/top + +// middle inScopeNamespaces() +middlens = https://example.org/middle +topns = https://example.org/top + +// middle namespaceDeclarations() +middlens = https://example.org/middle + +// middle namespace("middlens") +https://example.org/middle + +// bottom namespace() + = + +// bottom inScopeNamespaces() +bottomns = https://example.org/bottom +middlens = https://example.org/middle +topns = https://example.org/top + +// bottom inScopeNamespaces() +bottomns = https://example.org/bottom +middlens = https://example.org/middle +topns = https://example.org/top + +// bottom namespaceDeclarations() +bottomns = https://example.org/bottom + +// bottom namespace("middlens") +https://example.org/middle + +// namespacedTopnsSibling namespace() +topns = https://example.org/top + +// namespacedTopnsSibling inScopeNamespaces() +middlens = https://example.org/middle +topns = https://example.org/top + +// namespacedTopnsSibling inScopeNamespaces() +middlens = https://example.org/middle +topns = https://example.org/top + +// namespacedTopnsSibling namespaceDeclarations() + +// namespacedTopnsSibling namespace("middlens") +https://example.org/middle + +// namespacedMiddlensSibling namespace() +middlens = https://example.org/middle + +// namespacedMiddlensSibling inScopeNamespaces() +middlens = https://example.org/middle +topns = https://example.org/top + +// namespacedMiddlensSibling inScopeNamespaces() +middlens = https://example.org/middle +topns = https://example.org/top + +// namespacedMiddlensSibling namespaceDeclarations() + +// namespacedMiddlensSibling namespace("middlens") +https://example.org/middle + + +top.addNamespace(new Namespace("topns", "https://example.org/top/but/replaced")) +top.addNamespace(new Namespace("middlens", "https://example.org/middle/but/replaced")) +top.addNamespace(new Namespace("newns", "https://example.org/new")) +top.addNamespace(new Namespace(undefined, "https://example.org/undefined")) + +// root namespace() + = + +// root inScopeNamespaces() + = + +// root inScopeNamespaces() + = + +// root namespaceDeclarations() + +// root namespace("middlens") +undefined + +// outer namespace() + = + +// outer inScopeNamespaces() + = + +// outer inScopeNamespaces() + = + +// outer namespaceDeclarations() + +// outer namespace("middlens") +undefined + +// top namespace() + = + +// top inScopeNamespaces() +topns = https://example.org/top/but/replaced +middlens = https://example.org/middle/but/replaced +newns = https://example.org/new + +// top inScopeNamespaces() +topns = https://example.org/top/but/replaced +middlens = https://example.org/middle/but/replaced +newns = https://example.org/new + +// top namespaceDeclarations() +topns = https://example.org/top/but/replaced +middlens = https://example.org/middle/but/replaced +newns = https://example.org/new + +// top namespace("middlens") +https://example.org/middle/but/replaced + +// middle namespace() + = + +// middle inScopeNamespaces() +middlens = https://example.org/middle +topns = https://example.org/top/but/replaced +newns = https://example.org/new + +// middle inScopeNamespaces() +middlens = https://example.org/middle +topns = https://example.org/top/but/replaced +newns = https://example.org/new + +// middle namespaceDeclarations() +middlens = https://example.org/middle + +// middle namespace("middlens") +https://example.org/middle + +// bottom namespace() + = + +// bottom inScopeNamespaces() +bottomns = https://example.org/bottom +middlens = https://example.org/middle +topns = https://example.org/top/but/replaced +newns = https://example.org/new + +// bottom inScopeNamespaces() +bottomns = https://example.org/bottom +middlens = https://example.org/middle +topns = https://example.org/top/but/replaced +newns = https://example.org/new + +// bottom namespaceDeclarations() +bottomns = https://example.org/bottom + +// bottom namespace("middlens") +https://example.org/middle + +// namespacedTopnsSibling namespace() +undefined = https://example.org/top + +// namespacedTopnsSibling inScopeNamespaces() +middlens = https://example.org/middle +topns = https://example.org/top/but/replaced +newns = https://example.org/new + +// namespacedTopnsSibling inScopeNamespaces() +middlens = https://example.org/middle +topns = https://example.org/top/but/replaced +newns = https://example.org/new + +// namespacedTopnsSibling namespaceDeclarations() + +// namespacedTopnsSibling namespace("middlens") +https://example.org/middle + +// namespacedMiddlensSibling namespace() +middlens = https://example.org/middle + +// namespacedMiddlensSibling inScopeNamespaces() +middlens = https://example.org/middle +topns = https://example.org/top/but/replaced +newns = https://example.org/new + +// namespacedMiddlensSibling inScopeNamespaces() +middlens = https://example.org/middle +topns = https://example.org/top/but/replaced +newns = https://example.org/new + +// namespacedMiddlensSibling namespaceDeclarations() + +// namespacedMiddlensSibling namespace("middlens") +https://example.org/middle + + + + diff --git a/tests/tests/swfs/avm2/xml_namespace_methods/test.fla b/tests/tests/swfs/avm2/xml_namespace_methods/test.fla new file mode 100644 index 000000000000..747bceda79ec Binary files /dev/null and b/tests/tests/swfs/avm2/xml_namespace_methods/test.fla differ diff --git a/tests/tests/swfs/avm2/xml_namespace_methods/test.swf b/tests/tests/swfs/avm2/xml_namespace_methods/test.swf new file mode 100644 index 000000000000..7c128486ccf3 Binary files /dev/null and b/tests/tests/swfs/avm2/xml_namespace_methods/test.swf differ diff --git a/tests/tests/swfs/avm2/xml_namespace_methods/test.toml b/tests/tests/swfs/avm2/xml_namespace_methods/test.toml new file mode 100644 index 000000000000..2708ada71a1d --- /dev/null +++ b/tests/tests/swfs/avm2/xml_namespace_methods/test.toml @@ -0,0 +1 @@ +num_frames = 1 \ No newline at end of file