Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaime van Kessel <nallath@gmail.com>2019-05-31 17:10:14 +0300
committerJaime van Kessel <nallath@gmail.com>2019-05-31 17:10:14 +0300
commita2687223f03ab0e8398da72afc1c612906b66e47 (patch)
treed5dcc30df170593d13a01e25c6c77c140f0f698e /tests/TestConvexHullDecorator.py
parent475b91d0d107950f82a9f7a95bfc5e95df3cbd9f (diff)
Add number of tests for ConvexHullDecorator
Diffstat (limited to 'tests/TestConvexHullDecorator.py')
-rw-r--r--tests/TestConvexHullDecorator.py98
1 files changed, 98 insertions, 0 deletions
diff --git a/tests/TestConvexHullDecorator.py b/tests/TestConvexHullDecorator.py
new file mode 100644
index 0000000000..5ee616c03b
--- /dev/null
+++ b/tests/TestConvexHullDecorator.py
@@ -0,0 +1,98 @@
+from unittest.mock import patch, MagicMock
+
+import pytest
+
+from UM.Scene.SceneNode import SceneNode
+from UM.Scene.SceneNodeDecorator import SceneNodeDecorator
+from cura.Scene.ConvexHullDecorator import ConvexHullDecorator
+
+mocked_application = MagicMock()
+mocked_controller = MagicMock()
+# We need to mock out this function, otherwise we get a recursion
+mocked_controller.isToolOperationActive = MagicMock(return_value = False)
+mocked_application.getController = MagicMock(return_value = mocked_controller)
+
+
+class NonPrintingDecorator(SceneNodeDecorator):
+ def isNonPrintingMesh(self):
+ return True
+
+
+class PrintingDecorator(SceneNodeDecorator):
+ def isNonPrintingMesh(self):
+ return False
+
+
+@pytest.fixture
+def convex_hull_decorator():
+ with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = mocked_application)):
+ with patch("UM.Application.Application.getInstance", MagicMock(return_value = mocked_application)):
+ with patch("cura.Settings.ExtruderManager.ExtruderManager.getInstance"):
+ return ConvexHullDecorator()
+
+
+def test_getSetNode(convex_hull_decorator):
+ node = SceneNode()
+ with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)):
+ convex_hull_decorator.setNode(node)
+ assert convex_hull_decorator.getNode() == node
+
+
+def test_getConvexHullBoundaryNoNode(convex_hull_decorator):
+ assert convex_hull_decorator.getConvexHullBoundary() is None
+
+
+def test_getConvexHeadFullNoNode(convex_hull_decorator):
+ assert convex_hull_decorator.getConvexHullHeadFull() is None
+
+
+def test_getConvexHulLBoundaryNotPrintingMesh(convex_hull_decorator):
+ node = SceneNode()
+ node.addDecorator(NonPrintingDecorator())
+ with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)):
+ convex_hull_decorator.setNode(node)
+ assert convex_hull_decorator.getConvexHullBoundary() is None
+
+
+def test_getConvexHulLBoundaryPrintingMesh(convex_hull_decorator):
+ node = SceneNode()
+ node.addDecorator(PrintingDecorator())
+ with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)):
+ convex_hull_decorator.setNode(node)
+ # Should still be None, since print sequence is not one at a time
+ assert convex_hull_decorator.getConvexHullBoundary() is None
+
+
+def test_getConvexHulLBoundaryPrintingMeshOneAtATime(convex_hull_decorator):
+ node = SceneNode()
+ node.addDecorator(PrintingDecorator())
+ with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)):
+ convex_hull_decorator.setNode(node)
+ convex_hull_decorator._global_stack = MagicMock()
+ convex_hull_decorator._global_stack.getProperty = MagicMock(return_value = "one_at_a_time")
+ # In this test we don't care for the result of the function, just that the convex hull computation is called.
+ convex_hull_decorator._compute2DConvexHull = MagicMock()
+ convex_hull_decorator.getConvexHullBoundary()
+ convex_hull_decorator._compute2DConvexHull.assert_called_once_with()
+
+
+def value_changed(convex_hull_decorator, key):
+ convex_hull_decorator._onChanged = MagicMock()
+ convex_hull_decorator._onSettingValueChanged(key, "value")
+ convex_hull_decorator._onChanged.assert_called_once_with()
+
+ # This should have no effect at all
+ convex_hull_decorator._onSettingValueChanged(key, "not value")
+ convex_hull_decorator._onChanged.assert_called_once_with()
+
+
+@pytest.mark.parametrize("key", ConvexHullDecorator._affected_settings)
+def test_onSettingValueChangedAffectedSettings(convex_hull_decorator, key):
+ value_changed(convex_hull_decorator, key)
+
+
+@pytest.mark.parametrize("key", ConvexHullDecorator._influencing_settings)
+def test_onSettingValueChangedInfluencingSettings(convex_hull_decorator, key):
+ convex_hull_decorator._init2DConvexHullCache = MagicMock()
+ value_changed(convex_hull_decorator, key)
+ convex_hull_decorator._init2DConvexHullCache.assert_called_once_with()