diff --git a/cura/Layer.py b/cura/Layer.py index 9cd45380fc..a02e8cfa41 100644 --- a/cura/Layer.py +++ b/cura/Layer.py @@ -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 diff --git a/tests/TestLayer.py b/tests/TestLayer.py new file mode 100644 index 0000000000..f8183437d6 --- /dev/null +++ b/tests/TestLayer.py @@ -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 \ No newline at end of file