From 72f878bb9d6ce3b7fcdf049693cbcc2cdb19d3a7 Mon Sep 17 00:00:00 2001 From: David Wendt Date: Wed, 15 Dec 2021 20:31:12 -0500 Subject: [PATCH] tests: Add a test for the order of events surrounding `gotoAndStop` --- tests/tests/regression_tests.rs | 1 + .../EventWatcher.as | 37 ++++++ .../SymbolA.as | 9 ++ .../SymbolB.as | 9 ++ .../SymbolC.as | 7 ++ .../output.txt | 113 ++++++++++++++++++ .../movieclip_displayevents_stopped/test.fla | Bin 0 -> 7055 bytes .../movieclip_displayevents_stopped/test.swf | Bin 0 -> 2340 bytes 8 files changed, 176 insertions(+) create mode 100644 tests/tests/swfs/avm2/movieclip_displayevents_stopped/EventWatcher.as create mode 100644 tests/tests/swfs/avm2/movieclip_displayevents_stopped/SymbolA.as create mode 100644 tests/tests/swfs/avm2/movieclip_displayevents_stopped/SymbolB.as create mode 100644 tests/tests/swfs/avm2/movieclip_displayevents_stopped/SymbolC.as create mode 100644 tests/tests/swfs/avm2/movieclip_displayevents_stopped/output.txt create mode 100644 tests/tests/swfs/avm2/movieclip_displayevents_stopped/test.fla create mode 100644 tests/tests/swfs/avm2/movieclip_displayevents_stopped/test.swf diff --git a/tests/tests/regression_tests.rs b/tests/tests/regression_tests.rs index 6c2661193..d270fb98c 100644 --- a/tests/tests/regression_tests.rs +++ b/tests/tests/regression_tests.rs @@ -376,6 +376,7 @@ swf_tests! { (as3_movieclip_displayevents_dblhandler, "avm2/movieclip_displayevents_dblhandler", 4), (as3_movieclip_displayevents_looping, "avm2/movieclip_displayevents_looping", 5), (as3_movieclip_displayevents_timeline, "avm2/movieclip_displayevents_timeline", 5), + (as3_movieclip_displayevents_stopped, "avm2/movieclip_displayevents_stopped", 10), (as3_movieclip_displayevents, "avm2/movieclip_displayevents", 9), (as3_movieclip_drawrect, "avm2/movieclip_drawrect", 1), (as3_movieclip_goto_during_frame_script, "avm2/movieclip_goto_during_frame_script", 1), diff --git a/tests/tests/swfs/avm2/movieclip_displayevents_stopped/EventWatcher.as b/tests/tests/swfs/avm2/movieclip_displayevents_stopped/EventWatcher.as new file mode 100644 index 000000000..79e05fbf6 --- /dev/null +++ b/tests/tests/swfs/avm2/movieclip_displayevents_stopped/EventWatcher.as @@ -0,0 +1,37 @@ +package { + import flash.display.MovieClip; + import flash.events.Event; + + public class EventWatcher extends MovieClip { + public function EventWatcher() { + super(); + this.setup(); + } + + function trace_event(event: Event) { + trace(this.name + "(frame " + this.currentFrame + "):" + event); + } + + public function setup() { + this.addEventListener(Event.ENTER_FRAME, this.trace_event); + this.addEventListener(Event.EXIT_FRAME, this.trace_event); + this.addEventListener(Event.ADDED, this.trace_event); + this.addEventListener(Event.ADDED_TO_STAGE, this.trace_event); + this.addEventListener(Event.FRAME_CONSTRUCTED, this.trace_event); + this.addEventListener(Event.REMOVED, this.trace_event); + this.addEventListener(Event.REMOVED_FROM_STAGE, this.trace_event); + this.addEventListener(Event.RENDER, this.trace_event); + } + + public function destroy() { + this.removeEventListener(Event.ENTER_FRAME, this.trace_event); + this.removeEventListener(Event.EXIT_FRAME, this.trace_event); + this.removeEventListener(Event.ADDED, this.trace_event); + this.removeEventListener(Event.ADDED_TO_STAGE, this.trace_event); + this.removeEventListener(Event.FRAME_CONSTRUCTED, this.trace_event); + this.removeEventListener(Event.REMOVED, this.trace_event); + this.removeEventListener(Event.REMOVED_FROM_STAGE, this.trace_event); + this.removeEventListener(Event.RENDER, this.trace_event); + } + } +} \ No newline at end of file diff --git a/tests/tests/swfs/avm2/movieclip_displayevents_stopped/SymbolA.as b/tests/tests/swfs/avm2/movieclip_displayevents_stopped/SymbolA.as new file mode 100644 index 000000000..fa54d3a3c --- /dev/null +++ b/tests/tests/swfs/avm2/movieclip_displayevents_stopped/SymbolA.as @@ -0,0 +1,9 @@ +package { + public class SymbolA extends EventWatcher { + public function SymbolA() { + super(); + + this.name = "SymbolA"; + } + } +} diff --git a/tests/tests/swfs/avm2/movieclip_displayevents_stopped/SymbolB.as b/tests/tests/swfs/avm2/movieclip_displayevents_stopped/SymbolB.as new file mode 100644 index 000000000..5fb584375 --- /dev/null +++ b/tests/tests/swfs/avm2/movieclip_displayevents_stopped/SymbolB.as @@ -0,0 +1,9 @@ +package { + public class SymbolB extends EventWatcher { + public function SymbolB() { + super(); + + this.name = "SymbolB"; + } + } +} diff --git a/tests/tests/swfs/avm2/movieclip_displayevents_stopped/SymbolC.as b/tests/tests/swfs/avm2/movieclip_displayevents_stopped/SymbolC.as new file mode 100644 index 000000000..eafc4806d --- /dev/null +++ b/tests/tests/swfs/avm2/movieclip_displayevents_stopped/SymbolC.as @@ -0,0 +1,7 @@ +package { + public class SymbolC extends EventWatcher { + public function SymbolC() { + super(); + } + } +} diff --git a/tests/tests/swfs/avm2/movieclip_displayevents_stopped/output.txt b/tests/tests/swfs/avm2/movieclip_displayevents_stopped/output.txt new file mode 100644 index 000000000..6a37675d5 --- /dev/null +++ b/tests/tests/swfs/avm2/movieclip_displayevents_stopped/output.txt @@ -0,0 +1,113 @@ +//this.addChild(new SymbolA()); +SymbolA(frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="addedToStage" bubbles=false cancelable=false eventPhase=2] +//this.getChildAt(0).stop(); +SymbolA(frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +//this.addChild(new SymbolB()); +SymbolB(frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=2] +SymbolB(frame 1):[Event type="addedToStage" bubbles=false cancelable=false eventPhase=2] +//this.getChildAt(1).gotoAndStop(3); +SymbolB(frame 3):[Event type="added" bubbles=true cancelable=false eventPhase=3] +symbol_c(frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="added" bubbles=true cancelable=false eventPhase=3] +symbol_c(frame 1):[Event type="addedToStage" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 2):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 2):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 2):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 4):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 4):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 4):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 5):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 5):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 5):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 6):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2] +SymbolA(frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +SymbolB(frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +symbol_c(frame 6):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2] +///name +root1 +///currentFrame +10 +///isPlaying +false +///children: 2 +///name +SymbolA +///currentFrame +10 +///isPlaying +false +///children: 1 +///name +instance2 +///end children +///name +SymbolB +///currentFrame +10 +///isPlaying +false +///children: 2 +///name +instance4 +///name +symbol_c +///currentFrame +10 +///isPlaying +false +///children: 1 +///name +instance5 +///end children +///end children +///end children diff --git a/tests/tests/swfs/avm2/movieclip_displayevents_stopped/test.fla b/tests/tests/swfs/avm2/movieclip_displayevents_stopped/test.fla new file mode 100644 index 0000000000000000000000000000000000000000..ff961bdbe397121c266b1523ddb250a257939ef3 GIT binary patch literal 7055 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 S0RTYAj~4PygdqO|0R9hu8P-q$ literal 0 HcmV?d00001 diff --git a/tests/tests/swfs/avm2/movieclip_displayevents_stopped/test.swf b/tests/tests/swfs/avm2/movieclip_displayevents_stopped/test.swf new file mode 100644 index 0000000000000000000000000000000000000000..7aeeb742c97c43ee787fccf31ca166f28ec063e1 GIT binary patch literal 2340 zcmV+<3ETEVS5qsT5dZ*qoUK?*Y#YZFp4sJccSwq)C~`$nqJAt|mTZ}%eq&2cY>A?6 zxshp0vaPm~Ns3%bYx6JMm2DLT8u(DOMSBPeBqIw#_aCy zcDXm&LPMdmqoK>n#{A`LrQF7io5hn?<*D*$^u%ZcJ@nbZ7NdoXRFt}h5Zd)F=!)y} zW1oE3g03%*zV}Zj!Wfij7klXl&*s<9|9I?Q4|?yT_qWhT$s->n&v@lW-ptegC{O>J zLO;pl(I1XI{af`jIoLn@m+(ZXjCRQ(aAuGVeb;Km5CNSz;EyJdgOPn{0v_=@-(wRW z{|Wuz_VCcB%+DX$Zl9~n-}}{H@BK8S^!2?x{xSOd`p?FGng6v_`mprw>it{z`{hsG zi~RAOd+INagns|;KRkk*P63~#mJ@5_^w3J9j5Cm|xJy%3HVdnzd@^%jwh0)ymt{M) zS^3|$f7E-QoIL#JxzDY?xr9FNJ@L-FA9&(}pC&oiR>$n`kZ;NMf#>dT|8efjE^&jS z6>6lX#UVY^L+@1=JsEhoQJ79DI;KjBn#|?X6LV>~xF{E-yj+wbX+@DLYBDP;<$QWG zSz5gzWz@q5+t#(YO1dBoeI={0zOTd;eNK7@YTM$sq@sE)t!CDxN~94uz*JceOH`$B z`ig&_v06!Iq@=#?*|(rb>PFeSPnCt(mC~kbK|j-}h&h{h+Qic)j+rNu=qvMg)4LPsMMZ2-Ip~`us z#n^m0laUlfUX}B*x>+lTq})_X<=VkjDy53zG{GHJsua_C(=rFNQbn;DXiX{=Oxm@4 zX*Hdfzm-RG}q1=F^q5_$j zX)2qFDizF3RLIl0Cx)SL%?(g0u0a_EL$e{9`RQdb^Se{Xx9;nXiF$W<_v;rRWmO98 zSI!u7LT`~+si?x~NtLesMzckzT{@%6wJ9QR=4OcO1HbsR_`Aem<+zKtA(0dhe@*+s6RRoR-iNc2PQ3aenFt= zmj)UOeVKn~AiP#mOH;+{0u3`VFlleVPKcvdaUoNY%WCg)*c*}6sHp1;2iCN&-pya? z1gp_i@!5&xSSc$lS2l9FytGUMD(0x%&MC|3TZQ4}0`1HUbY|_N$!L-!tx#FYE?;>S zER&OsA8FyV()MP&?h@O&Q*&&|9|n((IzK z#!b!4#AlrPm|RRG7Z#_^#hdk|WGr!UVR8OSY%xB=&&THySK~7ta|Y+coMCL8k6)aL z&$m=0*oL$(&ZSqgd$WCEqmDf>6n&-a(|hbx3=O?f_Shaf6+^@0q9D3OkKZfeR=2;c z75jt!PJcJ&$5VVnmDzL&C5yB8-Y-;<)&la6&vOP6(3$ zZ{Sqm^}ri}(}6RADXxu61=_eER|*8VPVTKhC#Tr^98DZ!b-LWmtOvJvePXM>EzsT( z?Ck39In*1n9PT^PKXCL|)8KJVaPnaTIrkxqIgVo18HvI~hD^PMBIoc3jJDC5jv@;; zCOBg}COp&3vn@R5{WCg(6Y zkIC0Cc@q;KCP7RtVKR?NCni@h>A>U~CL$)SnD{ZzeVxbO;Ms5T>@v@u=h+p~&X8V) z#26B12w_QAvYP4XGnn|Z5GnPk(iYPEu@VnF@bb~Ku9-? zHj!Q(;qu75t>3Qct(V?g={3{1RMHnuZEVzn{wi=ZtTZ*q&IZ|K%pAiC7Q|UB;Ll;i z(91NBkwst$k6^%v*f6r$F|s=ZLV%)4AU4#Dos_~Q5Igef@tfdo+k!YNW`N3pffT#2 z!-5zOZn7ZOhg}wA5#fSOY^)YN2f&Dt^VS$zw3`eYU$>^@7J7WfCDxhQT&_M2mv% z;!dK9sh-hR+Ag%AL;zPUpuenVsf7^bYlk$!jiqiwy4%9eV%@FdLPy>0is^>IEyN~* zSa-Bg#|bS8b@6MIEnpINqH4QgOvMhBCya|s2F$2zlfz3K-S ze((4M3{kv0$*NV0R(Xh36|}?vsuEZuEMv2WV9l;YpW!sJR~;)ywcN46)h#VIxHXvB z+TKbWg_8nX8w)&dfvpR8+*;~*F0ADui6{dn1YpPn9tws{&_cn83A_}Hn!rcFmu-)O?DOLeiEwuJlZ7{e#S><8T1@tyb zUxYW)se|c-XzKMPCRhvM05|s@eX~Jd-bdfL{)SHPsnM5#{`7O{&n&TZdV0()d-Prm z^v<2i9z6$IUyZi{yi?ERonErkd0pUky5)rak!VHccQeT5_bB}SH^1}fFYbdbY|r^e K#{U6W!6Xk2kCe3l literal 0 HcmV?d00001