Browse Source

Add typing & tests for Layer

Jaime van Kessel 5 years ago
parent
commit
c5928d2c4b
2 changed files with 53 additions and 9 deletions
  1. 14 9
      cura/Layer.py
  2. 39 0
      tests/TestLayer.py

+ 14 - 9
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

+ 39 - 0
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