From 6316d7e0b3996af1864118467c8c4d91d7fef072 Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Sun, 12 Apr 2020 15:36:16 +0200 Subject: [PATCH] tests: Add (currently failing) test for init order when combined with register_class --- core/tests/regression_tests.rs | 1 + .../avm1/register_and_init_order/aaclass.as | 32 ++++ .../avm1/register_and_init_order/output.txt | 156 ++++++++++++++++++ .../avm1/register_and_init_order/test.fla | Bin 0 -> 8849 bytes .../avm1/register_and_init_order/test.swf | Bin 0 -> 1612 bytes 5 files changed, 189 insertions(+) create mode 100644 core/tests/swfs/avm1/register_and_init_order/aaclass.as create mode 100644 core/tests/swfs/avm1/register_and_init_order/output.txt create mode 100644 core/tests/swfs/avm1/register_and_init_order/test.fla create mode 100644 core/tests/swfs/avm1/register_and_init_order/test.swf diff --git a/core/tests/regression_tests.rs b/core/tests/regression_tests.rs index adcff5de0..b8e81956a 100644 --- a/core/tests/regression_tests.rs +++ b/core/tests/regression_tests.rs @@ -129,6 +129,7 @@ swf_tests! { (equals2_swf6, "avm1/equals2_swf6", 1), (equals2_swf7, "avm1/equals2_swf7", 1), (register_class, "avm1/register_class", 1), + (register_and_init_order, "avm1/register_and_init_order", 1), (set_variable_scope, "avm1/set_variable_scope", 1), (slash_syntax, "avm1/slash_syntax", 2), (strictequals_swf6, "avm1/strictequals_swf6", 1), diff --git a/core/tests/swfs/avm1/register_and_init_order/aaclass.as b/core/tests/swfs/avm1/register_and_init_order/aaclass.as new file mode 100644 index 000000000..ac2d1bbfb --- /dev/null +++ b/core/tests/swfs/avm1/register_and_init_order/aaclass.as @@ -0,0 +1,32 @@ +class aaclass extends MovieClip { + function aaclass() { + trace("aaclass constructor"); + super(); + + trace(""); + trace("// trace(this._name)"); + trace(this._name); + trace(""); + + this.test(); + trace("aaclass constructor end"); + trace(""); + trace(""); + } + + function test() { + trace("aaclass test()"); + + trace(""); + + trace("// trace(this._name)"); + trace(this["_name"]); + trace(""); + + trace("// trace(this.box)"); + trace(this["box"]); + trace(""); + + trace("aaclass test() end"); + } +} \ No newline at end of file diff --git a/core/tests/swfs/avm1/register_and_init_order/output.txt b/core/tests/swfs/avm1/register_and_init_order/output.txt new file mode 100644 index 000000000..c4d5e9c6c --- /dev/null +++ b/core/tests/swfs/avm1/register_and_init_order/output.txt @@ -0,0 +1,156 @@ +b #initclip +b #endinitclip + + +aa #initclip +aa #endinitclip + + +a #initclip +a #endinitclip + + +c #initclip +c #endinitclip + + +a constructor() + +// trace(this._name) +a + +// trace(this._name) +a + +// trace(this.box) +_level0.a.box + +// trace(this.custom) +true + +// trace(this.box.custom) +undefined + +// trace(this.box.box) +_level0.a.box.box + +a constructor() end + + +aaclass constructor + +// trace(this._name) +box + +aaclass test() + +// trace(this._name) +box + +// trace(this.box) +_level0.a.box.box + +aaclass test() end +aaclass constructor end + + +b constructor() + +// trace(this._name) +b + +// trace(this._name) +b + +// trace(this.box) +_level0.b.box + +// trace(this.custom) +true + +b constructor() end + + +root first frame + +// trace(a._name) +a + +// trace(a.box) +_level0.a.box + +// trace(a.custom) +true + +// trace(a.box.box) +_level0.a.box.box + +// trace(a.box.custom) +undefined + +// trace(b._name) +b + +// trace(b.custom) +true + +// trace(b.box) +_level0.b.box + +root first frame end + + +a first frame + +// trace(this._name) +a + +// trace(this.box) +_level0.a.box + +// trace(this.custom) +true + +// trace(this.box.custom) +undefined + +// trace(this.box.box) +_level0.a.box.box + +// trace(this.oldbox) +_level0.a.box + +// trace(this.box === this.oldbox) +true + +a first frame end + + +aa first frame + +// trace(this._name) +box + +// trace(this.box) +_level0.a.box.box + +// trace(this.custom) +undefined + +aa first frame end + + +b first frame + +// trace(this._name) +b + +// trace(this.box) +_level0.b.box + +// trace(this.custom) +true + +b first frame end + + diff --git a/core/tests/swfs/avm1/register_and_init_order/test.fla b/core/tests/swfs/avm1/register_and_init_order/test.fla new file mode 100644 index 0000000000000000000000000000000000000000..2e6b6c8c1f98f4c796e035101ab5f0d667fcdcf5 GIT binary patch literal 8849 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 z zRC&klv1D=E*&6}#b*PAdW?5tJ;rV!$&1QB)2pP2#jybu97vb9~u1yDW48N22-o``M z=0S6nuau|MS}??4n8+p^>{Atg52CQleP+yHLMZZ4Ni$D2M&uD{WP}rAoz3P(EfBnf z7BQ%uFH+3yWz0|+6*pf1SWki&sGB^YyxgI!H1_ntqWxX_lSL-q zK8tXrVP$?b;{80S5V-eaMN3{-bQBrbyNY~!BG9-&4?!j0}nwI({rEq@R~Jc z)9^DXbrh&pZ=Hf-mpdM-!-2fG*MQIdv37MB5O%L0`W?RzudSGAWa;0uvE+4XeeQg!x^!mx463^U=q~r@zs!FUgw$SE8(W1CQtSVV z)P_Gu9jWpLV*Vkd&bvn#^@1{w1hPcb1F5Ibij_2IJG=8rQvKM@18H{W?d__#Z2n3kgfEi zW8Dl*Tm_(58weAOd>BH^xp!qY{anaSJx@_>591db0>ae~dm1cr>GHH)FR7F40FIXb z7G)0bAt1crD$r{%Q7I)>xf>V|saZYYAZXfk1ZO%VOkMrLkf$NcExdF&#k)-jt>S+p#^`Lh|pi(QgPqZj4g|t3v;C>?!x3z*97GC`{S_spM1t1r-Xv9vX zZ|6j1m_w1iI^Mpp;U*R!cI-rzy_(>lFDUb;qgQG4*mnaP1e)b42H-M$>)_QsTjZr* zqRaD-DvB+ctRt7m9|!iPV8myAW|&m8gu$Bz-(B`lCF3{n?8Hf3LY?a)l4`G!;5 zoN^LgC}%midXm+^Aj&0!VN;Og$*3;9dEPu@ilzAq%>6<(R5b_IVrMpAE7M!n0vXNp`fL_z+VSFOlrS?Bw9uWSI&nSRE`PIx7V!fM`6fzTm>A3BCo z+<~C^K+|MKNxr!gaqDnLDku32#)9B66RJh8zv3+o4Jy5JX4K{i7$xsQ-;QK*Cm2rC z6|eMd*Q(6}^e;v?Kp5S)HaaT+Ve|yVUqbucq4~q3iBwj!U1fdZO@jGIp49dw??X-% zTRnrM*&FISdtM|GxzqxX8O+)Y&2yyOyIaQz=s;*q-DkJ8;JK*%uh-U`%Xy%bCx0?p z&?NQps4ID$@&}{eH1HR1c$u9XhyJ>ksShpD}R>2;(Q?xqaUj_{frOowSIckTDx1p4(x4 zkgxaM`??x@tBOa;3(Zw^8mMj4}G_UE) zPr;7z^!|s8ORDp>AiWa{bYe{>QPuE6_2EUGVO0aKJHr(0fb>c`j0}iwK=4S z<7Q{9Z)ay^Zm92MZfnEh4Dsmojcg5!|0rnxqmJG3|A#|CV*~#8x;bPEzqP-s=+gg0 z{U-9quKzs8fE-vL{ipk{@PD9wl+*ugKTs-={#$YV&&7V0yZ&8X{|g5>ctZNWitRtw z{0aVdt?U^~|Azb5$a5dGH#*N`9oUjh3+AHcsu z_Fs6qr@x-|Ujh8j#s4PQzXHWy;3G)7;6K8~pA-Ceg8voV{hGiF5_tZ6*MAts-=Y8I z?f!xm;{JmE;rsp${V$*57t|A?DnD2K!^8L;`d`NT7gUbu7gYZrJO2A={Y#&IVJ}I3 ZDW`%o9Q=Th6&SdU!5I zEiO7`d#%o(Y}?EbMX#$FS#L=_(vfnRtVHWzP_bgD#L|sDU2krbX_UCtB<7)b-_RSX zX<~WO6e|yw#k5%OYE4Bftmf9G;Y_ZUTE+iHKAX>`vxRgnyO+-uv-#q!+&g&8X1QED z(oWr0Eus*Mc$4#cdCXZY77Bc_C)P>V6|HgnQpsnL;<_}10+e zjE^?=jytNftD1V(kW~!7?y$4HUA)&eEz*|Nd({mzWHe1FRyNDIa-p!fwYEYpbF1Y_ zbt_jWuNA5{3#-dz_MqNWw^~(~yDhbCIn|U`sK%wb)oO-zprJl|s+L#QmJ7Lj<<{oP zU0QW*`DVFX-MY0>$ye_#Z|2;pJ|zZoRSoU2s%#m0i?PrlhN)7dN{cR36efmmQS*VR zdeMW8q`K9V%RJCXs#{I}J20JFLL3lthSQ}bt;hp~cDhEBwID^7)TT;DGf|~E)-e>h z*wBp@u{KDj)6`@_3rfATd8o^ej>uy*-JsoLT{;W&os#4zr|>p5$N;?m z>5~s9@JxR**WMF8`{Vw?N$BKz;|9QKoHo%QdOwdu0yO9jQ0ogkhVb@w=x4m@KY}>O zVnZ`bOKcdVr2eNyd%b42U74flECLm1@O`5e|z@{oh5zn+sO!nECe!w zARruJ2Ey+Ygd>=M`WO&0`)xEjP_XMu0aAZyKo}DILkgTD!aJgzBgQ-8uLMgN>Ih2| zVG$TCe^OYE5f(!JeO$a_{9k~HGGGLp9eryMnTY+?;8p)QOv7scW+Z12FzR6yy=J|s zFspqY%@IqblIV&24~TFxM%)u4Zco`s&OOCD5+iwTP=kv~o}&T*t|p%SI{bP>fFSih zQtE$!88CF+I){DYQcs3?CqAT;a~UT-q!ND#)ZHQLyv-+!RU4lB>t{JKp5@pm%TuEh zNpKENMv`-QMw%XGe9C4#0t@|P=^=3~A#8>VUw!=6L)sB3{ZY2Q-cHUlDMVp^|2~l) zkpmSsr$ojD+=SEQvj7e3e}|1>|DdVYNfTVBa~5SCw@yY^#;<^L+J&tcOEoROB*xUX z{#a8hO|1hRL$`DbH+X|sns~#fH`t={MzLb$2M<&WKV3Tb5p!VLDqz3`cIM{34niov znZArs7(#Et2jEC#3L@bA!okq)JY&*b#lsK|xGOjs6I^T{7O{h)sk4+&>I>YZ)c83t zZWlDWRD1{h!FhTUj799p1eahPI2D~Uwyh&(oZ^j%RP7`NbkT#LXVCc0Nfe?Xw8xUA zd1UunwqHPYXK@j~uC+BwrWD9c6Yn{S5d908z1+^hGYBK^jQ={+>L01H1%`T{nU-o) znC@_<7&n+K_l^(H(_Jbr!5j;V@p#4^ec`giaR#l6NEe`jx~KY}!vhmgmRjUKc|cN(QVy1;E$ zBXsmaknSD&FW@SWA@PtQ@i;3r{a;2$|LkUhj1}E^kXuo`F KFZma5sTAV_@d~H_ literal 0 HcmV?d00001