TestCuraSceneNode.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from UM.Math.Polygon import Polygon
  2. from UM.Scene.SceneNodeDecorator import SceneNodeDecorator
  3. from cura.Scene.CuraSceneNode import CuraSceneNode
  4. import pytest
  5. from unittest.mock import patch
  6. class MockedConvexHullDecorator(SceneNodeDecorator):
  7. def __init__(self):
  8. super().__init__()
  9. def getConvexHull(self):
  10. return Polygon([[5, 5], [-5, 5], [-5, -5], [5, -5]])
  11. class InvalidConvexHullDecorator(SceneNodeDecorator):
  12. def __init__(self):
  13. super().__init__()
  14. def getConvexHull(self):
  15. return Polygon()
  16. @pytest.fixture()
  17. def cura_scene_node():
  18. # Replace the SettingOverrideDecorator with an empty decorator
  19. with patch("cura.Scene.CuraSceneNode.SettingOverrideDecorator", SceneNodeDecorator):
  20. return CuraSceneNode()
  21. class TestCollidesWithAreas:
  22. def test_noConvexHull(self, cura_scene_node):
  23. assert not cura_scene_node.collidesWithAreas([Polygon([[10, 10], [-10, 10], [-10, -10], [10, -10]])])
  24. def test_convexHullIntersects(self, cura_scene_node):
  25. cura_scene_node.addDecorator(MockedConvexHullDecorator())
  26. assert cura_scene_node.collidesWithAreas([Polygon([[10, 10], [-10, 10], [-10, -10], [10, -10]])])
  27. def test_convexHullNoIntersection(self, cura_scene_node):
  28. cura_scene_node.addDecorator(MockedConvexHullDecorator())
  29. assert not cura_scene_node.collidesWithAreas([Polygon([[60, 60], [40, 60], [40, 40], [60, 40]])])
  30. def test_invalidConvexHull(self, cura_scene_node):
  31. cura_scene_node.addDecorator(InvalidConvexHullDecorator())
  32. assert not cura_scene_node.collidesWithAreas([Polygon([[10, 10], [-10, 10], [-10, -10], [10, -10]])])
  33. def test_outsideBuildArea(cura_scene_node):
  34. cura_scene_node.setOutsideBuildArea(True)
  35. assert cura_scene_node.isOutsideBuildArea