-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.js
155 lines (141 loc) · 4.51 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
var mat = require('./index');
mat.verbose = false;
describe('geom',function(){
describe('mat',function(){
describe('make',function(){
it('make()',function(){
mat.make().should.eql([1,0,0,0,1,0,0,0,1])
mat.make().should.be.length(9)
})
it('make(1)',function(){
mat.make(1).should.eql([1,0,0,0,1,0,0,0,1])
})
it('make(1,2)',function(){
mat.make(1,2).should.eql([1,2,0,0,1,0,0,0,1])
})
it('make(1,2,3)',function(){
mat.make(1,2,3).should.eql([1,2,0,3,1,0,0,0,1])
})
it('make(1,2,3,4)',function(){
mat.make(1,2,3,4).should.eql([1,2,0,3,4,0,0,0,1])
})
it('make(1,2,3,4,5)',function(){
mat.make(1,2,3,4,5).should.eql([1,2,5,3,4,0,0,0,1])
})
it('make(1,2,3,4,5,6)',function(){
mat.make(1,2,3,4,5,6).should.eql([1,2,5,3,4,6,0,0,1])
})
it('make(0,0,0,0,0,0)',function(){
mat.make(0,0,0,0,0,0).should.eql([0,0,0,0,0,0,0,0,1])
})
})
var allocated = []
describe('alloc',function(){
// TODO test to make sure that this alloc()
// is really not GC-friendly.
it('alloc()',function(){
var m = mat.alloc()
m.should.eql([1,0,0,0,1,0,0,0,1])
})
it('alloc() * 10000',function(){
var a = mat._allocated.length - mat._unallocated.length;
for(var i=0; i<10000; i++){
var m = mat.alloc()
m.should.eql([1,0,0,0,1,0,0,0,1])
allocated.push(m);
}
var b = mat._allocated.length - mat._unallocated.length;
(b-a).should.equal(allocated.length)
})
})
describe('free',function(){
it('free(allocated)',function(){
var a = mat._allocated.length - mat._unallocated.length;
var l = allocated.length;
while(allocated.length)
mat.free(allocated.pop())
var b = mat._allocated.length - mat._unallocated.length;
(b-a).should.equal(-l)
})
it('free(m)',function(){
var m = mat.alloc();
m.should.eql([1,0,0,0,1,0,0,0,1])
mat.free(m);
})
})
describe('ident',function(){
var a = mat.make()
it('ident()',function(){
mat.ident().should.not.equal(a)
mat.ident().should.eql([1,0,0,0,1,0,0,0,1])
mat.ident().should.eql(mat.make())
})
it('ident(a)',function(){
mat.ident(a).should.equal(a)
mat.ident(a).should.eql([1,0,0,0,1,0,0,0,1])
})
after(function(){
mat.free(a)
})
})
describe('mul',function(){
var a = mat.make(1,2)
, b = mat.make(1,0,3,4)
, m = mat.make(1,0,0,0,5,6)
it('mul(a,b)',function(){
mat.mul(a,b).should.not.equal(a)
mat.mul(a,b).should.not.equal(b)
mat.mul(a,b).should.not.equal(m)
})
it('mul(a,b,m)',function(){
mat.mul(a,b,m).should.not.equal(a)
mat.mul(a,b,m).should.not.equal(b)
mat.mul(a,b,m).should.equal(m)
})
it('mul(a,a,m)')
it('mul(a,a)')
it('mul(a,b,a)')
after(function(){
mat.free(a)
mat.free(b)
mat.free(m)
})
})
describe('rotate',function(){
it('rotate(theta)')
it('rotate(theta,m)')
})
describe('translate',function(){
it('translate(x,y)',function(){
mat.translate(1,0).should.eql([1,0,1,0,1,0,0,0,1])
mat.translate(1,1).should.eql([1,0,1,0,1,1,0,0,1])
mat.translate(0,1).should.eql([1,0,0,0,1,1,0,0,1])
mat.translate(-1,0).should.eql([1,0,-1,0,1,0,0,0,1])
mat.translate(-1,-1).should.eql([1,0,-1,0,1,-1,0,0,1])
mat.translate(0,-1).should.eql([1,0,0,0,1,-1,0,0,1])
mat.translate(-1,1).should.eql([1,0,-1,0,1,1,0,0,1])
mat.translate(1,-1).should.eql([1,0,1,0,1,-1,0,0,1])
})
it('translate(x,y,m)',function(){
var m = mat.make()
mat.translate(1,0,m).should.eql([1,0,1,0,1,0,0,0,1])
mat.translate(1,1,m).should.eql([1,0,2,0,1,1,0,0,1])
mat.translate(0,1,m).should.eql([1,0,2,0,1,2,0,0,1])
mat.translate(-1,0,m).should.eql([1,0,1,0,1,2,0,0,1])
mat.translate(-1,-1,m).should.eql([1,0,0,0,1,1,0,0,1])
mat.translate(0,-1,m).should.eql([1,0,0,0,1,0,0,0,1])
mat.translate(-1,1,m).should.eql([1,0,-1,0,1,1,0,0,1])
mat.translate(1,-1,m).should.eql([1,0,0,0,1,0,0,0,1])
})
})
describe('scale',function(){
it('scale(x,y)')
it('scale(x,y,m)')
})
describe('inv',function(){
it('inv()')
it('inv(m)')
it('inv(inv(m))')
})
})
})