Subversion Repositories Applications.papyrus

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2150 mathias 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
}