Add typing & tests for Layer

This commit is contained in:
Jaime van Kessel 2019-08-02 16:49:07 +02:00
parent 5f692f3028
commit c5928d2c4b
2 changed files with 53 additions and 9 deletions

View file

@ -1,14 +1,19 @@
from typing import List
from UM.Mesh.MeshBuilder import MeshBuilder
import numpy
from UM.Mesh.MeshData import MeshData
from cura.LayerPolygon import LayerPolygon
class Layer:
def __init__(self, layer_id):
def __init__(self, layer_id: int) -> None:
self._id = layer_id
self._height = 0.0
self._thickness = 0.0
self._polygons = []
self._polygons = [] # type: List[LayerPolygon]
self._element_count = 0
@property
@ -20,7 +25,7 @@ class Layer:
return self._thickness
@property
def polygons(self):
def polygons(self) -> List[LayerPolygon]:
return self._polygons
@property
@ -33,14 +38,14 @@ class Layer:
def setThickness(self, thickness):
self._thickness = thickness
def lineMeshVertexCount(self):
def lineMeshVertexCount(self) -> int:
result = 0
for polygon in self._polygons:
result += polygon.lineMeshVertexCount()
return result
def lineMeshElementCount(self):
def lineMeshElementCount(self) -> int:
result = 0
for polygon in self._polygons:
result += polygon.lineMeshElementCount()
@ -57,18 +62,18 @@ class Layer:
result_index_offset += polygon.lineMeshElementCount()
self._element_count += polygon.elementCount
return (result_vertex_offset, result_index_offset)
return result_vertex_offset, result_index_offset
def createMesh(self):
def createMesh(self) -> MeshData:
return self.createMeshOrJumps(True)
def createJumps(self):
def createJumps(self) -> MeshData:
return self.createMeshOrJumps(False)
# Defines the two triplets of local point indices to use to draw the two faces for each line segment in createMeshOrJump
__index_pattern = numpy.array([[0, 3, 2, 0, 1, 3]], dtype = numpy.int32 )
def createMeshOrJumps(self, make_mesh):
def createMeshOrJumps(self, make_mesh: bool) -> MeshData:
builder = MeshBuilder()
line_count = 0

39
tests/TestLayer.py Normal file
View file

@ -0,0 +1,39 @@
from cura.Layer import Layer
from unittest.mock import MagicMock
def test_lineMeshVertexCount():
layer = Layer(1)
layer_polygon = MagicMock()
layer_polygon.lineMeshVertexCount = MagicMock(return_value = 9001)
layer.polygons.append(layer_polygon)
assert layer.lineMeshVertexCount() == 9001
def test_lineMeshElementCount():
layer = Layer(1)
layer_polygon = MagicMock()
layer_polygon.lineMeshElementCount = MagicMock(return_value = 9001)
layer.polygons.append(layer_polygon)
assert layer.lineMeshElementCount() == 9001
def test_getAndSet():
layer = Layer(0)
layer.setThickness(12)
assert layer.thickness == 12
layer.setHeight(0.1)
assert layer.height == 0.1
def test_elementCount():
layer = Layer(1)
layer_polygon = MagicMock()
layer_polygon.lineMeshElementCount = MagicMock(return_value=9002)
layer_polygon.lineMeshVertexCount = MagicMock(return_value=9001)
layer_polygon.elementCount = 12
layer.polygons.append(layer_polygon)
assert layer.build(0, 0, [], [], [], [], [] ,[] , []) == (9001, 9002)
assert layer.elementCount == 12