From 01236b5f4d388dbb0b95171613cdfd8eaabbccca Mon Sep 17 00:00:00 2001 From: kramm Date: Tue, 23 Dec 2008 18:53:27 +0000 Subject: [PATCH 1/1] assignment expression nesting tests --- lib/as3/ok/assignments.as | 54 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 lib/as3/ok/assignments.as diff --git a/lib/as3/ok/assignments.as b/lib/as3/ok/assignments.as new file mode 100644 index 0000000..fa02305 --- /dev/null +++ b/lib/as3/ok/assignments.as @@ -0,0 +1,54 @@ + +package { + import flash.display.MovieClip + + public class Main extends flash.display.MovieClip { + + var count:int = 1; + var num:int = 15; + + function assert(b:Boolean) { + if(b) { + trace("ok "+count+"/"+num); + } else { + trace("error "+count+"/"+num); + } + count = count + 1 + } + + function Main() { + var x:int = 0; + var y:int = 0; + + /* test that assignment expressions do indeed return the + right value */ + x = (y=1); assert(x==1 && y==1); + x = (y++); assert(x==1 && y==2); + x = (y--); assert(x==2 && y==1); + x = (++y); assert(x==2 && y==2); + x = (--y); assert(x==1 && y==1); + x = (y += 1);assert(x==2 && y==2); + x = (y -= 1);assert(x==1 && y==1); + x = y = 5; assert(x==5 && y==5); + + y = 5; + x = (y*=5); assert(x==25 && y==25); + x = (y%=7); assert(x==4 && y==4); + x = (y<<=1); assert(x==8 && y==8); + x = (y>>=1); assert(x==4 && y==4); + x = (y>>>=1); assert(x==2 && y==2); + y = 2; + x = (y/=2); assert(x==1 && y==1); + + /* nested assignment expressions need different temporary + registers- make sure they don't collide */ + var a:int = 1; + var b:int = 2; + var c:int = 3; + var d:int = 4; + a += (b += (c += (d += 1))) + assert(a==11 && b==10 && c==8 && d==5); + } + } +} + -- 1.7.10.4