Author: JaroslawTworek Date: 2008-01-16 20:59:15 +0000 (Wed, 16 Jan 2008) New Revision: 782
Added: trunk/pysoy/tests/test_mesh.py Log: Created simple unit test for soy.meshes.Mesh Added: trunk/pysoy/tests/test_mesh.py =================================================================== --- trunk/pysoy/tests/test_mesh.py (rev 0) +++ trunk/pysoy/tests/test_mesh.py 2008-01-16 20:59:15 UTC (rev 782) @@ -0,0 +1,145 @@ +#!/usr/bin/env python + +import unittest +import soy + +V = soy.atoms.Vertex +F = soy.atoms.Face + +quad_vertices = [ + ( 1,-1, 0), + ( 1, 1, 0), + (-1, 1, 0), + (-1,-1, 0) + ] + +quad2_vertices = [ + ( 1,-1,-1), + ( 1, 1,-1), + (-1, 1,-1), + (-1,-1,-1) + ] + +quad_faces = [ + (0,1,2), + (2,3,0) + ] + +quad_faces_alternate = [ + (1,2,3), + (3,0,1) + ] + +def copy_c_array(array): + arr = [] + for i in range(len(array)): + arr.append(array[i]) + return arr + +class TestMesh(unittest.TestCase): + def setUp(self): + self.mesh = soy.meshes.Mesh() + self.material = soy.materials.StainlessSteel() + + def test_addition_mesh(self): + V1 = lambda x : V(self.mesh, position=x) + F1 = lambda x : F(self.mesh, verts=x, material=self.material) + + verts = map(V1, quad_vertices) + verts_copy = copy_c_array(self.mesh.verts) + + face_vert = [ map(lambda x : verts[x], x) for x in quad_faces] + faces = map(F1, face_vert) + faces_copy = copy_c_array(self.mesh.faces) + + self.assertEqual(len(self.mesh.verts),4) + self.assertEqual(len(self.mesh.faces),2) + + for i in range(4): + self.assertEqual( self.mesh.verts[i], verts_copy[i]) + for i in range(2): + self.assertEqual( self.mesh.faces[i], faces_copy[i]) + + verts2 = map(V1, quad2_vertices) + face_vert2 = [ map(lambda x : verts2[x], x) for x in quad_faces] + faces2 = map(F1, face_vert2) + + self.assertEqual(len(self.mesh.verts),8) + self.assertEqual(len(self.mesh.faces),4) + + for i in range(4): + self.assertEqual( self.mesh.verts[i], verts_copy[i]) + for i in range(2): + self.assertEqual( self.mesh.faces[i], faces_copy[i]) + + def test_modification_mesh(self): + V1 = lambda x : V(self.mesh, position=x) + F1 = lambda x : F(self.mesh, verts=x, material=self.material) + + verts = map(V1, quad_vertices) + face_vert = [ map(lambda x : verts[x], x) for x in quad_faces] + faces = map(F1, face_vert) + + verts2 = map(V1, quad2_vertices) + face_vert2 = [ map(lambda x : verts2[x], x) for x in quad_faces] + faces2 = map(F1, face_vert2) + + self.assertEqual(len(self.mesh.verts),8) + self.assertEqual(len(self.mesh.faces),4) + + verts_copy = copy_c_array(self.mesh.verts) + faces_copy = copy_c_array(self.mesh.faces) + + face_vert3 = [ map(lambda x : verts[x], x) for x in quad_faces_alternate] + + for i in range(2,4): + self.mesh.faces[i].verts = face_vert3[i-2] + + for i in range(8): + self.assertEqual( self.mesh.verts[i], verts_copy[i]) + for i in range(2): + self.assertEqual( self.mesh.faces[i], faces_copy[i]) + + + def test_substraction_mesh(self): + V1 = lambda x : V(self.mesh, position=x) + F1 = lambda x : F(self.mesh, verts=x, material=self.material) + + verts = map(V1, quad_vertices) + face_vert = [ map(lambda x : verts[x], x) for x in quad_faces] + faces = map(F1, face_vert) + + self.assertEqual(len(self.mesh.verts),4) + self.assertEqual(len(self.mesh.faces),2) + + verts2 = map(V1, quad2_vertices) + face_vert2 = [ map(lambda x : verts2[x], x) for x in quad_faces] + + for i in range(2): + self.mesh.faces[i].verts = face_vert2[i] + + self.assertEqual(len(self.mesh.verts),4) # THIS ONE FAILS + self.assertEqual(len(self.mesh.faces),2) + + def test_reuse_mesh(self): + V1 = lambda x : V(self.mesh, position=x) + F1 = lambda x : F(self.mesh, verts=x, material=self.material) + + verts = map(V1, quad_vertices) + face_vert = [ map(lambda x : verts[x], x) for x in quad_faces] + faces = map(F1, face_vert) + + self.assertEqual(len(self.mesh.verts),4) + self.assertEqual(len(self.mesh.faces),2) + + verts2 = map(V1, quad_vertices) + face_vert2 = [ map(lambda x : verts2[x], x) for x in quad_faces_alternate] + faces2 = map(F1, face_vert2) + + self.assertEqual(len(self.mesh.verts),4) #THIS ONE FAILS + self.assertEqual(len(self.mesh.faces),4) + + +if __name__=='__main__': + unittest.main() + _______________________________________________ PySoy-SVN mailing list [email protected] http://www.pysoy.org/mailman/listinfo/pysoy-svn
