1
4
from pyeigen import Vector4f
3
v1 = Vector4f(1, 2, 3, 4)
4
v2 = Vector4f(5, 6, 7, 8)
8
class TestVector4fCreate(unittest.TestCase):
9
def test_constructor_default(self):
11
self.assertEqual(v.x, 0)
12
self.assertEqual(v.y, 0)
13
self.assertEqual(v.z, 0)
14
self.assertEqual(v.w, 0)
16
def test_constructor_arguments(self):
17
v = Vector4f(1, 2, 3, 4)
18
self.assertEqual(v.x, 1)
19
self.assertEqual(v.y, 2)
20
self.assertEqual(v.z, 3)
21
self.assertEqual(v.w, 4)
25
self.assertEqual(v.x, 0)
26
self.assertEqual(v.y, 0)
27
self.assertEqual(v.z, 0)
28
self.assertEqual(v.w, 0)
32
self.assertEqual(v.x, 1)
33
self.assertEqual(v.y, 1)
34
self.assertEqual(v.z, 1)
35
self.assertEqual(v.w, 1)
37
def test_constant(self):
38
v = Vector4f.constant(2)
39
self.assertEqual(v.x, 2)
40
self.assertEqual(v.y, 2)
41
self.assertEqual(v.z, 2)
42
self.assertEqual(v.w, 2)
44
def test_random(self):
46
self.assert_(v.x > -1)
48
self.assert_(v.y > -1)
50
self.assert_(v.z > -1)
52
self.assert_(v.w > -1)
55
def test_unit_x(self):
57
self.assertEqual(v.x, 1)
58
self.assertEqual(v.y, 0)
59
self.assertEqual(v.z, 0)
60
self.assertEqual(v.w, 0)
62
def test_unit_y(self):
64
self.assertEqual(v.x, 0)
65
self.assertEqual(v.y, 1)
66
self.assertEqual(v.z, 0)
67
self.assertEqual(v.w, 0)
69
def test_unit_z(self):
71
self.assertEqual(v.x, 0)
72
self.assertEqual(v.y, 0)
73
self.assertEqual(v.z, 1)
74
self.assertEqual(v.w, 0)
76
def test_unit_w(self):
78
self.assertEqual(v.x, 0)
79
self.assertEqual(v.y, 0)
80
self.assertEqual(v.z, 0)
81
self.assertEqual(v.w, 1)
83
class TestVector4f(unittest.TestCase):
85
self.v1 = Vector4f(-1, -2, -3, -4)
86
self.v2 = Vector4f(-5, -6, -7, -8)
89
self.v1.set(1, 2, 3, 4)
90
self.assertEqual(self.v1.x, 1)
91
self.assertEqual(self.v1.y, 2)
92
self.assertEqual(self.v1.z, 3)
93
self.assertEqual(self.v1.w, 4)
95
def test_set_zero(self):
97
self.assertEqual(self.v1.x, 0)
98
self.assertEqual(self.v1.y, 0)
99
self.assertEqual(self.v1.z, 0)
100
self.assertEqual(self.v1.w, 0)
102
def test_set_ones(self):
104
self.assertEqual(self.v1.x, 1)
105
self.assertEqual(self.v1.y, 1)
106
self.assertEqual(self.v1.z, 1)
107
self.assertEqual(self.v1.w, 1)
109
def test_set_constant(self):
110
self.v1.set_constant(2)
111
self.assertEqual(self.v1.x, 2)
112
self.assertEqual(self.v1.y, 2)
113
self.assertEqual(self.v1.z, 2)
114
self.assertEqual(self.v1.w, 2)
116
def test_set_random(self):
118
self.assert_(self.v1.x > -1)
119
self.assert_(self.v1.x < 1)
120
self.assert_(self.v1.y > -1)
121
self.assert_(self.v1.y < 1)
122
self.assert_(self.v1.z > -1)
123
self.assert_(self.v1.z < 1)
124
self.assert_(self.v1.w > -1)
125
self.assert_(self.v1.w < 1)
128
v = Vector4f(1, 0, 0, 0)
129
self.assertAlmostEqual(v.norm, 1.0, TEST_PRECISION)
130
v = Vector4f(0, 1, 0, 0)
131
self.assertAlmostEqual(v.norm, 1.0, TEST_PRECISION)
132
v = Vector4f(0, 0, 1, 0)
133
self.assertAlmostEqual(v.norm, 1.0, TEST_PRECISION)
134
v = Vector4f(0, 0, 0, 1)
135
self.assertAlmostEqual(v.norm, 1.0, TEST_PRECISION)
136
v = Vector4f(1, 1, 1, 1)
137
self.assertAlmostEqual(v.norm, math.sqrt(4), TEST_PRECISION)
139
def test_norm_sq(self):
140
v = Vector4f(1, 0, 0, 0)
141
self.assertAlmostEqual(v.norm_sq, 1.0, TEST_PRECISION)
142
v = Vector4f(0, 1, 0, 0)
143
self.assertAlmostEqual(v.norm_sq, 1.0, TEST_PRECISION)
144
v = Vector4f(0, 0, 1, 0)
145
self.assertAlmostEqual(v.norm_sq, 1.0, TEST_PRECISION)
146
v = Vector4f(0, 0, 0, 1)
147
self.assertAlmostEqual(v.norm_sq, 1.0, TEST_PRECISION)
148
v = Vector4f(1, 1, 1, 1)
149
self.assertAlmostEqual(v.norm_sq, 4, TEST_PRECISION)
152
v1 = Vector4f(0, 0, 0, 0)
153
v2 = Vector4f(1, 1, 1, 1)
154
self.assertEqual(v1.dot(v1), 0)
155
self.assertEqual(v1.dot(v2), 0)
156
self.assertEqual(v2.dot(v2), 4)
158
def test_normalized(self):
159
self.assertAlmostEqual(self.v1.normalized.norm, 1.0, TEST_PRECISION)
160
self.assertAlmostEqual(self.v2.normalized.norm, 1.0, TEST_PRECISION)
162
def test_transpose(self):
163
rv1 = self.v1.transpose
164
self.assertEqual(self.v1.x, rv1.x)
165
self.assertEqual(self.v1.y, rv1.y)
166
self.assertEqual(self.v1.z, rv1.z)
167
self.assertEqual(self.v1.w, rv1.w)
169
def test_normalize(self):
172
self.assertAlmostEqual(self.v1.norm, 1.0, TEST_PRECISION)
173
self.assertAlmostEqual(self.v2.norm, 1.0, TEST_PRECISION)
176
v3 = self.v1 + self.v2
177
self.assertEqual(v3.x, -6)
178
self.assertEqual(v3.y, -8)
179
self.assertEqual(v3.z, -10)
180
self.assertEqual(v3.w, -12)
183
v3 = self.v1 - self.v2
184
self.assertEqual(v3.x, 4)
185
self.assertEqual(v3.y, 4)
186
self.assertEqual(v3.z, 4)
187
self.assertEqual(v3.w, 4)
191
self.assertEqual(v3.x, -2)
192
self.assertEqual(v3.y, -4)
193
self.assertEqual(v3.z, -6)
194
self.assertEqual(v3.w, -8)
198
self.assertEqual(v3.x, -0.5)
199
self.assertEqual(v3.y, -1)
200
self.assertEqual(v3.z, -1.5)
201
self.assertEqual(v3.w, -2)
203
def test_negative(self):
205
self.assertEqual(v3.x, 1)
206
self.assertEqual(v3.y, 2)
207
self.assertEqual(v3.z, 3)
208
self.assertEqual(v3.w, 4)
210
self.assertEqual(v4.x, -1)
211
self.assertEqual(v4.y, -2)
212
self.assertEqual(v4.z, -3)
213
self.assertEqual(v4.w, -4)
215
def test_inplace_add(self):
217
self.assertEqual(self.v1.x, -6)
218
self.assertEqual(self.v1.y, -8)
219
self.assertEqual(self.v1.z, -10)
220
self.assertEqual(self.v1.w, -12)
222
def test_inplace_sub(self):
224
self.assertEqual(self.v1.x, 4)
225
self.assertEqual(self.v1.y, 4)
226
self.assertEqual(self.v1.z, 4)
227
self.assertEqual(self.v1.w, 4)
229
def test_inplace_mul(self):
231
self.assertEqual(self.v1.x, -2)
232
self.assertEqual(self.v1.y, -4)
233
self.assertEqual(self.v1.z, -6)
234
self.assertEqual(self.v1.w, -8)
236
def test_inplace_div(self):
238
self.assertEqual(self.v1.x, -0.5)
239
self.assertEqual(self.v1.y, -1)
240
self.assertEqual(self.v1.z, -1.5)
241
self.assertEqual(self.v1.w, -2)
244
self.assertEqual(len(self.v1), 4)
246
def test_get_item(self):
247
self.assertEqual(self.v1[0], self.v1.x)
248
self.assertEqual(self.v1[1], self.v1.y)
249
self.assertEqual(self.v1[2], self.v1.z)
250
self.assertEqual(self.v1[3], self.v1.w)
252
def test_get_slice(self):
253
x, y, z, w = self.v1[:]
254
self.assertEqual(x, self.v1.x)
255
self.assertEqual(y, self.v1.y)
256
self.assertEqual(z, self.v1.z)
257
self.assertEqual(w, self.v1.w)
259
def test_set_item(self):
264
self.assertEqual(self.v1.x, 1)
265
self.assertEqual(self.v1.y, 2)
266
self.assertEqual(self.v1.z, 3)
267
self.assertEqual(self.v1.w, 4)
269
def test_set_slice(self):
270
self.v1[:] = 1, 2, 3, 4
271
self.assertEqual(self.v1.x, 1)
272
self.assertEqual(self.v1.y, 2)
273
self.assertEqual(self.v1.z, 3)
274
self.assertEqual(self.v1.w, 4)
277
self.assert_(self.v1 == self.v1)
278
self.assertFalse(self.v1 == self.v2)
281
self.assertFalse(self.v1 != self.v1)
282
self.assert_(self.v1 != self.v2)
284
if __name__ == '__main__':