|
1 | 1 |
|
2 |
| -var should = require('should'); |
3 |
| -var angles = require('../angles.js'); |
| 2 | +var assert = require("assert"); |
| 3 | +var angles = require('angles'); |
4 | 4 |
|
5 | 5 | var tests = [
|
6 |
| - {m: 'between', p: [38, 13, 45], r: true, s: 360}, |
7 |
| - {m: 'between', p: [38, 40, 45], r: false, s: 360}, |
8 |
| - {m: 'between', p: [12, 5, 18], r: true, s: 60}, |
9 |
| - {m: 'between', p: [15, 2, 18], r: true, s: 12}, |
10 |
| - {m: 'between', p: [38 + 360 * 3, 13 - 360 * 2, 45 + 360], r: true, s: 360}, |
11 |
| - {m: 'toRad', p: [90], r: Math.PI / 2, s: 360}, |
12 |
| - {m: 'toDeg', p: [Math.PI], r: 180, s: Math.PI * 2}, |
13 |
| - {m: 'toRad', p: [180], r: Math.PI, s: 360}, |
14 |
| - {m: 'toDeg', p: [Math.PI], r: 180, s: Math.PI * 2}, |
15 |
| - {m: 'distance', p: [1, 359], r: 2, s: 360}, |
16 |
| - {m: 'distance', p: [358, 1], r: 3, s: 360}, |
17 |
| - {m: 'distance', p: [18, 25], r: 7, s: 360}, |
18 |
| - {m: 'distance', p: [1, 359], r: 2, s: 360}, |
19 |
| - {m: 'normalize', p: [55], r: 55, s: 360}, |
20 |
| - {m: 'normalize', p: [55 + 360], r: 55, s: 360}, |
21 |
| - {m: 'normalize', p: [-55], r: 305, s: 360}, |
22 |
| - {m: 'normalize', p: [-190], r: 170, s: 360}, |
23 |
| - {m: 'normalizeHalf', p: [55], r: 55, s: 360}, |
24 |
| - {m: 'normalizeHalf', p: [55 + 360], r: 55, s: 360}, |
25 |
| - {m: 'normalizeHalf', p: [-55], r: -55, s: 360}, |
26 |
| - {m: 'normalizeHalf', p: [-190], r: 170, s: 360}, |
27 |
| - {m: 'fromSlope', p: [[1, 1], [5, 10]], r: 66.03751102542182, s: 360}, |
28 |
| - {m: 'fromSlope', p: [[124, 8984], [234, 10322]], r: 85.30015415271286, s: 360}, |
29 |
| - {m: 'fromSlope', p: [[424, 8984], [234, 10322]], r: 98.08213603676147, s: 360}, |
30 |
| - {m: 'fromSlope', p: [[345, -78445], [3475890, 8495]], r: 1.4329425927144732, s: 360}, |
31 |
| - {m: 'shortestDirection', p: [50, 60], r: -1, s: 360}, |
32 |
| - {m: 'shortestDirection', p: [60, 50], r: 1, s: 360}, |
33 |
| - {m: 'shortestDirection', p: [50, 50], r: 0, s: 360}, |
34 |
| - {m: 'shortestDirection', p: [60 + 360 * 3, 50 + 360 * 7], r: 1, s: 360}, |
35 |
| - {m: 'shortestDirection', p: [60 - 360 * 3, 50 - 360 * 7], r: 1, s: 360}, |
36 |
| - {m: 'fromSinCos', p: [Math.sin(0.3), Math.cos(0.3)], r: 0.3, s: Math.PI * 2}, |
37 |
| - {m: 'fromSinCos', p: [Math.sin(-0.3), Math.cos(-0.3)], r: Math.PI * 2 - 0.3, s: Math.PI * 2}, |
38 |
| - {m: 'fromSinCos', p: [Math.sin(0.7), Math.cos(0.7)], r: 0.7, s: Math.PI * 2}, |
39 |
| - {m: 'fromSinCos', p: [Math.sin(-0.7), Math.cos(-0.7)], r: Math.PI * 2 - 0.7, s: Math.PI * 2}, |
40 |
| - {m: 'lerp', p: [45, 135, 0.4, -1], r: 81, s: 360}, |
41 |
| - {m: 'lerp', p: [0, Math.PI * 2, 0.5], r: 0, s: Math.PI * 2}, |
42 |
| - {m: 'lerp', p: [0, Math.PI, 0.5, -1], r: Math.PI * 0.5, s: Math.PI * 2}, |
43 |
| - {m: 'lerp', p: [45, 360 + 315, 0.5, -1], r: 180, s: 360}, |
44 |
| - {m: 'lerp', p: [45, 360 + 315, 0.5, 1], r: 0, s: 360}, |
45 |
| - {m: 'lerp', p: [45, 360 + 315, 0, -1], r: 45, s: 360}, |
46 |
| - {m: 'lerp', p: [45, 360 + 315, 1, -1], r: 315, s: 360}, |
47 |
| - {m: 'lerp', p: [30, 90, 0.25, -1], r: 45, s: 360}, |
48 |
| - {m: 'lerp', p: [30, 90, 0.25, 1], r: 315, s: 360}, |
49 |
| - {m: 'lerp', p: [300, 60, 0.25, -1], r: 330, s: 360}, |
50 |
| - {m: 'lerp', p: [300, 60, 0.25, 1], r: 240, s: 360}, |
51 |
| - {m: 'lerp', p: [-30, 30, 0.5, -1], r: 0, s: 360}, |
52 |
| - {m: 'lerp', p: [-30, 30, 0.5, 1], r: 180, s: 360}, |
53 |
| - {m: 'lerp', p: [-30, 30, 0.25, -1], r: 345, s: 360}, |
54 |
| - {m: 'lerp', p: [-30, 30, 0.25, 1], r: 255, s: 360}, |
55 |
| - {m: 'lerp', p: [10, 10, 0.5, -1], r: 10, s: 360}, |
56 |
| - {m: 'lerp', p: [10, 10, 0.5, 1], r: 10, s: 360}, |
| 6 | + { m: 'between', p: [38, 13, 45], r: true, s: 360 }, |
| 7 | + { m: 'between', p: [38, 40, 45], r: false, s: 360 }, |
| 8 | + { m: 'between', p: [12, 5, 18], r: true, s: 60 }, |
| 9 | + { m: 'between', p: [15, 2, 18], r: true, s: 12 }, |
| 10 | + { m: 'between', p: [38 + 360 * 3, 13 - 360 * 2, 45 + 360], r: true, s: 360 }, |
| 11 | + { m: 'toRad', p: [90], r: Math.PI / 2, s: 360 }, |
| 12 | + { m: 'toDeg', p: [Math.PI], r: 180, s: Math.PI * 2 }, |
| 13 | + { m: 'toRad', p: [180], r: Math.PI, s: 360 }, |
| 14 | + { m: 'toDeg', p: [Math.PI], r: 180, s: Math.PI * 2 }, |
| 15 | + { m: 'distance', p: [1, 359], r: 2, s: 360 }, |
| 16 | + { m: 'distance', p: [358, 1], r: 3, s: 360 }, |
| 17 | + { m: 'distance', p: [18, 25], r: 7, s: 360 }, |
| 18 | + { m: 'distance', p: [1, 359], r: 2, s: 360 }, |
| 19 | + { m: 'normalize', p: [55], r: 55, s: 360 }, |
| 20 | + { m: 'normalize', p: [55 + 360], r: 55, s: 360 }, |
| 21 | + { m: 'normalize', p: [-55], r: 305, s: 360 }, |
| 22 | + { m: 'normalize', p: [-190], r: 170, s: 360 }, |
| 23 | + { m: 'normalizeHalf', p: [55], r: 55, s: 360 }, |
| 24 | + { m: 'normalizeHalf', p: [55 + 360], r: 55, s: 360 }, |
| 25 | + { m: 'normalizeHalf', p: [-55], r: -55, s: 360 }, |
| 26 | + { m: 'normalizeHalf', p: [-190], r: 170, s: 360 }, |
| 27 | + { m: 'fromSlope', p: [[1, 1], [5, 10]], r: 66.03751102542182, s: 360 }, |
| 28 | + { m: 'fromSlope', p: [[124, 8984], [234, 10322]], r: 85.30015415271286, s: 360 }, |
| 29 | + { m: 'fromSlope', p: [[424, 8984], [234, 10322]], r: 98.08213603676147, s: 360 }, |
| 30 | + { m: 'fromSlope', p: [[345, -78445], [3475890, 8495]], r: 1.4329425927144732, s: 360 }, |
| 31 | + { m: 'shortestDirection', p: [50, 60], r: -1, s: 360 }, |
| 32 | + { m: 'shortestDirection', p: [60, 50], r: 1, s: 360 }, |
| 33 | + { m: 'shortestDirection', p: [50, 50], r: 0, s: 360 }, |
| 34 | + { m: 'shortestDirection', p: [60 + 360 * 3, 50 + 360 * 7], r: 1, s: 360 }, |
| 35 | + { m: 'shortestDirection', p: [60 - 360 * 3, 50 - 360 * 7], r: 1, s: 360 }, |
| 36 | + { m: 'fromSinCos', p: [Math.sin(0.3), Math.cos(0.3)], r: 0.3, s: Math.PI * 2 }, |
| 37 | + { m: 'fromSinCos', p: [Math.sin(-0.3), Math.cos(-0.3)], r: Math.PI * 2 - 0.3, s: Math.PI * 2 }, |
| 38 | + { m: 'fromSinCos', p: [Math.sin(0.7), Math.cos(0.7)], r: 0.7, s: Math.PI * 2 }, |
| 39 | + { m: 'fromSinCos', p: [Math.sin(-0.7), Math.cos(-0.7)], r: Math.PI * 2 - 0.7, s: Math.PI * 2 }, |
| 40 | + { m: 'lerp', p: [45, 135, 0.4, -1], r: 81, s: 360 }, |
| 41 | + { m: 'lerp', p: [0, Math.PI * 2, 0.5], r: 0, s: Math.PI * 2 }, |
| 42 | + { m: 'lerp', p: [0, Math.PI, 0.5, -1], r: Math.PI * 0.5, s: Math.PI * 2 }, |
| 43 | + { m: 'lerp', p: [45, 360 + 315, 0.5, -1], r: 180, s: 360 }, |
| 44 | + { m: 'lerp', p: [45, 360 + 315, 0.5, 1], r: 0, s: 360 }, |
| 45 | + { m: 'lerp', p: [45, 360 + 315, 0, -1], r: 45, s: 360 }, |
| 46 | + { m: 'lerp', p: [45, 360 + 315, 1, -1], r: 315, s: 360 }, |
| 47 | + { m: 'lerp', p: [30, 90, 0.25, -1], r: 45, s: 360 }, |
| 48 | + { m: 'lerp', p: [30, 90, 0.25, 1], r: 315, s: 360 }, |
| 49 | + { m: 'lerp', p: [300, 60, 0.25, -1], r: 330, s: 360 }, |
| 50 | + { m: 'lerp', p: [300, 60, 0.25, 1], r: 240, s: 360 }, |
| 51 | + { m: 'lerp', p: [-30, 30, 0.5, -1], r: 0, s: 360 }, |
| 52 | + { m: 'lerp', p: [-30, 30, 0.5, 1], r: 180, s: 360 }, |
| 53 | + { m: 'lerp', p: [-30, 30, 0.25, -1], r: 345, s: 360 }, |
| 54 | + { m: 'lerp', p: [-30, 30, 0.25, 1], r: 255, s: 360 }, |
| 55 | + { m: 'lerp', p: [10, 10, 0.5, -1], r: 10, s: 360 }, |
| 56 | + { m: 'lerp', p: [10, 10, 0.5, 1], r: 10, s: 360 }, |
57 | 57 | ];
|
58 | 58 |
|
59 | 59 | for (var i = 0; i <= 360; i += 2) {
|
@@ -89,30 +89,33 @@ for (var i = 0; i <= 360; i += 2) {
|
89 | 89 | dir = 'N';
|
90 | 90 | }
|
91 | 91 |
|
92 |
| - tests.push({m: 'quadrant', p: [ |
| 92 | + tests.push({ |
| 93 | + m: 'quadrant', p: [ |
93 | 94 | Math.cos(i / 180 * Math.PI),
|
94 | 95 | Math.sin(i / 180 * Math.PI)
|
95 |
| - ], r: kl, s: 360, label: 'Quadrant of angle ' + i}); |
| 96 | + ], r: kl, s: 360, label: 'Quadrant of angle ' + i |
| 97 | + }); |
96 | 98 |
|
97 |
| - tests.push({m: 'compass', p: [i], r: dir, s: 360, label: 'Direction of angle ' + i}); |
| 99 | + tests.push({ m: 'compass', p: [i], r: dir, s: 360, label: 'Direction of angle ' + i }); |
98 | 100 | }
|
99 | 101 |
|
100 |
| -describe('Angles', function() { |
| 102 | +describe('Angles', function () { |
101 | 103 |
|
102 | 104 | for (var i = 0; i < tests.length; i++) {
|
103 | 105 |
|
104 |
| - (function(i) { |
| 106 | + (function (i) { |
105 | 107 |
|
106 |
| - it('Should work with ' + (tests[i].label || "->" + tests[i].m + "(" + tests[i].p.join(", ") + ")"), function() { |
| 108 | + it('Should work with ' + (tests[i].label || "->" + tests[i].m + "(" + tests[i].p.join(", ") + ")"), function () { |
107 | 109 |
|
108 | 110 | var c = tests[i];
|
109 | 111 | angles.SCALE = c.s;
|
110 | 112 | if (typeof c.r !== 'number')
|
111 |
| - angles[c.m].apply(angles, c.p).should.be.equal(c.r); |
| 113 | + assert.equal(angles[c.m].apply(angles, c.p), c.r) |
112 | 114 | else
|
113 |
| - angles[c.m].apply(angles, c.p).should.be.approximately(c.r, 1e-15); |
| 115 | + assert(Math.abs(angles[c.m].apply(angles, c.p) - c.r) < 1e-14) |
114 | 116 | });
|
115 | 117 |
|
116 | 118 | })(i);
|
117 | 119 | }
|
118 | 120 | });
|
| 121 | + |
0 commit comments