Update with current status
[gnash.git] / testsuite / actionscript.all / HitTest.as
blobfeab329143a6c620569c37f2808631b7a82122e7
1 //
2 // Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
3 //
4 // This program is free software; you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation; either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License
15 // along with this program; if not, write to the Free Software
16 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 // This counts calls to toString() and valueOf() regularly to check that native
19 // methods are correctly applied. So it saves much effort if new tests are added
20 // after the end of the present ones.
22 rcsid="HitTest.as";
24 #include "check.as"
26 #if OUTPUT_VERSION > 5
28 createEmptyMovieClip("a", 5);
29 a.beginFill(0xff00ff);
30 a.moveTo(20, 20);
31 a.lineTo(20, 60);
32 a.lineTo(60, 60);
33 a.lineTo(60, 20);
34 a.lineTo(20, 20);
36 check_equals(a.hitTest(19, 19, false), false);
37 check_equals(a.hitTest(20, 20, false), true);
38 check_equals(a.hitTest(21, 21, false), true);
39 check_equals(a.hitTest(25, 25, false), true);
40 check_equals(a.hitTest(60, 60, false), true);
41 check_equals(a.hitTest(61, 61, false), false);
43 check_equals(a.hitTest(19, 19, true), false);
44 #if OUTPUT_VERSION < 8
45 check_equals(a.hitTest(20, 20, true), true);
46 #else
47 xcheck_equals(a.hitTest(20, 20, true), false);
48 #endif
49 check_equals(a.hitTest(21, 21, true), true);
50 check_equals(a.hitTest(25, 25, true), true);
51 check_equals(a.hitTest(60, 60, true), false);
52 check_equals(a.hitTest(61, 61, true), false);
54 _x = 30;
55 check_equals(a.hitTest(25, 25, false), true);
56 check_equals(a.hitTest(85, 25, false), false);
57 xcheck_equals(a.hitTest(25, 25, true), true);
58 xcheck_equals(a.hitTest(85, 25, true), false);
59 _x = 0;
61 backup = _width;
63 _width = 50;
64 check_equals(a.hitTest(25, 25, false), true);
65 check_equals(a.hitTest(41, 25, false), true);
66 check_equals(a.hitTest(25, 25, true), false);
67 check_equals(a.hitTest(41, 25, true), false);
68 _width = backup;
70 _xscale = 50;
71 check_equals(a.hitTest(25, 25, false), true);
72 check_equals(a.hitTest(41, 25, false), true);
73 xcheck_equals(a.hitTest(25, 25, true), false);
74 #if OUTPUT_VERSION < 8
75 xcheck_equals(a.hitTest(41, 25, true), true);
76 #else
77 check_equals(a.hitTest(41, 25, true), false);
78 #endif
79 _xscale = 100;
81 b = a.createEmptyMovieClip("b", 10);
82 b.beginFill(0x0000ff);
83 b.moveTo(100, 100);
84 b.lineTo(150, 100);
85 b.lineTo(150, 150);
86 b.lineTo(100, 150);
87 b.lineTo(100, 100);
89 check_equals(b.hitTest(99, 99, false), false);
90 check_equals(b.hitTest(100, 100, false), true);
91 check_equals(b.hitTest(101, 101, false), true);
92 check_equals(b.hitTest(120, 120, false), true);
93 check_equals(b.hitTest(110, 110, false), true);
94 check_equals(b.hitTest(151, 150, false), false);
95 check_equals(b.hitTest(151, 151, false), false);
96 check_equals(b.hitTest(151, 152, false), false);
98 check_equals(b.hitTest(99, 99, true), false);
99 xcheck_equals(b.hitTest(100, 100, true), false);
100 check_equals(b.hitTest(101, 101, true), true);
101 check_equals(b.hitTest(120, 120, true), true);
102 check_equals(b.hitTest(110, 110, true), true);
103 check_equals(b.hitTest(151, 150, true), false);
104 check_equals(b.hitTest(151, 151, true), false);
105 check_equals(b.hitTest(151, 152, true), false);
107 /// Altering a's properties changes the hitTest for b.
108 a._y = 100;
110 /// Test where it was before
111 check_equals(b.hitTest(99, 99, false), false);
112 check_equals(b.hitTest(100, 100, false), false);
113 check_equals(b.hitTest(101, 101, false), false);
114 check_equals(b.hitTest(120, 120, false), false);
115 check_equals(b.hitTest(110, 110, false), false);
116 check_equals(b.hitTest(151, 150, false), false);
118 check_equals(b.hitTest(99, 99, true), false);
119 check_equals(b.hitTest(100, 100, true), false);
120 check_equals(b.hitTest(101, 101, true), false);
121 check_equals(b.hitTest(120, 120, true), false);
122 check_equals(b.hitTest(110, 110, true), false);
123 check_equals(b.hitTest(151, 150, true), false);
125 /// Test new position
126 check_equals(b.hitTest(99, 199, false), false);
127 check_equals(b.hitTest(100, 200, false), true);
128 check_equals(b.hitTest(101, 201, false), true);
129 check_equals(b.hitTest(120, 220, false), true);
130 check_equals(b.hitTest(110, 210, false), true);
131 check_equals(b.hitTest(151, 250, false), false);
132 check_equals(b.hitTest(151, 251, false), false);
133 check_equals(b.hitTest(151, 252, false), false);
135 /// (Where is it?!) Checking every pixel in +/- _width by +/- _height
136 /// comes up with "true" in the shifted area, but doing it directly
137 /// returns false.
138 check_equals(b.hitTest(99, 199, true), false);
139 xcheck_equals(b.hitTest(100, 200, true), false);
140 xcheck_equals(b.hitTest(101, 201, true), false);
141 xcheck_equals(b.hitTest(120, 220, true), false);
142 xcheck_equals(b.hitTest(110, 210, true), false);
143 check_equals(b.hitTest(151, 250, true), false);
144 check_equals(b.hitTest(151, 251, true), false);
145 check_equals(b.hitTest(151, 252, true), false);
147 /// Changing _root's matrix does nothing.
148 _y = -100;
149 _xscale = 0.5;
151 check_equals(b.hitTest(99, 99, false), false);
152 check_equals(b.hitTest(100, 100, false), false);
153 check_equals(b.hitTest(101, 101, false), false);
154 check_equals(b.hitTest(120, 120, false), false);
155 check_equals(b.hitTest(110, 110, false), false);
156 check_equals(b.hitTest(151, 150, false), false);
158 check_equals(b.hitTest(99, 199, false), false);
159 check_equals(b.hitTest(100, 200, false), true);
160 check_equals(b.hitTest(101, 201, false), true);
161 check_equals(b.hitTest(120, 220, false), true);
162 check_equals(b.hitTest(110, 210, false), true);
163 xcheck_equals(b.hitTest(151, 250, false), true);
164 check_equals(b.hitTest(151, 251, false), false);
165 check_equals(b.hitTest(151, 252, false), false);
167 totals(82);
169 #endif