7 |
http://www.opensource.org/licenses/osl-3.0.php""" |
http://www.opensource.org/licenses/osl-3.0.php""" |
8 |
import sys |
import sys |
9 |
import unittest |
import unittest |
10 |
|
import math |
11 |
import numarray |
import numarray |
12 |
from esys.pycad import * |
from esys.pycad import * |
13 |
|
|
24 |
PYCAD_TEST_MESH_PATH=PYCAD_TEST_DATA+"/data_meshes/" |
PYCAD_TEST_MESH_PATH=PYCAD_TEST_DATA+"/data_meshes/" |
25 |
PYCAD_WORKDIR_PATH=PYCAD_WORKDIR+"/" |
PYCAD_WORKDIR_PATH=PYCAD_WORKDIR+"/" |
26 |
|
|
27 |
class Test_PyCAD(unittest.TestCase): |
def _cross(x, y): |
28 |
|
return numarray.array([x[1] * y[2] - x[2] * y[1], x[2] * y[0] - x[0] * y[2], x[0] * y[1] - x[1] * y[0]]) |
29 |
|
|
30 |
|
|
31 |
|
class Test_PyCAD_Transformations(unittest.TestCase): |
32 |
ABS_TOL=1.e-8 |
ABS_TOL=1.e-8 |
33 |
def __distance(self,x,y): |
def __distance(self,x,y): |
34 |
return math.sqrt(numarray.dot(x-y,x-y)) |
return math.sqrt(numarray.dot(x-y,x-y)) |
213 |
s=t([1,2,3]) |
s=t([1,2,3]) |
214 |
self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
215 |
self.failUnless(self.__distance(s,numarray.array([3.,2,3]))<self.ABS_TOL,"s is wrong.") |
self.failUnless(self.__distance(s,numarray.array([3.,2,3]))<self.ABS_TOL,"s is wrong.") |
216 |
|
def test_Reflection_y_offset0(self): |
217 |
|
t=Reflection([0.,1.,0.]) |
218 |
|
s0=t([1,0,0]) |
219 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
220 |
|
self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
221 |
|
s1=t([0,1,0]) |
222 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
223 |
|
self.failUnless(self.__distance(s1,numarray.array([0,-1,0]))<self.ABS_TOL,"s1 is wrong.") |
224 |
|
s2=t([0,0,1]) |
225 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
226 |
|
self.failUnless(self.__distance(s2,numarray.array([0,0,1]))<self.ABS_TOL,"s2 is wrong.") |
227 |
|
s=t([1,2,3]) |
228 |
|
self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
229 |
|
self.failUnless(self.__distance(s,numarray.array([1.,-2,3]))<self.ABS_TOL,"s is wrong.") |
230 |
|
def test_Reflection_y_offset2(self): |
231 |
|
t=Reflection([0.,-2.,0.],offset=-4) |
232 |
|
s0=t([1,0,0]) |
233 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
234 |
|
self.failUnless(self.__distance(s0,numarray.array([1.,4,0.]))<self.ABS_TOL,"s0 is wrong.") |
235 |
|
s1=t([0,1,0]) |
236 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
237 |
|
self.failUnless(self.__distance(s1,numarray.array([0,3,0]))<self.ABS_TOL,"s1 is wrong.") |
238 |
|
s2=t([0,0,1]) |
239 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
240 |
|
self.failUnless(self.__distance(s2,numarray.array([0,4,1]))<self.ABS_TOL,"s2 is wrong.") |
241 |
|
s=t([1,2,3]) |
242 |
|
self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
243 |
|
self.failUnless(self.__distance(s,numarray.array([1.,2,3]))<self.ABS_TOL,"s is wrong.") |
244 |
|
def test_Reflection_y_offset2_vector(self): |
245 |
|
t=Reflection([0.,1.,0.],offset=[0,2,0]) |
246 |
|
s0=t([1,0,0]) |
247 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
248 |
|
self.failUnless(self.__distance(s0,numarray.array([1.,4,0.]))<self.ABS_TOL,"s0 is wrong.") |
249 |
|
s1=t([0,1,0]) |
250 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
251 |
|
self.failUnless(self.__distance(s1,numarray.array([0,3,0]))<self.ABS_TOL,"s1 is wrong.") |
252 |
|
s2=t([0,0,1]) |
253 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
254 |
|
self.failUnless(self.__distance(s2,numarray.array([0,4,1]))<self.ABS_TOL,"s2 is wrong.") |
255 |
|
s=t([1,2,3]) |
256 |
|
self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
257 |
|
self.failUnless(self.__distance(s,numarray.array([1.,2,3]))<self.ABS_TOL,"s is wrong.") |
258 |
|
def test_Reflection_z_offset0(self): |
259 |
|
t=Reflection([0.,0.,1.]) |
260 |
|
s0=t([1,0,0]) |
261 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
262 |
|
self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
263 |
|
s1=t([0,1,0]) |
264 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
265 |
|
self.failUnless(self.__distance(s1,numarray.array([0,1,0]))<self.ABS_TOL,"s1 is wrong.") |
266 |
|
s2=t([0,0,1]) |
267 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
268 |
|
self.failUnless(self.__distance(s2,numarray.array([0,0,-1]))<self.ABS_TOL,"s2 is wrong.") |
269 |
|
s=t([1,2,3]) |
270 |
|
self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
271 |
|
self.failUnless(self.__distance(s,numarray.array([1.,2,-3]))<self.ABS_TOL,"s is wrong.") |
272 |
|
def test_Reflection_z_offset2(self): |
273 |
|
t=Reflection([0.,0.,-2.],offset=-4) |
274 |
|
s0=t([1,0,0]) |
275 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
276 |
|
self.failUnless(self.__distance(s0,numarray.array([1.,0,4.]))<self.ABS_TOL,"s0 is wrong.") |
277 |
|
s1=t([0,1,0]) |
278 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
279 |
|
self.failUnless(self.__distance(s1,numarray.array([0,1,4]))<self.ABS_TOL,"s1 is wrong.") |
280 |
|
s2=t([0,0,1]) |
281 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
282 |
|
self.failUnless(self.__distance(s2,numarray.array([0,0,3]))<self.ABS_TOL,"s2 is wrong.") |
283 |
|
s=t([1,2,3]) |
284 |
|
self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
285 |
|
self.failUnless(self.__distance(s,numarray.array([1.,2,1]))<self.ABS_TOL,"s is wrong.") |
286 |
|
def test_Reflection_z_offset2_vector(self): |
287 |
|
t=Reflection([0.,0.,1.],offset=[0,0,2]) |
288 |
|
s0=t([1,0,0]) |
289 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
290 |
|
self.failUnless(self.__distance(s0,numarray.array([1.,0,4.]))<self.ABS_TOL,"s0 is wrong.") |
291 |
|
s1=t([0,1,0]) |
292 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
293 |
|
self.failUnless(self.__distance(s1,numarray.array([0,1,4]))<self.ABS_TOL,"s1 is wrong.") |
294 |
|
s2=t([0,0,1]) |
295 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
296 |
|
self.failUnless(self.__distance(s2,numarray.array([0,0,3]))<self.ABS_TOL,"s2 is wrong.") |
297 |
|
s=t([1,2,3]) |
298 |
|
self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
299 |
|
self.failUnless(self.__distance(s,numarray.array([1.,2,1]))<self.ABS_TOL,"s is wrong.") |
300 |
|
def test_Rotatation_x_90_0(self): |
301 |
|
t=Rotatation(point1=[1.,0.,0.],angle=90*DEG) |
302 |
|
s0=t([1,0,0]) |
303 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
304 |
|
self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
305 |
|
s1=t([0,1,0]) |
306 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
307 |
|
self.failUnless(self.__distance(s1,numarray.array([0.,0,1.]))<self.ABS_TOL,"s1 is wrong.") |
308 |
|
s2=t([0,0,1]) |
309 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
310 |
|
self.failUnless(self.__distance(s2,numarray.array([0.,-1.,0.]))<self.ABS_TOL,"s2 is wrong.") |
311 |
|
def test_Rotatation_x_30_0(self): |
312 |
|
t=Rotatation(point1=[1.,0.,0.],angle=30*DEG) |
313 |
|
s0=t([1,0,0]) |
314 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
315 |
|
self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
316 |
|
s1=t([0,1,0]) |
317 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
318 |
|
self.failUnless(abs(numarray.dot(s1,s1)-1.)<self.ABS_TOL,"s1 length is wrong.") |
319 |
|
self.failUnless(abs(s1[1]-math.cos(30*DEG))<self.ABS_TOL,"s1 angle is wrong.") |
320 |
|
self.failUnless(numarray.dot(_cross(s1,[0,1,0]),numarray.array([1.,0.,0.]))<0.,"s1 has wrong orientation.") |
321 |
|
s2=t([0,0,1]) |
322 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
323 |
|
self.failUnless(abs(numarray.dot(s2,s2)-1.)<self.ABS_TOL,"s2 length is wrong.") |
324 |
|
self.failUnless(abs(s2[2]-math.cos(30*DEG))<self.ABS_TOL,"s2 angle is wrong.") |
325 |
|
self.failUnless(numarray.dot(_cross(s2,[0,0,1]),numarray.array([1.,0.,0.]))<0.,"s2 has wrong orientation.") |
326 |
|
def test_Rotatation_x_330_0(self): |
327 |
|
t=Rotatation(point1=[1.,0.,0.],angle=330*DEG) |
328 |
|
s0=t([1,0,0]) |
329 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
330 |
|
self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
331 |
|
s1=t([0,1,0]) |
332 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
333 |
|
self.failUnless(abs(numarray.dot(s1,s1)-1.)<self.ABS_TOL,"s1 length is wrong.") |
334 |
|
self.failUnless(abs(s1[1]-math.cos(330*DEG))<self.ABS_TOL,"s1 angle is wrong.") |
335 |
|
self.failUnless(numarray.dot(_cross(s1,[0,1,0]),numarray.array([1.,0.,0.]))>0.,"s1 has wrong orientation.") |
336 |
|
s2=t([0,0,1]) |
337 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
338 |
|
self.failUnless(abs(numarray.dot(s2,s2)-1.)<self.ABS_TOL,"s2 length is wrong.") |
339 |
|
self.failUnless(abs(s2[2]-math.cos(330*DEG))<self.ABS_TOL,"s2 angle is wrong.") |
340 |
|
self.failUnless(numarray.dot(_cross(s2,[0,0,1]),numarray.array([1.,0.,0.]))>0.,"s2 has wrong orientation.") |
341 |
|
def test_Rotatation_x_90(self): |
342 |
|
t=Rotatation(point1=[1.,0.,0.],point0=[2.,0.,0.],angle=90*DEG) |
343 |
|
s0=t([1,0,0]) |
344 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
345 |
|
self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
346 |
|
s1=t([0,1,0]) |
347 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
348 |
|
self.failUnless(self.__distance(s1,numarray.array([0.,0,-1.]))<self.ABS_TOL,"s1 is wrong.") |
349 |
|
s2=t([0,0,1]) |
350 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
351 |
|
self.failUnless(self.__distance(s2,numarray.array([0.,1.,0.]))<self.ABS_TOL,"s2 is wrong.") |
352 |
|
def test_Rotatation_x_30(self): |
353 |
|
t=Rotatation(point1=[1.,0.,0.],point0=[2.,0.,0.],angle=30*DEG) |
354 |
|
s0=t([1,0,0]) |
355 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
356 |
|
self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
357 |
|
s1=t([0,1,0]) |
358 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
359 |
|
self.failUnless(abs(numarray.dot(s1,s1)-1.)<self.ABS_TOL,"s1 length is wrong.") |
360 |
|
self.failUnless(abs(s1[1]-math.cos(30*DEG))<self.ABS_TOL,"s1 angle is wrong.") |
361 |
|
self.failUnless(numarray.dot(_cross(s1,[0,1,0]),numarray.array([-1.,0.,0.]))<0.,"s1 has wrong orientation.") |
362 |
|
s2=t([0,0,1]) |
363 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
364 |
|
self.failUnless(abs(numarray.dot(s2,s2)-1.)<self.ABS_TOL,"s2 length is wrong.") |
365 |
|
self.failUnless(abs(s2[2]-math.cos(30*DEG))<self.ABS_TOL,"s2 angle is wrong.") |
366 |
|
self.failUnless(numarray.dot(_cross(s2,[0,0,1]),numarray.array([-1.,0.,0.]))<0.,"s2 has wrong orientation.") |
367 |
|
def test_Rotatation_x_330(self): |
368 |
|
t=Rotatation(point1=[1.,0.,0.],point0=[2.,0.,0.],angle=330*DEG) |
369 |
|
s0=t([1,0,0]) |
370 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
371 |
|
self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
372 |
|
s1=t([0,1,0]) |
373 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
374 |
|
self.failUnless(abs(numarray.dot(s1,s1)-1.)<self.ABS_TOL,"s1 length is wrong.") |
375 |
|
self.failUnless(abs(s1[1]-math.cos(330*DEG))<self.ABS_TOL,"s1 angle is wrong.") |
376 |
|
self.failUnless(numarray.dot(_cross(s1,[0,1,0]),numarray.array([-1.,0.,0.]))>0.,"s1 has wrong orientation.") |
377 |
|
s2=t([0,0,1]) |
378 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
379 |
|
self.failUnless(abs(numarray.dot(s2,s2)-1.)<self.ABS_TOL,"s2 length is wrong.") |
380 |
|
self.failUnless(abs(s2[2]-math.cos(330*DEG))<self.ABS_TOL,"s2 angle is wrong.") |
381 |
|
self.failUnless(numarray.dot(_cross(s2,[0,0,1]),numarray.array([-1.,0.,0.]))>0.,"s2 has wrong orientation.") |
382 |
|
def test_Rotatation_y_90_0(self): |
383 |
|
t=Rotatation(point1=[0.,1.,0.],angle=90*DEG) |
384 |
|
s0=t([1,0,0]) |
385 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
386 |
|
self.failUnless(self.__distance(s0,numarray.array([0.,0,-1.]))<self.ABS_TOL,"s0 is wrong.") |
387 |
|
s1=t([0,5,0]) |
388 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
389 |
|
self.failUnless(self.__distance(s1,numarray.array([0.,5,0.]))<self.ABS_TOL,"s1 is wrong.") |
390 |
|
s2=t([0,0,1]) |
391 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
392 |
|
self.failUnless(self.__distance(s2,numarray.array([1,0.,0.]))<self.ABS_TOL,"s2 is wrong.") |
393 |
|
def test_Rotatation_y_30_0(self): |
394 |
|
t=Rotatation(point1=[0.,1.,0.],angle=30*DEG) |
395 |
|
s0=t([1,0,0]) |
396 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
397 |
|
self.failUnless(abs(numarray.dot(s0,s0)-1.)<self.ABS_TOL,"s0 length is wrong.") |
398 |
|
self.failUnless(abs(s0[0]-math.cos(30*DEG))<self.ABS_TOL,"s0 angle is wrong.") |
399 |
|
self.failUnless(numarray.dot(_cross(s0,[1,0,0]),numarray.array([0.,1.,0.]))<0.,"s0 has wrong orientation.") |
400 |
|
s1=t([0,5,0]) |
401 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
402 |
|
self.failUnless(self.__distance(s1,numarray.array([0.,5,0.]))<self.ABS_TOL,"s1 is wrong.") |
403 |
|
s2=t([0,0,1]) |
404 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
405 |
|
self.failUnless(abs(numarray.dot(s2,s2)-1.)<self.ABS_TOL,"s2 length is wrong.") |
406 |
|
self.failUnless(abs(s2[2]-math.cos(30*DEG))<self.ABS_TOL,"s2 angle is wrong.") |
407 |
|
self.failUnless(numarray.dot(_cross(s2,[0,0,1]),numarray.array([0.,1.,0.]))<0.,"s2 has wrong orientation.") |
408 |
|
def test_Rotatation_y_330_0(self): |
409 |
|
t=Rotatation(point1=[0.,1.,0.],angle=330*DEG) |
410 |
|
s0=t([1,0,0]) |
411 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
412 |
|
self.failUnless(abs(numarray.dot(s0,s0)-1.)<self.ABS_TOL,"s0 length is wrong.") |
413 |
|
self.failUnless(abs(s0[0]-math.cos(330*DEG))<self.ABS_TOL,"s0 angle is wrong.") |
414 |
|
self.failUnless(numarray.dot(_cross(s0,[1,0,0]),numarray.array([0.,1.,0.]))>0.,"s0 has wrong orientation.") |
415 |
|
s1=t([0,1,0]) |
416 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
417 |
|
self.failUnless(self.__distance(s1,numarray.array([0.,1,0.]))<self.ABS_TOL,"s1 is wrong.") |
418 |
|
s2=t([0,0,1]) |
419 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
420 |
|
self.failUnless(abs(numarray.dot(s2,s2)-1.)<self.ABS_TOL,"s2 length is wrong.") |
421 |
|
self.failUnless(abs(s2[2]-math.cos(330*DEG))<self.ABS_TOL,"s2 angle is wrong.") |
422 |
|
self.failUnless(numarray.dot(_cross(s2,[0,0,1]),numarray.array([0.,1.,0.]))>0.,"s2 has wrong orientation.") |
423 |
|
def test_Rotatation_y_90(self): |
424 |
|
t=Rotatation(point1=[0.,1.,0.],point0=[0.,2.,0.],angle=90*DEG) |
425 |
|
s0=t([1,0,0]) |
426 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
427 |
|
self.failUnless(self.__distance(s0,numarray.array([0.,0,1.]))<self.ABS_TOL,"s0 is wrong.") |
428 |
|
s1=t([0,5,0]) |
429 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
430 |
|
self.failUnless(self.__distance(s1,numarray.array([0.,5,0.]))<self.ABS_TOL,"s1 is wrong.") |
431 |
|
s2=t([0,0,1]) |
432 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
433 |
|
self.failUnless(self.__distance(s2,numarray.array([-1,0.,0.]))<self.ABS_TOL,"s2 is wrong.") |
434 |
|
def test_Rotatation_y_30(self): |
435 |
|
t=Rotatation(point1=[0.,1.,0.],point0=[0.,2.,0.],angle=30*DEG) |
436 |
|
s0=t([1,0,0]) |
437 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
438 |
|
self.failUnless(abs(numarray.dot(s0,s0)-1.)<self.ABS_TOL,"s0 length is wrong.") |
439 |
|
self.failUnless(abs(s0[0]-math.cos(30*DEG))<self.ABS_TOL,"s0 angle is wrong.") |
440 |
|
self.failUnless(numarray.dot(_cross(s0,[1,0,0]),numarray.array([0.,-1.,0.]))<0.,"s0 has wrong orientation.") |
441 |
|
s1=t([0,1,0]) |
442 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
443 |
|
self.failUnless(self.__distance(s1,numarray.array([0.,1,0.]))<self.ABS_TOL,"s1 is wrong.") |
444 |
|
s2=t([0,0,1]) |
445 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
446 |
|
self.failUnless(abs(numarray.dot(s2,s2)-1.)<self.ABS_TOL,"s2 length is wrong.") |
447 |
|
self.failUnless(abs(s2[2]-math.cos(30*DEG))<self.ABS_TOL,"s2 angle is wrong.") |
448 |
|
self.failUnless(numarray.dot(_cross(s2,[0,0,1]),numarray.array([0.,-1.,0.]))<0.,"s2 has wrong orientation.") |
449 |
|
def test_Rotatation_y_330(self): |
450 |
|
t=Rotatation(point1=[0.,1.,0.],point0=[0.,2.,0.],angle=330*DEG) |
451 |
|
s0=t([1,0,0]) |
452 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
453 |
|
self.failUnless(abs(numarray.dot(s0,s0)-1.)<self.ABS_TOL,"s0 length is wrong.") |
454 |
|
self.failUnless(abs(s0[0]-math.cos(330*DEG))<self.ABS_TOL,"s0 angle is wrong.") |
455 |
|
self.failUnless(numarray.dot(_cross(s0,[1,0,0]),numarray.array([0.,-1.,0.]))>0.,"s0 has wrong orientation.") |
456 |
|
s1=t([0,1,0]) |
457 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
458 |
|
self.failUnless(self.__distance(s1,numarray.array([0.,1,0.]))<self.ABS_TOL,"s1 is wrong.") |
459 |
|
s2=t([0,0,1]) |
460 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
461 |
|
self.failUnless(abs(numarray.dot(s2,s2)-1.)<self.ABS_TOL,"s2 length is wrong.") |
462 |
|
self.failUnless(abs(s2[2]-math.cos(330*DEG))<self.ABS_TOL,"s2 angle is wrong.") |
463 |
|
self.failUnless(numarray.dot(_cross(s2,[0,0,1]),numarray.array([0.,-1.,0.]))>0.,"s2 has wrong orientation.") |
464 |
|
def test_Rotatation_z_90_0(self): |
465 |
|
t=Rotatation(point1=[0.,0.,1.],angle=90*DEG) |
466 |
|
s0=t([1,0,0]) |
467 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
468 |
|
self.failUnless(self.__distance(s0,numarray.array([0.,1,0.]))<self.ABS_TOL,"s0 is wrong.") |
469 |
|
s1=t([0,5,0]) |
470 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
471 |
|
self.failUnless(self.__distance(s1,numarray.array([-5.,0,0.]))<self.ABS_TOL,"s1 is wrong.") |
472 |
|
s2=t([0,0,1]) |
473 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
474 |
|
self.failUnless(self.__distance(s2,numarray.array([0.,0,1.]))<self.ABS_TOL,"s2 is wrong.") |
475 |
|
def test_Rotatation_z_30_0(self): |
476 |
|
t=Rotatation(point1=[0.,0.,1.],angle=30*DEG) |
477 |
|
s0=t([1,0,0]) |
478 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
479 |
|
self.failUnless(abs(numarray.dot(s0,s0)-1.)<self.ABS_TOL,"s0 length is wrong.") |
480 |
|
self.failUnless(abs(s0[0]-math.cos(30*DEG))<self.ABS_TOL,"s0 angle is wrong.") |
481 |
|
self.failUnless(numarray.dot(_cross(s0,[1,0,0]),numarray.array([0.,0.,1.]))<0.,"s0 has wrong orientation.") |
482 |
|
s1=t([0,5,0]) |
483 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
484 |
|
self.failUnless(abs(numarray.dot(s1,s1)-5.**2)<self.ABS_TOL,"s1 length is wrong.") |
485 |
|
self.failUnless(abs(s1[1]/5.-math.cos(30*DEG))<self.ABS_TOL,"s1 angle is wrong.") |
486 |
|
self.failUnless(numarray.dot(_cross(s1,[0,5,0]),numarray.array([0.,0.,1.]))<0.,"s1 has wrong orientation.") |
487 |
|
s2=t([0,0,1]) |
488 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
489 |
|
self.failUnless(self.__distance(s2,numarray.array([0.,0,1.]))<self.ABS_TOL,"s2 is wrong.") |
490 |
|
def test_Rotatation_z_330_0(self): |
491 |
|
t=Rotatation(point1=[0.,0.,1.],angle=330*DEG) |
492 |
|
s0=t([1,0,0]) |
493 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
494 |
|
self.failUnless(abs(numarray.dot(s0,s0)-1.)<self.ABS_TOL,"s0 length is wrong.") |
495 |
|
self.failUnless(abs(s0[0]-math.cos(330*DEG))<self.ABS_TOL,"s0 angle is wrong.") |
496 |
|
self.failUnless(numarray.dot(_cross(s0,[1,0,0]),numarray.array([0.,0.,1.]))>0.,"s0 has wrong orientation.") |
497 |
|
s1=t([0,5,0]) |
498 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
499 |
|
self.failUnless(abs(numarray.dot(s1,s1)-5.**2)<self.ABS_TOL,"s1 length is wrong.") |
500 |
|
self.failUnless(abs(s1[1]/5.-math.cos(330*DEG))<self.ABS_TOL,"s1 angle is wrong.") |
501 |
|
self.failUnless(numarray.dot(_cross(s1,[0,1,0]),numarray.array([0.,0.,1.]))>0.,"s1 has wrong orientation.") |
502 |
|
def test_Rotatation_z_90(self): |
503 |
|
t=Rotatation(point1=[0.,0.,1.],point0=[0.,0.,2.],angle=90*DEG) |
504 |
|
s0=t([1,0,0]) |
505 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
506 |
|
self.failUnless(self.__distance(s0,numarray.array([0.,-1,0.]))<self.ABS_TOL,"s0 is wrong.") |
507 |
|
s1=t([0,5,0]) |
508 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
509 |
|
self.failUnless(self.__distance(s1,numarray.array([5.,0,0.]))<self.ABS_TOL,"s1 is wrong.") |
510 |
|
s2=t([0,0,1]) |
511 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
512 |
|
self.failUnless(self.__distance(s2,numarray.array([0.,0,1.]))<self.ABS_TOL,"s2 is wrong.") |
513 |
|
def test_Rotatation_z_30(self): |
514 |
|
t=Rotatation(point1=[0.,0.,1.],point0=[0.,0.,2.],angle=30*DEG) |
515 |
|
s0=t([1,0,0]) |
516 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
517 |
|
self.failUnless(abs(numarray.dot(s0,s0)-1.)<self.ABS_TOL,"s0 length is wrong.") |
518 |
|
self.failUnless(abs(s0[0]-math.cos(30*DEG))<self.ABS_TOL,"s0 angle is wrong.") |
519 |
|
self.failUnless(numarray.dot(_cross(s0,[1,0,0]),numarray.array([0.,0.,-1.]))<0.,"s0 has wrong orientation.") |
520 |
|
s1=t([0,1,0]) |
521 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
522 |
|
self.failUnless(abs(numarray.dot(s1,s1)-1.)<self.ABS_TOL,"s1 length is wrong.") |
523 |
|
self.failUnless(abs(s1[1]-math.cos(30*DEG))<self.ABS_TOL,"s1 angle is wrong.") |
524 |
|
self.failUnless(numarray.dot(_cross(s1,[0,1,0]),numarray.array([0.,0.,-1.]))<0.,"s1 has wrong orientation.") |
525 |
|
s2=t([0,0,1]) |
526 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
527 |
|
self.failUnless(self.__distance(s2,numarray.array([0.,0,1.]))<self.ABS_TOL,"s2 is wrong.") |
528 |
|
def test_Rotatation_z_330(self): |
529 |
|
t=Rotatation(point1=[0.,0.,1.],point0=[0.,0.,2.],angle=330*DEG) |
530 |
|
s0=t([1,0,0]) |
531 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
532 |
|
self.failUnless(abs(numarray.dot(s0,s0)-1.)<self.ABS_TOL,"s0 length is wrong.") |
533 |
|
self.failUnless(abs(s0[0]-math.cos(330*DEG))<self.ABS_TOL,"s0 angle is wrong.") |
534 |
|
self.failUnless(numarray.dot(_cross(s0,[1,0,0]),numarray.array([0.,0.,-1.]))>0.,"s0 has wrong orientation.") |
535 |
|
s1=t([0,1,0]) |
536 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
537 |
|
self.failUnless(abs(numarray.dot(s1,s1)-1.)<self.ABS_TOL,"s1 length is wrong.") |
538 |
|
self.failUnless(abs(s1[1]-math.cos(30*DEG))<self.ABS_TOL,"s1 angle is wrong.") |
539 |
|
self.failUnless(numarray.dot(_cross(s1,[0,1,0]),numarray.array([0.,0.,-1.]))>0.,"s1 has wrong orientation.") |
540 |
|
s2=t([0,0,1]) |
541 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
542 |
|
self.failUnless(self.__distance(s2,numarray.array([0.,0,1.]))<self.ABS_TOL,"s2 is wrong.") |
543 |
|
def test_Rotatation_x_90_1(self): |
544 |
|
t=Rotatation(point0=[0.,0.,1.],point1=[1.,0.,1.],angle=90*DEG) |
545 |
|
s0=t([1,0,0]) |
546 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
547 |
|
self.failUnless(self.__distance(s0,numarray.array([1.,1,1.]))<self.ABS_TOL,"s0 is wrong.") |
548 |
|
s1=t([0,1,0]) |
549 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
550 |
|
self.failUnless(self.__distance(s1,numarray.array([0.,1,2.]))<self.ABS_TOL,"s1 is wrong.") |
551 |
|
s2=t([0,0,1]) |
552 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
553 |
|
self.failUnless(self.__distance(s2,numarray.array([0.,0,1.]))<self.ABS_TOL,"s2 is wrong.") |
554 |
|
def test_Rotatation_y_90_1(self): |
555 |
|
t=Rotatation(point0=[1.,0.,0.],point1=[1.,1.,0.],angle=90*DEG) |
556 |
|
s0=t([1,0,0]) |
557 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
558 |
|
self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
559 |
|
s1=t([0,1,0]) |
560 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
561 |
|
self.failUnless(self.__distance(s1,numarray.array([1.,1,1.]))<self.ABS_TOL,"s1 is wrong.") |
562 |
|
s2=t([0,0,1]) |
563 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
564 |
|
self.failUnless(self.__distance(s2,numarray.array([2.,0,1.]))<self.ABS_TOL,"s2 is wrong.") |
565 |
|
def test_Rotatation_z_90_1(self): |
566 |
|
t=Rotatation(point0=[0.,1.,0.],point1=[0.,1.,1.],angle=90*DEG) |
567 |
|
s0=t([1,0,0]) |
568 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
569 |
|
self.failUnless(self.__distance(s0,numarray.array([1.,2,0.]))<self.ABS_TOL,"s0 is wrong.") |
570 |
|
s1=t([0,1,0]) |
571 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
572 |
|
self.failUnless(self.__distance(s1,numarray.array([0.,1,0.]))<self.ABS_TOL,"s1 is wrong.") |
573 |
|
s2=t([0,0,1]) |
574 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
575 |
|
self.failUnless(self.__distance(s2,numarray.array([1.,1,1.]))<self.ABS_TOL,"s2 is wrong.") |
576 |
|
def test_Rotatation_diag_90_0(self): |
577 |
|
t=Rotatation(point1=[1.,1.,1.],angle=90*DEG) |
578 |
|
s0=t([1,-1,0]) |
579 |
|
self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
580 |
|
self.failUnless(abs(numarray.dot(s0,s0)-2.)<self.ABS_TOL,"s0 length is wrong.") |
581 |
|
self.failUnless(abs(numarray.dot(s0,numarray.array([1,-1,0])))<self.ABS_TOL,"s0 angle is wrong.") |
582 |
|
self.failUnless(numarray.dot(_cross(s0,[1,-1,0]),numarray.array([1.,1.,1.]))<0.,"s0 has wrong orientation.") |
583 |
|
s1=t([0,1,-1]) |
584 |
|
self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
585 |
|
self.failUnless(abs(numarray.dot(s1,s1)-2.)<self.ABS_TOL,"s1 length is wrong.") |
586 |
|
self.failUnless(abs(numarray.dot(s1,numarray.array([0,1,-1])))<self.ABS_TOL,"s1 angle is wrong.") |
587 |
|
self.failUnless(numarray.dot(_cross(s1,[0,1,-1]),numarray.array([1.,1.,1.]))<0.,"s1 has wrong orientation.") |
588 |
|
s2=t([-1,0,1]) |
589 |
|
self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
590 |
|
self.failUnless(abs(numarray.dot(s2,s2)-2.)<self.ABS_TOL,"s2 length is wrong.") |
591 |
|
self.failUnless(abs(numarray.dot(s2,numarray.array([-1,0,1])))<self.ABS_TOL,"s2 angle is wrong.") |
592 |
|
self.failUnless(numarray.dot(_cross(s2,[-1,0,1]),numarray.array([1.,1.,1.]))<0.,"s2 has wrong orientation.") |
593 |
|
s3=t([1,1,1]) |
594 |
|
self.failUnless(isinstance(s3,numarray.NumArray),"s3 is not a numarray object.") |
595 |
|
self.failUnless(self.__distance(s3,numarray.array([1.,1,1.]))<self.ABS_TOL,"s3 is wrong.") |
596 |
|
|
597 |
|
class Test_PyCAD_Primitives(unittest.TestCase): |
598 |
|
def setUp(self): |
599 |
|
resetGlobalPrimitiveIdCounter() |
600 |
|
|
601 |
|
def test_baseclass(self): |
602 |
|
p=Primitive() |
603 |
|
|
604 |
|
id=p.getID() |
605 |
|
self.failUnless(isinstance(id,int),"id number is not an integer") |
606 |
|
self.failUnless(not id==Primitive().getID(),"id number is not unique") |
607 |
|
|
608 |
|
self.failUnless(not p.isPoint(),"generic primitive is not a point.") |
609 |
|
self.failUnless(not p.isCurve(),"generic primitive is not a curve.") |
610 |
|
self.failUnless(not p.isCurveLoop(),"generic primitive is not a curve loop.") |
611 |
|
self.failUnless(not p.isSurface(),"generic primitive is not a surface.") |
612 |
|
self.failUnless(not p.isSurfaceLoop(),"generic primitive is not a surface loop.") |
613 |
|
|
614 |
|
hs=p.getHistory() |
615 |
|
self.failUnless(isinstance(hs,set),"history must be a set") |
616 |
|
self.failUnless(len(hs)==0,"history should be empty.") |
617 |
|
|
618 |
|
ps=p.getPoints() |
619 |
|
self.failUnless(isinstance(ps,set),"point set must be a set") |
620 |
|
self.failUnless(len(ps)==0,"point set should be empty.") |
621 |
|
|
622 |
|
p.setLocalScale(1.23) |
623 |
|
|
624 |
|
def test_point(self): |
625 |
|
p=Point(1.,2.,3.,local_scale=9.) |
626 |
|
|
627 |
|
id=p.getID() |
628 |
|
self.failUnless(isinstance(id,int),"id number is not an integer") |
629 |
|
self.failUnless(not id==Primitive().getID(),"id number is not unique") |
630 |
|
|
631 |
|
# check history: |
632 |
|
hs=p.getHistory() |
633 |
|
self.failUnless(isinstance(hs,set),"history must be a set") |
634 |
|
self.failUnless(len(hs)==1,"history must have length 1.") |
635 |
|
self.failUnless(p in hs,"history must contain point p") |
636 |
|
|
637 |
|
# check incolved points: |
638 |
|
ps=p.getPoints() |
639 |
|
self.failUnless(isinstance(ps,set),"point set must be a set") |
640 |
|
self.failUnless(len(ps)==1,"point set must have length 1.") |
641 |
|
self.failUnless(p in ps,"point set must contain point p") |
642 |
|
|
643 |
|
# check coordinates: |
644 |
|
c=p.getCoordinates() |
645 |
|
self.failUnless(isinstance(c,numarray.NumArray),"coordinates are not a numarray object.") |
646 |
|
self.failUnless(c[0]==1.,"x coordinate is not 1.") |
647 |
|
self.failUnless(c[1]==2.,"y coordinate is not 2.") |
648 |
|
self.failUnless(c[2]==3.,"z coordinate is not 3.") |
649 |
|
|
650 |
|
# reset coordinates: |
651 |
|
p.setCoordinates([-1.,-2.,-3.]) |
652 |
|
c=p.getCoordinates() |
653 |
|
self.failUnless(isinstance(c,numarray.NumArray),"new coordinates are not a numarray object.") |
654 |
|
self.failUnless(c[0]==-1.,"new x coordinate is not -1.") |
655 |
|
self.failUnless(c[1]==-2.,"new y coordinate is not -2.") |
656 |
|
self.failUnless(c[2]==-3.,"new z coordinate is not -3.") |
657 |
|
|
658 |
|
# check for a colocated point: |
659 |
|
self.failUnless(p.isColocated(Point(-1.,-2.,-3.)),"colocation not detected.") |
660 |
|
self.failUnless(p.isColocated(numarray.array([-1.,-2.,-3.])),"colocation with numarray representation not detected.") |
661 |
|
self.failUnless(not p.isColocated(numarray.array([1.,-2.,-3.])),"false colocation detected.") |
662 |
|
self.failUnless(not p.isColocated(numarray.array([0.,0.,0.])),"false colocation with origin detected.") |
663 |
|
|
664 |
|
# check for local length scale |
665 |
|
l=p.getLocalScale() |
666 |
|
self.failUnless(l==9.,"refinement scale is not 9.") |
667 |
|
|
668 |
|
# check for new local length scale |
669 |
|
p.setLocalScale(3.) |
670 |
|
l=p.getLocalScale() |
671 |
|
self.failUnless(l==3.,"new refinement scale is not 3.") |
672 |
|
|
673 |
|
# negative value shouldn't work. |
674 |
|
self.failUnlessRaises(ValueError,p.setLocalScale,-3.) |
675 |
|
|
676 |
|
# copy: |
677 |
|
an_other_p=p.copy() |
678 |
|
self.failUnless(isinstance(an_other_p ,Point),"copy is not a point") |
679 |
|
self.failUnless(not an_other_p.getID() == p.getID(),"copy has same Id") |
680 |
|
self.failUnless(p.isColocated(an_other_p),"p is not colocated with its copy.") |
681 |
|
self.failUnless(an_other_p.isColocated(p),"the copy is not colocated with p.") |
682 |
|
self.failUnless(an_other_p.getLocalScale()==3.,"copy has wrong local scale.") |
683 |
|
|
684 |
|
# modify by Transformation: |
685 |
|
p.modifyBy(Dilation(-1)) |
686 |
|
self.failUnless(p.isColocated(Point(1.,2.,3.)),"in-place transformation failed") |
687 |
|
|
688 |
|
# apply Transformation: |
689 |
|
dil_p=p.apply(Dilation(4)) |
690 |
|
self.failUnless(dil_p.isColocated(Point(4.,8.,12.)),"applying transformation failed") |
691 |
|
self.failUnless(not dil_p.getID() == p.getID(),"transformed point has same Id") |
692 |
|
self.failUnless(dil_p.getLocalScale()==3.,"transformed point has wrong local scale.") |
693 |
|
|
694 |
|
# overloaded add: |
695 |
|
shift_p=p+[1,1,1] |
696 |
|
self.failUnless(shift_p.isColocated(Point(2,3.,4)),"applying shift by list failed") |
697 |
|
self.failUnless(not shift_p.getID() == p.getID(),"shift by list has same Id") |
698 |
|
self.failUnless(shift_p.getLocalScale()==3.,"shift by list has wrong local scale.") |
699 |
|
|
700 |
|
shift_p=p+numarray.array([1,1,1]) |
701 |
|
self.failUnless(shift_p.isColocated(Point(2,3.,4)),"applying shift by numarray failed") |
702 |
|
self.failUnless(not shift_p.getID() == p.getID(),"shift by numarray has same Id") |
703 |
|
self.failUnless(shift_p.getLocalScale()==3.,"shift by numarray has wrong local scale.") |
704 |
|
# overloaded minus |
705 |
|
shift_p=p-[1,1,1] |
706 |
|
self.failUnless(shift_p.isColocated(Point(0,1,2.)),"applying shift by -list failed") |
707 |
|
self.failUnless(not shift_p.getID() == p.getID(),"shift by -list has same Id") |
708 |
|
self.failUnless(shift_p.getLocalScale()==3.,"shift by -list has wrong local scale.") |
709 |
|
|
710 |
|
shift_p=p-numarray.array([1,1,1]) |
711 |
|
self.failUnless(shift_p.isColocated(Point(0,1,2.)),"applying shift by -numarray failed") |
712 |
|
self.failUnless(not shift_p.getID() == p.getID(),"shift by -numarray has same Id") |
713 |
|
self.failUnless(shift_p.getLocalScale()==3.,"shift by -numarray has wrong local scale.") |
714 |
|
# overloaded inplace add: |
715 |
|
p+=[1,1,1] |
716 |
|
self.failUnless(p.isColocated(Point(2,3.,4)),"modification by list shift failed") |
717 |
|
|
718 |
|
p+=numarray.array([1,1,1]) |
719 |
|
self.failUnless(p.isColocated(Point(3,4,5)),"modification by numarray shift failed") |
720 |
|
|
721 |
|
# overloaded inplace add: |
722 |
|
p-=[1,1,1] |
723 |
|
self.failUnless(p.isColocated(Point(2,3,4)),"modification by -list shift failed") |
724 |
|
|
725 |
|
p-=numarray.array([1,1,1]) |
726 |
|
self.failUnless(p.isColocated(Point(1,2.,3)),"modification by -numarray shift failed") |
727 |
|
|
728 |
|
#overloaded multiplication: |
729 |
|
mult_p=2*p |
730 |
|
self.failUnless(mult_p.isColocated(Point(2,4,6)),"applying int factor failed") |
731 |
|
self.failUnless(not mult_p.getID() == p.getID(),"shift by int factor has same Id") |
732 |
|
self.failUnless(mult_p.getLocalScale()==3.,"shift by int factor has wrong local scale.") |
733 |
|
|
734 |
|
mult_p=2.*p |
735 |
|
self.failUnless(mult_p.isColocated(Point(2,4,6)),"applying float factor failed") |
736 |
|
self.failUnless(not mult_p.getID() == p.getID(),"shift by float factor has same Id") |
737 |
|
self.failUnless(mult_p.getLocalScale()==3.,"shift by float factor has wrong local scale.") |
738 |
|
|
739 |
|
mult_p=Dilation(2)*p |
740 |
|
self.failUnless(mult_p.isColocated(Point(2,4,6)),"applying Dilation factor failed") |
741 |
|
self.failUnless(not mult_p.getID() == p.getID(),"shift by Dilation factor has same Id") |
742 |
|
self.failUnless(mult_p.getLocalScale()==3.,"shift by Dilation factor has wrong local scale.") |
743 |
|
|
744 |
|
#overloaded inplace multiplication: |
745 |
|
p*=2 |
746 |
|
self.failUnless(p.isColocated(Point(2,4,6)),"applying in-place int factor failed") |
747 |
|
|
748 |
|
p*=2. |
749 |
|
self.failUnless(p.isColocated(Point(4,8,12)),"applying in-place float factor failed") |
750 |
|
|
751 |
|
p*=Dilation(2) |
752 |
|
self.failUnless(p.isColocated(Point(8,16,24)),"applying in-place Dilation factor failed") |
753 |
|
|
754 |
|
# get gmsh code |
755 |
|
code=p.getGmshCommand(2.) |
756 |
|
self.failUnless("Point(1) = {8.0 , 16.0, 24.0 , 6.0 };"== code, "wrong gmsh code") |
757 |
|
|
758 |
|
|
759 |
if __name__ == '__main__': |
if __name__ == '__main__': |
760 |
suite = unittest.TestSuite() |
suite = unittest.TestSuite() |
761 |
suite.addTest(unittest.makeSuite(Test_PyCAD)) |
suite.addTest(unittest.makeSuite(Test_PyCAD_Transformations)) |
762 |
|
suite.addTest(unittest.makeSuite(Test_PyCAD_Primitives)) |
763 |
s=unittest.TextTestRunner(verbosity=2).run(suite) |
s=unittest.TextTestRunner(verbosity=2).run(suite) |
764 |
if s.wasSuccessful(): |
if s.wasSuccessful(): |
765 |
sys.exit(0) |
sys.exit(0) |