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 from UM.Mesh.MeshBuilder import MeshBuilder
import numpy import numpy
from UM.Mesh.MeshData import MeshData
from cura.LayerPolygon import LayerPolygon
class Layer: class Layer:
def __init__(self, layer_id): def __init__(self, layer_id: int) -> None:
self._id = layer_id self._id = layer_id
self._height = 0.0 self._height = 0.0
self._thickness = 0.0 self._thickness = 0.0
self._polygons = [] self._polygons = [] # type: List[LayerPolygon]
self._element_count = 0 self._element_count = 0
@property @property
@ -20,7 +25,7 @@ class Layer:
return self._thickness return self._thickness
@property @property
def polygons(self): def polygons(self) -> List[LayerPolygon]:
return self._polygons return self._polygons
@property @property
@ -33,14 +38,14 @@ class Layer:
def setThickness(self, thickness): def setThickness(self, thickness):
self._thickness = thickness self._thickness = thickness
def lineMeshVertexCount(self): def lineMeshVertexCount(self) -> int:
result = 0 result = 0
for polygon in self._polygons: for polygon in self._polygons:
result += polygon.lineMeshVertexCount() result += polygon.lineMeshVertexCount()
return result return result
def lineMeshElementCount(self): def lineMeshElementCount(self) -> int:
result = 0 result = 0
for polygon in self._polygons: for polygon in self._polygons:
result += polygon.lineMeshElementCount() result += polygon.lineMeshElementCount()
@ -57,18 +62,18 @@ class Layer:
result_index_offset += polygon.lineMeshElementCount() result_index_offset += polygon.lineMeshElementCount()
self._element_count += polygon.elementCount 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) return self.createMeshOrJumps(True)
def createJumps(self): def createJumps(self) -> MeshData:
return self.createMeshOrJumps(False) 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 # 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 ) __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() builder = MeshBuilder()
line_count = 0 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