source: Dev/branches/rest-dojo-ui/client/dojox/gfx/tests/matrix.js @ 256

Last change on this file since 256 was 256, checked in by hendrikvanantwerpen, 13 years ago

Reworked project structure based on REST interaction and Dojo library. As
soon as this is stable, the old jQueryUI branch can be removed (it's
kept for reference).

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