From f2f63d449efb4dc54cceb8ff221f4a75c672370c Mon Sep 17 00:00:00 2001 From: kramm Date: Tue, 6 Jan 2009 21:29:17 +0000 Subject: [PATCH] test case for finally, with more complicated finally blocks --- lib/as3/ok/finally2.as | 166 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 lib/as3/ok/finally2.as diff --git a/lib/as3/ok/finally2.as b/lib/as3/ok/finally2.as new file mode 100644 index 0000000..7b9592f --- /dev/null +++ b/lib/as3/ok/finally2.as @@ -0,0 +1,166 @@ +/* same as finally.as, only for larger finally blocks which require a + lookupswitch */ + +package { + import flash.display.MovieClip; + + public class Main extends flash.display.MovieClip { + var i=0; + function test_return():int { + try { + if(i==0) return 0; + if(i==1) return 2; + if(i==2) return 4; + if(i==3) return 7; + if(i==4) return 9; + trace("error"); + } finally { + i = 0; + trace("ok","1/11"); + } + trace("error"); + return 0; + } + + function test_break() { + do { + try { + if(i==0) break; + trace("error"); + if(i==3) break; + if(i==7) break; + if(i==9) break; + if(i==11) break; + trace("error"); + } finally { + i = 0; + trace("ok","2/11"); + } + trace("error"); + } while(true); + } + + function test_fallthrough() { + try { + var x = 1+1; + if(i==1) return; + if(i==2) return; + if(i==3) return; + if(i==4) return; + if(i==5) return; + } finally { + i = 0; + trace("ok","3/11"); + } + } + + function test_exception() { + try { + try { + if(i==0) + throw new Error(); + if(i==1) + return; + if(i==2) + return; + if(i==3) + throw new Object(); + trace("error"); + } finally { + i = 0; + trace("ok","4/11"); + } + trace("error"); + } catch(e:Error) { + i = 0; + trace("ok","5/11"); + } + } + + function test_exception2() { + var x:int = 0; + try { + if(i==1) + return; + if(i==0) + throw new Error(); + if(i==3) + throw new Error(); + trace("error"); + } catch(e:Error) { + x=1; + } finally { + new Array(1,2,3,4,5,6); + i = 0; + x*=2; + } + if(x==2) + trace("ok 6/11"); + } + + function fail1() { + try { + if(i==0) throw new Error(); + if(i==7) throw new Error(); + if(i==11) throw new Error(); + if(i==15) throw new Error(); + if(i==17) throw new Error(); + } finally { + new Array(1,2,3,4,5,6); + i = 0; + trace("ok","7/11"); + } + } + + function fail2() { + try { + fail1(); + } finally { + new Array(1,2,3,4,5,6); + i = 0; + trace("ok","8/11"); + } + } + + function test_exception3() { + try { + fail2(); + } catch(e:Error) { + trace("ok 9/11"); + } + } + + function test_empty() { + try { + } finally { + } + trace("ok 10/11"); + } + + function test_mixed():int { + while(true) { + try { + if(i==3) continue; + if(i==2) throw new Error(); + if(i==1) return 1; + if(i==0) break; + } finally { + trace("ok","11/11"); + i = 0; + } + } + return 0; + } + + function Main() { + test_return(); + test_break(); + test_fallthrough(); + test_exception(); + test_exception2(); + test_exception3(); + test_empty(); + test_mixed(); + } + } +} -- 1.7.10.4