Skip to content

Commit 87ed1a2

Browse files
authored
Merge pull request #4 from stackgl/add-tests
Add tests
2 parents 7fcbb2c + 896fedb commit 87ed1a2

File tree

2 files changed

+228
-2
lines changed

2 files changed

+228
-2
lines changed

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@
1313
],
1414
"dependencies": {},
1515
"devDependencies": {
16-
"dox": "git://github.com/hughsk/dox#api-context"
16+
"dox": "git://github.com/hughsk/dox#api-context",
17+
"tape": "^4.8.0"
1718
},
1819
"scripts": {
19-
"get-docs": "cat *.js | dox --api"
20+
"get-docs": "cat *.js | dox --api",
21+
"test": "node test/index.js"
2022
},
2123
"keywords": [
2224
"gl-matrix",

test/index.js

Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
var test = require('tape')
2+
var vec3 = require('../')
3+
var EPSILON = 0.000001
4+
5+
test('add', function (t) {
6+
var result = vec3.add([], [0, 1, 2], [3, 4, 5])
7+
t.deepEqual(result, [3, 5, 7])
8+
t.end()
9+
})
10+
11+
test('angle', function (t) {
12+
var result = vec3.angle([3, 4, 5], [6, 7, 8])
13+
t.ok(Math.abs(0.08523986989116927 - result) < EPSILON)
14+
t.end()
15+
})
16+
17+
test('clone', function (t) {
18+
var result = vec3.clone([5, 6, 7])
19+
t.deepEqual(result, [5, 6, 7])
20+
t.end()
21+
})
22+
23+
test('copy', function (t) {
24+
var result = vec3.copy([], [5, 6, 7])
25+
t.deepEqual(result, [5, 6, 7])
26+
t.end()
27+
})
28+
29+
test('create', function (t) {
30+
var result = vec3.create()
31+
t.deepEqual(result, [0, 0, 0])
32+
t.end()
33+
})
34+
35+
test('cross', function (t) {
36+
var result = vec3.cross([], [3, 4, 5], [6, 7, 8])
37+
t.deepEqual(result, [-3, 6, -3])
38+
t.end()
39+
})
40+
41+
test('distance', function (t) {
42+
var result = vec3.distance([1, 2, 3], [4, 6, 7])
43+
t.ok(Math.abs(result - 6.4031242374328485) < EPSILON)
44+
t.end()
45+
})
46+
47+
test('divide', function (t) {
48+
var result = vec3.divide([], [8, 4, 2], [2, 1, 0.5])
49+
t.deepEqual(result, [4, 4, 4])
50+
t.end()
51+
})
52+
53+
test('dot', function (t) {
54+
var result = vec3.dot([3, 4, 5], [6, 7, 8])
55+
t.deepEqual(result, 86)
56+
t.end()
57+
})
58+
59+
test('forEach', function (t) {
60+
var a = [null,
61+
0, 1, 2, null,
62+
3, 4, 5, null
63+
]
64+
65+
function addConstant (out, a, val) {
66+
out[0] = a[0] + val
67+
out[1] = a[1] + val
68+
out[2] = a[2] + val
69+
return out
70+
}
71+
72+
vec3.forEach(a, 4, 1, 2, addConstant, 7)
73+
74+
t.deepEqual(a, [null, 7, 8, 9, null, 10, 11, 12, null])
75+
t.end()
76+
})
77+
78+
test('fromValues', function (t) {
79+
var result = vec3.fromValues(2, 3, 4)
80+
t.deepEqual(result, [2, 3, 4])
81+
t.end()
82+
})
83+
84+
test('inverse', function (t) {
85+
var result = vec3.inverse([], [2, 4, 8])
86+
t.deepEqual(result, [0.5, 0.25, 0.125])
87+
t.end()
88+
})
89+
90+
test('length', function (t) {
91+
var result = vec3.length([3, 4, 5])
92+
t.ok(Math.abs(result - 7.0710678118654755) < EPSILON)
93+
t.end()
94+
})
95+
96+
test('lerp', function (t) {
97+
var result = vec3.lerp([], [3, 4, 5], [6, 7, 8], 0.25)
98+
t.deepEqual(result, [3.75, 4.75, 5.75])
99+
t.end()
100+
})
101+
102+
test('max', function (t) {
103+
var result = vec3.max([], [3, 7, 2], [5, 6, 4])
104+
t.deepEqual(result, [5, 7, 4])
105+
t.end()
106+
})
107+
108+
test('min', function (t) {
109+
var result = vec3.min([], [3, 7, 8], [5, 6, 2])
110+
t.deepEqual(result, [3, 6, 2])
111+
t.end()
112+
})
113+
114+
test('multiply', function (t) {
115+
var result = vec3.multiply([], [3, 4, 5], [6, 7, 8])
116+
t.deepEqual(result, [18, 28, 40])
117+
t.end()
118+
})
119+
120+
test('negate', function (t) {
121+
var result = vec3.negate([], [3, 4, 5])
122+
t.deepEqual(result, [-3, -4, -5])
123+
t.end()
124+
})
125+
126+
test('normalize', function (t) {
127+
var result = vec3.normalize([], [3, 4, 5])
128+
t.ok(Math.abs(result[0] - 0.4242640687119285) < EPSILON)
129+
t.ok(Math.abs(result[1] - 0.565685424949238) < EPSILON)
130+
t.ok(Math.abs(result[2] - 0.7071067811865475) < EPSILON)
131+
t.end()
132+
})
133+
134+
test('random', function (t) {
135+
var result = vec3.random([], 5)
136+
for (var i = 0; i < 10; i++) {
137+
var len = Math.sqrt(result[0] * result[0] + result[1] * result[1] + result[2] * result[2])
138+
t.ok(Math.abs(5 - len) <= EPSILON)
139+
}
140+
t.end()
141+
})
142+
143+
test('rotateX', function (t) {
144+
var result = vec3.rotateX([], [3, 4, 5], [6, 7, 8], Math.PI)
145+
t.deepEqual(result, [3, 10, 11])
146+
t.end()
147+
})
148+
149+
test('rotateY', function (t) {
150+
var result = vec3.rotateY([], [3, 4, 5], [6, 7, 8], Math.PI)
151+
t.deepEqual(result, [9, 4, 11])
152+
t.end()
153+
})
154+
155+
test('rotateZ', function (t) {
156+
var result = vec3.rotateZ([], [3, 4, 5], [6, 7, 8], Math.PI)
157+
t.deepEqual(result, [9, 10, 5])
158+
t.end()
159+
})
160+
161+
test('scale', function (t) {
162+
var result = vec3.scale([], [3, 4, 5], 2)
163+
t.deepEqual(result, [6, 8, 10])
164+
t.end()
165+
})
166+
167+
test('scaleAndAdd', function (t) {
168+
var result = vec3.scaleAndAdd([], [3, 4, 5], [6, 7, 8], 2)
169+
t.deepEqual(result, [15, 18, 21])
170+
t.end()
171+
})
172+
173+
test('set', function (t) {
174+
var result = vec3.set([], 3, 4, 5)
175+
t.deepEqual(result, [3, 4, 5])
176+
t.end()
177+
})
178+
179+
test('squaredDistance', function (t) {
180+
var result = vec3.squaredDistance([3, 4, 5], [6, 7, 8])
181+
t.deepEqual(result, 27)
182+
t.end()
183+
})
184+
185+
test('squaredLength', function (t) {
186+
var result = vec3.squaredLength([3, 4, 5])
187+
t.deepEqual(result, 50)
188+
t.end()
189+
})
190+
191+
test('subtract', function (t) {
192+
var result = vec3.subtract([], [3, 4, 5], [6, 7, 8])
193+
t.deepEqual(result, [-3, -3, -3])
194+
t.end()
195+
})
196+
197+
test('transformMat3', function (t) {
198+
var result = vec3.transformMat3([], [3, 4, 5], [
199+
5, 6, 7,
200+
8, 9, 10,
201+
11, 12, 13
202+
])
203+
t.deepEqual(result, [102, 114, 126])
204+
t.end()
205+
})
206+
207+
test('transformMat4', function (t) {
208+
var result = vec3.transformMat4([], [3, 4, 5], [
209+
5, 6, 7, 8,
210+
9, 10, 11, 12,
211+
13, 14, 15, 16,
212+
17, 18, 19, 20
213+
])
214+
t.ok(Math.abs(0.7732558139534884 - result[0]) < EPSILON)
215+
t.ok(Math.abs(0.8488372093023255 - result[1]) < EPSILON)
216+
t.ok(Math.abs(0.9244186046511628 - result[2]) < EPSILON)
217+
t.end()
218+
})
219+
220+
test('transformQuat', function (t) {
221+
var result = vec3.transformQuat([], [3, 4, 5], [6, 7, 8, 9])
222+
t.deepEqual(result, [882, 824, 1090])
223+
t.end()
224+
})

0 commit comments

Comments
 (0)