source: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/math_test.html@ 29468

Last change on this file since 29468 was 29468, checked in by sjs49, 9 years ago

Initial commit for editor.method.ac for flag design

  • Property svn:executable set to *
File size: 3.6 KB
Line 
1<!DOCTYPE html>
2<html>
3<head>
4 <link rel='stylesheet' href='qunit/qunit.css' type='text/css'/>
5 <script src='../editor/lib/jquery.js'></script>
6 <script type='text/javascript' src='../editor/src/math.js'></script>
7 <script type='text/javascript' src='qunit/qunit.js'></script>
8 <script type='text/javascript'>
9 $(function() {
10 // log function
11 QUnit.log = function(result, message) {
12 if (window.console && window.console.log) {
13 window.console.log(result +' :: '+ message);
14 }
15 };
16
17 var svgns = 'http://www.w3.org/2000/svg';
18 var svg = document.createElementNS(svgns, 'svg');
19
20 module('svgedit.math');
21
22 test('Test svgedit.math package', function() {
23 expect(7);
24
25 ok(svgedit.math);
26 ok(svgedit.math.transformPoint);
27 ok(svgedit.math.isIdentity);
28 ok(svgedit.math.matrixMultiply);
29 equals(typeof svgedit.math.transformPoint, typeof function(){});
30 equals(typeof svgedit.math.isIdentity, typeof function(){});
31 equals(typeof svgedit.math.matrixMultiply, typeof function(){});
32 });
33
34 test('Test svgedit.math.transformPoint() function', function() {
35 expect(6);
36 var transformPoint = svgedit.math.transformPoint;
37
38 var m = svg.createSVGMatrix();
39 m.a = 1; m.b = 0;
40 m.c = 0; m.d = 1;
41 m.e = 0; m.f = 0;
42 var pt = transformPoint(100, 200, m);
43 equals(pt.x, 100);
44 equals(pt.y, 200);
45
46 m.e = 300; m.f = 400;
47 pt = transformPoint(100, 200, m);
48 equals(pt.x, 400);
49 equals(pt.y, 600);
50
51 m.a = 0.5; m.b = 0.75;
52 m.c = 1.25; m.d = 2;
53 pt = transformPoint(100, 200, m);
54 equals(pt.x, 100 * m.a + 200 * m.c + m.e);
55 equals(pt.y, 100 * m.b + 200 * m.d + m.f);
56 });
57
58 test('Test svgedit.math.isIdentity() function', function() {
59 expect(2);
60
61 ok(svgedit.math.isIdentity(svg.createSVGMatrix()));
62
63 var m = svg.createSVGMatrix();
64 m.a = 1; m.b = 0;
65 m.c = 0; m.d = 1;
66 m.e = 0; m.f = 0;
67 ok(svgedit.math.isIdentity(m));
68 });
69
70 test('Test svgedit.math.matrixMultiply() function', function() {
71 expect(5);
72 var mult = svgedit.math.matrixMultiply;
73 var isIdentity = svgedit.math.isIdentity;
74
75 // translate there and back
76 var tr_1 = svg.createSVGMatrix().translate(100,50),
77 tr_2 = svg.createSVGMatrix().translate(-90,0),
78 tr_3 = svg.createSVGMatrix().translate(-10,-50),
79 I = mult(tr_1,tr_2,tr_3);
80 ok(isIdentity(I), 'Expected identity matrix when translating there and back');
81
82 // rotate there and back
83 // TODO: currently Mozilla fails this when rotating back at -50 and then -40 degrees
84 // (b and c are *almost* zero, but not zero)
85 var rot_there = svg.createSVGMatrix().rotate(90),
86 rot_back = svg.createSVGMatrix().rotate(-90); // TODO: set this to -50
87 rot_back_more = svg.createSVGMatrix().rotate(0); // TODO: set this to -40
88 I = mult(rot_there, rot_back, rot_back_more);
89 ok(isIdentity(I), 'Expected identity matrix when rotating there and back');
90
91 // scale up and down
92 var scale_up = svg.createSVGMatrix().scale(4),
93 scale_down = svg.createSVGMatrix().scaleNonUniform(0.25,1);
94 scale_down_more = svg.createSVGMatrix().scaleNonUniform(1,0.25);
95 I = mult(scale_up, scale_down, scale_down_more);
96 ok(isIdentity(I), 'Expected identity matrix when scaling up and down');
97
98 // test multiplication with its inverse
99 I = mult(rot_there, rot_there.inverse());
100 ok(isIdentity(I), 'Expected identity matrix when multiplying a matrix by its inverse');
101 I = mult(rot_there.inverse(), rot_there);
102 ok(isIdentity(I), 'Expected identity matrix when multiplying a matrix by its inverse');
103 });
104 });
105 </script>
106</head>
107<body>
108 <h1 id='qunit-header'>Unit Tests for math.js</h1>
109 <h2 id='qunit-banner'></h2>
110 <h2 id='qunit-userAgent'></h2>
111 <ol id='qunit-tests'>
112 </ol>
113</body>
114</html>
Note: See TracBrowser for help on using the repository browser.