From 35ec0b9e9281338cf465bbf518fdab2d859e7887 Mon Sep 17 00:00:00 2001 From: Tom Schuster Date: Mon, 3 Jun 2024 22:38:06 +0200 Subject: [PATCH] tests: Add tests from Dinnerbone --- .../swfs/avm2/xml_namespace_methods/Test.as | 81 ++++++ .../avm2/xml_namespace_methods/output.txt | 245 ++++++++++++++++++ .../swfs/avm2/xml_namespace_methods/test.fla | Bin 0 -> 4422 bytes .../swfs/avm2/xml_namespace_methods/test.swf | Bin 0 -> 1527 bytes .../swfs/avm2/xml_namespace_methods/test.toml | 1 + 5 files changed, 327 insertions(+) create mode 100644 tests/tests/swfs/avm2/xml_namespace_methods/Test.as create mode 100644 tests/tests/swfs/avm2/xml_namespace_methods/output.txt create mode 100644 tests/tests/swfs/avm2/xml_namespace_methods/test.fla create mode 100644 tests/tests/swfs/avm2/xml_namespace_methods/test.swf create mode 100644 tests/tests/swfs/avm2/xml_namespace_methods/test.toml 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 0000000000000000000000000000000000000000..747bceda79ec9cdb97a6ce051673a5ab3cbdec14 GIT binary patch literal 4422 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 kpA-16y^miBddUfX?t~z8sSh1Ip(P)Ni_@% literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7c128486ccf3051698acf2cffeada66e231b0704 GIT binary patch literal 1527 zcmVS5psM4gdgnoUK;fQrkup-j!s_0?beNjY%3|Xo1GIWZ5P`V`#y~9ojl% z0@KM&rk15OsFfv+B!jtXhbQ5xuaS%1_QJH&^dJ?A^$p8d|* zm6{;*JpdDz04zXIoLT??{4_lo0w8ZGHStxk#5U`iZi{%d6+dwtQ{=d_v$ND$CS_R1 zTzYeJlj8+W5Rw>?w9j=%Y9@7iIlj$$3`JzimTEexp|kE-su~SvD;{stHtS}GR<~1< zVpLH|HtJkcGP!h$=Ug5P5(^fR9K$*?3~hVIMX@DKvQOBTmQh2tjp-$gEgWvJNw(Th zHHFPSPv^Otkv&|fi2t_*UdSf-Tr$0RBxJ;FTFmfIc|qj)o>(90hnA5eDUu`g1q;Fv z&x<)h%w>9m`>^eBLs4tz?-krdvU%=?lJBRjB6p-U8|H}*_KRGQ)S5|T}J!GZEQ%Xsv_=g?qqjzxxMFm>1TVTbb7Z?6bd_; zOg1Cz?(C!mPy7DRfURiA4Oh1|oALo{J)r^Hfu$a+xMc^hW=n;Q!n2J{A(!6pScQ#T zF_*~|_HuZ-Y&u{aK+(w+S?VcLN|sUgs$fc%ja;R+;(=7IOrE}?IzXn}eG9u48n7uJ zv!Gj{0h{q(WEx7rb_&zgX>dz(?L%;z1qI^z`ugqcC_W$|IFyl&*faodXa0$}27FC| zlzV#y$k*j>nHN$W*`_2T>Im6R)Z0NgZ`;(QbEa&Zs;Ho;CZ#m$Chb@l_re}GE#x@o zFD+GfRQ>ojGH)4%vmG5_@Ri5=2wCj`lXncWy-DzsZu^_W#=8VHrMjshZ?j`pob~*o zgOk{byHRJVbK)E00UMLAtBRtbHlsfnM(TU}dE4QGsF{4#a2(u+KDR#@#_fCix!d7A z+-yKH01>$2Tu%l*ogP#~IdaE`YE{E3_u_(u_dv^S(=BwqEkvgxuG&GZxSnF+9&)P~ z@{0TtgYYS)bh=|rM`vtz6!%w{V29O{t2P|YLb!`?a`E-`kT=s(`-tqGk2{AMPT=_s z&V3o;Zkq3FK(W(+GyV2M(^4I@(r+yK_k-#WNOlSae#5IevYzyV_H~?xBs+LN`M||H zNFMnkc^?tRdgc7?K7E4{50lvU-&8pggsr}3OyRyf z@Njq%*y)zm!^{r>d~?qX4P8MsTqkA7934NNiRla;-wBO4#-W2xr(=@iSVl8sNpmM0 zV>|n0ZJp^n&#ti~BxSFyPu;RDbfb$%)+EdO{J_xJf%dtc$-32CkH{zZqt8Nm z7$2fFwMnvDEZMNsu-|ZFy$v^Uqv4``y*YKOljjC+fUv(=CgXn~rCArJzQ@fa1G zh)u?(Vh>`|v6;Cv5e-2qOp_62WOOV#{)mPI4M`eOG!dpLnx-N&WN0|bMByT2W+Afx zX~;5h$gDu-Gsvt#=5xp-urWzPj)puvA<#sICbBe^#KN{>O<=I{qiO{gr59spEIkxRH{7 zyDE(X{D9X&kl~ThUx*gJbn$NK;xCL?zA8kDsx$>I z