]> git.pond.sub.org Git - eow/blob - static/dojo-release-1.1.1/dojox/gfx/tests/matrix.js
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojox / gfx / tests / matrix.js
1 if(!dojo._hasResource["dojox.gfx.tests.matrix"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
2 dojo._hasResource["dojox.gfx.tests.matrix"] = true;
3 dojo.provide("dojox.gfx.tests.matrix");
4 dojo.require("dojox.gfx.matrix");
5
6 (function(){
7         var m = dojox.gfx.matrix;
8         var eq = function(t, a, b){ t.t(2 * Math.abs(a - b) / ((a < 1 && b < 1) ? 1 : a + b) < 1e-6); };
9         tests.register("dojox.gfx.tests.matrix", [
10                 function IdentityTest(t){
11                         var a = new m.Matrix2D();
12                         eq(t, a.xx, 1);
13                         eq(t, a.yy, 1);
14                         eq(t, a.xy, 0);
15                         eq(t, a.yx, 0);
16                         eq(t, a.dx, 0);
17                         eq(t, a.dy, 0);
18                 },
19                 function Rot30gTest(t){
20                         var a = m.rotateg(30);
21                         eq(t, a.xx, a.yy);
22                         eq(t, a.xy, -a.yx);
23                         eq(t, a.dx, 0);
24                         eq(t, a.dy, 0);
25                         eq(t, a.yx, 0.5);
26                         t.t(a.xy < 0);
27                         t.t(a.yx > 0);
28                 },
29                 function Rot45gTest(t){
30                         var a = m.rotateg(45);
31                         eq(t, a.xx, a.yy);
32                         eq(t, a.xy, -a.yx);
33                         eq(t, a.dx, 0);
34                         eq(t, a.dy, 0);
35                         eq(t, a.xx, a.yx);
36                         eq(t, a.yy, -a.xy);
37                 },
38                 function Rot90gTest(t){
39                         var a = m.rotateg(90);
40                         eq(t, a.xx, a.yy);
41                         eq(t, a.xy, -a.yx);
42                         eq(t, a.dx, 0);
43                         eq(t, a.dy, 0);
44                         eq(t, a.xx, 0);
45                         eq(t, a.yx, 1);
46                 },
47                 function CombineIdentitiesTest(t){
48                         var a = m.normalize([new m.Matrix2D(), new m.Matrix2D(), new m.Matrix2D()]);
49                         eq(t, a.xx, 1);
50                         eq(t, a.yy, 1);
51                         eq(t, a.xy, 0);
52                         eq(t, a.yx, 0);
53                         eq(t, a.dx, 0);
54                         eq(t, a.dy, 0);
55                 },
56                 function CombineExclusiveTest(t){
57                         var a = m.normalize([m.rotateg(30), m.rotateg(-30)]);
58                         eq(t, a.xx, 1);
59                         eq(t, a.yy, 1);
60                         eq(t, a.xy, 0);
61                         eq(t, a.yx, 0);
62                         eq(t, a.dx, 0);
63                         eq(t, a.dy, 0);
64                 },
65                 function CombineInvertedTest(t){
66                         var a = m.normalize([m.rotateg(30), m.invert(m.rotateg(30))]);
67                         eq(t, a.xx, 1);
68                         eq(t, a.yy, 1);
69                         eq(t, a.xy, 0);
70                         eq(t, a.yx, 0);
71                         eq(t, a.dx, 0);
72                         eq(t, a.dy, 0);
73                 },
74                 function Rot90gAtTest(t){
75                         var a = m.rotategAt(90, 10, 10);
76                         eq(t, a.xx, a.yy);
77                         eq(t, a.xy, -a.yx);
78                         eq(t, a.dx, 20);
79                         eq(t, a.dy, 0);
80                         eq(t, a.xx, 0);
81                         eq(t, a.yx, 1);
82                 },
83                 function MultPointTest1(t){
84                         var b = m.multiplyPoint(m.rotategAt(90, 10, 10), 10, 10);
85                         eq(t, b.x, 10);
86                         eq(t, b.y, 10);
87                 },
88                 function MultPointTest2(t){
89                         var b = m.multiplyPoint(m.rotategAt(90, 10, 10), {x: 10, y: 5});
90                         eq(t, b.x, 15);
91                         eq(t, b.y, 10);
92                 },
93                 function MultPointTest3(t){
94                         var b = m.multiplyPoint(m.rotategAt(90, 10, 10), 10, 15);
95                         eq(t, b.x, 5);
96                         eq(t, b.y, 10);
97                 },
98                 function ScaleTest1(t){
99                         var a = m.normalize([m.scale(2, 1), m.invert(m.rotateg(45))]);
100                         eq(t, a.xx, 2 * a.yy);
101                         eq(t, a.xy, -2 * a.yx);
102                         eq(t, a.dx, 0);
103                         eq(t, a.dy, 0);
104                         eq(t, a.xx, a.xy);
105                         eq(t, a.yy, -a.yx);
106                 },
107                 function ScaleTest2(t){
108                         var a = m.normalize([m.scale(1, 2), m.invert(m.rotateg(45))]);
109                         eq(t, 2 * a.xx, a.yy);
110                         eq(t, 2 * a.xy, -a.yx);
111                         eq(t, a.dx, 0);
112                         eq(t, a.dy, 0);
113                         eq(t, a.xx, a.xy);
114                         eq(t, a.yy, -a.yx);
115                 },
116                 function ScaleTest3(t){
117                         var a = m.normalize([m.rotateg(45), m.scale(2, 1)]);
118                         eq(t, a.xx, 2 * a.yy);
119                         eq(t, a.yx, -2 * a.xy);
120                         eq(t, a.dx, 0);
121                         eq(t, a.dy, 0);
122                         eq(t, a.xx, a.yx);
123                         eq(t, a.yy, -a.xy);
124                 },
125                 function ScaleTest4(t){
126                         var a = m.normalize([m.rotateg(45), m.scale(1, 2)]);
127                         eq(t, 2 * a.xx, a.yy);
128                         eq(t, 2 * a.yx, -a.xy);
129                         eq(t, a.dx, 0);
130                         eq(t, a.dy, 0);
131                         eq(t, a.xx, a.yx);
132                         eq(t, a.yy, -a.xy);
133                 },
134                 function ScaleTest5(t){
135                         var a = m.normalize([m.rotategAt(45, 100, 100), m.scale(2)]);
136                         eq(t, a.xx, a.yy);
137                         eq(t, a.xy, -a.yx);
138                         eq(t, a.xx, a.yx);
139                         eq(t, a.yy, -a.xy);
140                         eq(t, a.dx, 100);
141                         t.t(a.dy < 0);
142                         var b = m.normalize([m.scale(2), m.rotategAt(45, 100, 100)]);
143                         eq(t, b.xx, b.yy);
144                         eq(t, b.xy, -b.yx);
145                         eq(t, b.xx, b.yx);
146                         eq(t, b.yy, -b.xy);
147                         eq(t, b.dx, 200);
148                         t.t(b.dy < 0);
149                         eq(t, a.xx, b.xx);
150                         eq(t, a.xy, b.xy);
151                         eq(t, a.yx, b.yx);
152                         eq(t, a.yy, b.yy);
153                         eq(t, 2 * a.dx, b.dx);
154                         eq(t, 2 * a.dy, b.dy);
155                         var c = m.normalize([m.rotateg(45), m.scale(2)]);
156                         eq(t, c.xx, c.yy);
157                         eq(t, c.xy, -c.yx);
158                         eq(t, c.xx, c.yx);
159                         eq(t, c.yy, -c.xy);
160                         eq(t, c.dx, 0);
161                         eq(t, c.dy, 0);
162                         var d = m.normalize([m.scale(2), m.rotateg(45)]);
163                         eq(t, d.xx, d.yy);
164                         eq(t, d.xy, -d.yx);
165                         eq(t, d.xx, d.yx);
166                         eq(t, d.yy, -d.xy);
167                         eq(t, d.dx, 0);
168                         eq(t, d.dy, 0);
169                         eq(t, a.xx, c.xx);
170                         eq(t, a.xy, c.xy);
171                         eq(t, a.yx, c.yx);
172                         eq(t, a.yy, c.yy);
173                         eq(t, a.xx, d.xx);
174                         eq(t, a.xy, d.xy);
175                         eq(t, a.yx, d.yx);
176                         eq(t, a.yy, d.yy);
177                 },
178                 function ScaleTest6(t){
179                         var a = m.normalize(6);
180                         eq(t, a.xx, 6);
181                         eq(t, a.yy, 6);
182                         eq(t, a.xy, 0);
183                         eq(t, a.yx, 0);
184                         eq(t, a.dx, 0);
185                         eq(t, a.dy, 0);
186                 },
187                 function ScaleTest7(t){
188                         var a = m.normalize([2, m.scale(2, 1)]);
189                         eq(t, a.xx, 4);
190                         eq(t, a.yy, 2);
191                         eq(t, a.xy, 0);
192                         eq(t, a.yx, 0);
193                         eq(t, a.dx, 0);
194                         eq(t, a.dy, 0);
195                 },
196                 function TranslateTest(t){
197                         var a = m.normalize({dx: 100, dy: 200});
198                         eq(t, a.xx, 1);
199                         eq(t, a.yy, 1);
200                         eq(t, a.xy, 0);
201                         eq(t, a.yx, 0);
202                         eq(t, a.dx, 100);
203                         eq(t, a.dy, 200);
204                 },
205                 function ReflectTest1(t){
206                         var b = m.multiplyPoint(m.reflect(1, 1), 1, 0);
207                         eq(t, b.x, 0);
208                         eq(t, b.y, 1);
209                 },
210                 function ReflectTest2(t){
211                         var b = m.multiplyPoint(m.reflect(1, 1), 0, 1);
212                         eq(t, b.x, 1);
213                         eq(t, b.y, 0);
214                 },
215                 function ProjectTest1(t){
216                         var b = m.multiplyPoint(m.project(1, 1), 1, 0);
217                         eq(t, b.x, 0.5);
218                         eq(t, b.y, 0.5);
219                 },
220                 function ProjectTest2(t){
221                         var b = m.multiplyPoint(m.project(1, 1), 0, 1);
222                         eq(t, b.x, 0.5);
223                         eq(t, b.y, 0.5);
224                 }
225         ]);
226 })();
227
228 }