finished ast implementation
[swftools.git] / lib / as3 / ok / assignments.as
1
2 package {
3     import flash.display.MovieClip
4
5     public class Main extends flash.display.MovieClip {
6
7         var count:int = 1;
8         var num:int = 18;
9
10         function assert(b:Boolean) {
11             if(b) {
12                 trace("ok "+count+"/"+num);
13             } else {
14                 trace("error "+count+"/"+num);
15             }
16             count = count + 1
17         }
18
19         function Main() {
20             var x:int = 0; 
21             var y:int = 0;
22
23             /* test that assignment expressions do indeed return the
24                right value */
25             x = (y=1);   assert(x==1 && y==1); //x=1;y=1;
26             x = (y++);   assert(x==1 && y==2); //x=1;y=2;
27             x = (y--);   assert(x==2 && y==1); //x=2;y=1;
28             x = (++y);   assert(x==2 && y==2); //x=2;y=2;
29             x = (--y);   assert(x==1 && y==1); //x=1;y=1;
30             x = (y += 1);assert(x==2 && y==2); //x=2;y=2;
31             x = (y -= 1);assert(x==1 && y==1); //x=1;y=1;
32             x = y = 5;   assert(x==5 && y==5); //x=5;y=5;
33
34             y = 5;
35             x = (y*=5);  assert(x==25 && y==25);
36             x = (y%=7);  assert(x==4 && y==4);
37             x = (y<<=1);  assert(x==8 && y==8);
38             x = (y>>=1);  assert(x==4 && y==4);
39             x = (y>>>=1);  assert(x==2 && y==2);
40             y = 2;
41             x = (y/=2);  assert(x==1 && y==1);
42             x = 0x55;
43             x |= 0x0f;   assert(x==0x5f);
44
45             x=3;y=3;
46             x ^= 7;
47             y = y^7;
48             assert(x==y);
49
50             x = 0x55;
51             y = 0x0f;
52             x &= y;
53             assert(x==0x05);
54
55             /* nested assignment expressions need different temporary
56                registers- make sure they don't collide */
57             var a:int = 1;
58             var b:int = 2;
59             var c:int = 3;
60             var d:int = 4;
61             a += b += c += d += 1
62             assert(a==11 && b==10 && c==8 && d==5);
63
64             trace("[exit]");
65         }
66     }
67 }
68