Skip to content

Commit 3644fac

Browse files
authored
add new tests (#568)
* add new tests * Update python test pep8
1 parent ca00363 commit 3644fac

28 files changed

+300
-181
lines changed

test_python/numpy_pointsbuild.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from helper import *
2+
import numpy as np
3+
import unittest as ut
4+
import pytest
5+
6+
# mrmesh uses float32 for vertex coordinates
7+
# however, you could also use float64
8+
9+
10+
def test_numpy_pointsbuild1():
11+
verts = np.ndarray(shape=(4, 3), dtype=np.float32, buffer=np.array(
12+
[[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [1.0, 1.0, 0.0], [0.0, 1.0, 0.0]], dtype=np.float32))
13+
14+
pc = mrmeshnumpy.pointCloudFromPoints(verts)
15+
assert (pc.validPoints.count() == 4)
16+
assert (pc.normals.vec.size() == 0)
17+
18+
# mrmesh uses float32 for vertex coordinates
19+
# however, you could also use float64
20+
21+
norms = np.ndarray(shape=(4, 3), dtype=np.float32, buffer=np.array(
22+
[[0.0, 0.0, 1.0], [0.0, 0.0, 1.0], [0.0, 0.0, 1.0], [0.0, 0.0, 1.0]], dtype=np.float32))
23+
24+
pc = mrmeshnumpy.pointCloudFromPoints(verts, norms)
25+
assert (pc.validPoints.count() == 4)
26+
assert (pc.normals.vec.size() == 4)

test_python/test_bitSetTest.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,24 @@
22
import pytest
33

44

5-
def test_bitSetTest():
5+
def test_bit_settest():
66
torus = mrmesh.makeTorusWithComponents(2, 1, 10, 10, None)
77

88
components = mrmesh.getAllComponentsVerts(torus, None)
99

10-
assert(len(components) == 5)
11-
assert(components[0].count() != 0)
10+
assert (len(components) == 5)
11+
assert (components[0].count() != 0)
1212
comp0Flip = mrmesh.VertBitSet()
1313
comp0Flip |= components[0]
1414
comp0Flip.flip()
1515

16-
assert(comp0Flip.size() == components[0].size())
17-
assert(comp0Flip.count() == (components[0].size() - components[0].count()))
16+
assert (comp0Flip.size() == components[0].size())
17+
assert (
18+
comp0Flip.count() == (
19+
components[0].size() -
20+
components[0].count()))
1821

1922
xorRes = comp0Flip ^ components[0]
2023

21-
assert(xorRes.size() == components[0].size())
22-
assert(xorRes.count() == components[0].size())
24+
assert (xorRes.size() == components[0].size())
25+
assert (xorRes.count() == components[0].size())

test_python/test_boolean.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@
33

44

55
def test_boolean():
6-
torusIntersected = mrmesh.makeTorusWithSelfIntersections(2, 1, 10, 10, None)
6+
torusIntersected = mrmesh.makeTorusWithSelfIntersections(
7+
2, 1, 10, 10, None)
78
mrmesh.fixSelfIntersections(torusIntersected, 0.1)
89

910
torus = mrmesh.makeTorus(2, 1, 10, 10, None)
1011

1112
transVector = mrmesh.Vector3f()
12-
transVector.x=0.5
13-
transVector.y=1
14-
transVector.z=1
13+
transVector.x = 0.5
14+
transVector.y = 1
15+
transVector.z = 1
1516

1617
diffXf = mrmesh.AffineXf3f.translation(transVector)
1718

@@ -29,7 +30,7 @@ def test_boolean():
2930
torusI = mrmesh.voxelBooleanIntersect(torus, torus2, 0.05)
3031
p_intersect = torusI.points.vec.size()
3132

32-
assert( p == 100)
33-
assert( p_sub == 43132)
34-
assert( p_union == 63114)
35-
assert( p_intersect == 23006)
33+
assert (p == 100)
34+
assert (p_sub == 43132)
35+
assert (p_union == 63114)
36+
assert (p_intersect == 23006)

test_python/test_booleanExposing.py

Lines changed: 34 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,49 @@
22
import pytest
33

44

5-
def isEqualVector3(a, b):
5+
def is_equal_vector3(a, b):
66
diff = a - b
77
return diff.length() < 1.e-6
88

9-
def test_booleanExposing():
10-
size = mrmesh.Vector3f.diagonal( 2 )
11-
pos1 = mrmesh.Vector3f.diagonal( 0 )
12-
pos2 = mrmesh.Vector3f.diagonal( -1 )
13-
pos3 = mrmesh.Vector3f.diagonal( 1 )
9+
10+
def test_boolean_exposing():
11+
size = mrmesh.Vector3f.diagonal(2)
12+
pos1 = mrmesh.Vector3f.diagonal(0)
13+
pos2 = mrmesh.Vector3f.diagonal(-1)
14+
pos3 = mrmesh.Vector3f.diagonal(1)
1415

1516
meshA = mrmesh.makeCube(size, pos1)
1617
meshB = mrmesh.makeCube(size, pos2)
1718

1819
bOperation = mrmesh.BooleanOperation.Intersection
1920
bResMapper = mrmesh.BooleanResultMapper()
20-
bResult = mrmesh.boolean( meshA, meshB, bOperation, None, bResMapper )
21+
bResult = mrmesh.boolean(meshA, meshB, bOperation, None, bResMapper)
2122

2223
bResMesh = bResult.mesh
2324

24-
assert( isEqualVector3( bResMesh.computeBoundingBox(bResMesh.topology.getValidFaces(), mrmesh.AffineXf3f() ).min , pos1 ) )
25-
assert( isEqualVector3( bResMesh.computeBoundingBox(bResMesh.topology.getValidFaces(), mrmesh.AffineXf3f() ).max , pos3 ) )
26-
27-
assert( bResMesh.topology.getValidVerts().size() == 14 )
28-
assert( bResMesh.topology.getValidVerts().count() == 14 )
29-
assert( bResMesh.topology.findHoleRepresentiveEdges().size() == 0 )
30-
31-
32-
brmmAA = bResMapper.map( meshA.topology.getValidVerts(), mrmesh.BooleanResMapObj.A )
33-
brmmBB = bResMapper.map( meshB.topology.getValidVerts(), mrmesh.BooleanResMapObj.B )
34-
35-
assert( brmmAA.count() == 1)
36-
assert( brmmBB.count() == 1)
25+
assert (
26+
is_equal_vector3(
27+
bResMesh.computeBoundingBox(
28+
bResMesh.topology.getValidFaces(),
29+
mrmesh.AffineXf3f()).min,
30+
pos1))
31+
assert (
32+
is_equal_vector3(
33+
bResMesh.computeBoundingBox(
34+
bResMesh.topology.getValidFaces(),
35+
mrmesh.AffineXf3f()).max,
36+
pos3))
37+
38+
assert (bResMesh.topology.getValidVerts().size() == 14)
39+
assert (bResMesh.topology.getValidVerts().count() == 14)
40+
assert (bResMesh.topology.findHoleRepresentiveEdges().size() == 0)
41+
42+
brmmAA = bResMapper.map(
43+
meshA.topology.getValidVerts(),
44+
mrmesh.BooleanResMapObj.A)
45+
brmmBB = bResMapper.map(
46+
meshB.topology.getValidVerts(),
47+
mrmesh.BooleanResMapObj.B)
48+
49+
assert (brmmAA.count() == 1)
50+
assert (brmmBB.count() == 1)

test_python/test_collision.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def test_collision():
1515

1616
xf = mrmesh.AffineXf3f()
1717
torus1 = torus
18-
pairs = mrmesh.findCollidingTriangles(mrmesh.MeshPart(torus1), mrmesh.MeshPart(torus2))
19-
18+
pairs = mrmesh.findCollidingTriangles(
19+
mrmesh.MeshPart(torus1), mrmesh.MeshPart(torus2))
2020
# at least 100 triangles should collide for that transforms
21-
assert (len(pairs) > 103)
21+
assert (len(pairs) > 103)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from helper import *
2+
import pytest
3+
4+
5+
def test_compute_per_vert_normals():
6+
torus = mrmesh.makeTorus(2, 1, 10, 10, None)
7+
8+
normals = mrmesh.computePerVertNormals(torus)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from helper import *
2+
import pytest
3+
4+
def test_compute_per_face_normals():
5+
torus = mrmesh.makeTorus(2, 1, 10, 10, None)
6+
normals = mrmesh.computePerFaceNormals(torus)

test_python/test_copyMesh.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from helper import *
2+
import pytest
3+
4+
5+
def test_copy_mesh():
6+
torus = mrmesh.makeOuterHalfTorus(2, 1, 10, 10, None)
7+
8+
copyMesh = mrmesh.copyMesh(torus)
9+
10+
assert (copyMesh == torus)

test_python/test_decimate.py

Lines changed: 37 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,67 @@
11
from helper import *
22
import pytest
33

4-
def isEqualVector3(a, b):
4+
5+
def is_equal_vector_3(a, b):
56
diff = a - b
67
return diff.length() < 1.e-6
78

89

910
# TEST 1
10-
def decimate1(size, pos1, pos2, pos3):
11+
def decimate_1(size, pos1, pos2, pos3):
1112
mesh = mrmesh.makeCube(size, pos1)
1213
settings = mrmesh.DecimateSettings()
1314

14-
result = mrmesh.decimateMesh( mesh, settings )
15+
result = mrmesh.decimateMesh(mesh, settings)
1516

16-
assert( result.vertsDeleted == 0 )
17-
assert( result.facesDeleted == 0 )
17+
assert (result.vertsDeleted == 0)
18+
assert (result.facesDeleted == 0)
1819
# assert( result.errorIntroduced == 0 )
1920

20-
assert( mesh.topology.getValidVerts().size() == 8 )
21-
assert( mesh.topology.getValidVerts().count() == 8 )
22-
assert( mesh.topology.findHoleRepresentiveEdges().size() == 0 )
21+
assert (mesh.topology.getValidVerts().size() == 8)
22+
assert (mesh.topology.getValidVerts().count() == 8)
23+
assert (mesh.topology.findHoleRepresentiveEdges().size() == 0)
2324

2425

2526
# TEST 2
26-
def decimate2(size, pos1, pos2, pos3):
27+
def decimate_2(size, pos1, pos2, pos3):
2728
meshA = mrmesh.makeCube(size, pos1)
2829
meshB = mrmesh.makeCube(size, pos2)
2930

3031
bOperation = mrmesh.BooleanOperation.Intersection
3132
bResMapper = mrmesh.BooleanResultMapper()
32-
bResult = mrmesh.boolean( meshA, meshB, bOperation, None, bResMapper )
33+
bResult = mrmesh.boolean(meshA, meshB, bOperation, None, bResMapper)
3334

3435
mesh = bResult.mesh
3536
settings = mrmesh.DecimateSettings()
3637

37-
result = mrmesh.decimateMesh( mesh, settings )
38-
39-
assert( isEqualVector3( mesh.computeBoundingBox(mesh.topology.getValidFaces(), mrmesh.AffineXf3f() ).min , pos1 ) )
40-
assert( isEqualVector3( mesh.computeBoundingBox(mesh.topology.getValidFaces(), mrmesh.AffineXf3f() ).max , pos3 ) )
41-
42-
assert( result.vertsDeleted == 6 )
43-
assert( result.facesDeleted == 12 )
38+
result = mrmesh.decimateMesh(mesh, settings)
39+
40+
assert (
41+
is_equal_vector_3(
42+
mesh.computeBoundingBox(
43+
mesh.topology.getValidFaces(),
44+
mrmesh.AffineXf3f()).min,
45+
pos1))
46+
assert (
47+
is_equal_vector_3(
48+
mesh.computeBoundingBox(
49+
mesh.topology.getValidFaces(),
50+
mrmesh.AffineXf3f()).max,
51+
pos3))
52+
53+
assert (result.vertsDeleted == 6)
54+
assert (result.facesDeleted == 12)
4455
# assert( result.errorIntroduced == 0 )
45-
46-
assert( mesh.topology.getValidVerts().size() == 14 )
47-
assert( mesh.topology.getValidVerts().count() == 8 )
48-
assert( mesh.topology.findHoleRepresentiveEdges().size() == 0 )
56+
assert (mesh.topology.getValidVerts().size() == 14)
57+
assert (mesh.topology.getValidVerts().count() == 8)
58+
assert (mesh.topology.findHoleRepresentiveEdges().size() == 0)
4959

5060

5161
def test_deciamte():
52-
size = mrmesh.Vector3f.diagonal( 2 )
53-
pos1 = mrmesh.Vector3f.diagonal( 0 )
54-
pos2 = mrmesh.Vector3f.diagonal( -1 )
55-
pos3 = mrmesh.Vector3f.diagonal( 1 )
56-
decimate1(size, pos1, pos2, pos3)
57-
decimate2(size, pos1, pos2, pos3)
62+
size = mrmesh.Vector3f.diagonal(2)
63+
pos1 = mrmesh.Vector3f.diagonal(0)
64+
pos2 = mrmesh.Vector3f.diagonal(-1)
65+
pos3 = mrmesh.Vector3f.diagonal(1)
66+
decimate_1(size, pos1, pos2, pos3)
67+
decimate_2(size, pos1, pos2, pos3)

test_python/test_deleteFaces.py

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,17 @@
22
import pytest
33

44

5-
65
def test_delete_faces():
76
torus = mrmesh.makeTorus(2, 1, 10, 10, None)
8-
9-
107
faceBitSetToDelete = mrmesh.FaceBitSet()
118
faceBitSetToDelete.resize(5, False)
129
faceBitSetToDelete.set(mrmesh.FaceId(1), True)
1310
oldFaceBS = torus.topology.getValidFaces()
1411
torus.topology.deleteFaces(faceBitSetToDelete)
15-
1612
deletedBitSet = oldFaceBS - torus.topology.getValidFaces()
17-
18-
assert(deletedBitSet.count() == 1)
19-
assert(deletedBitSet.test(mrmesh.FaceId(1)))
20-
21-
22-
23-
24-
#delete_faces(...) method of builtins.PyCapsule instance
25-
#delete_faces(arg0: mrmeshpy.MeshTopology, arg1: mrmeshpy.FaceBitSet) -> None
13+
assert (deletedBitSet.count() == 1)
14+
assert (deletedBitSet.test(mrmesh.FaceId(1)))
15+
16+
# delete_faces(...) method of builtins.PyCapsule instance
17+
# delete_faces(arg0: mrmeshpy.MeshTopology, arg1: mrmeshpy.FaceBitSet) ->
18+
# None

0 commit comments

Comments
 (0)