Cura/tests/TestPrintOrderManager.py
2024-01-04 06:30:23 +03:00

176 lines
7.4 KiB
Python

from unittest.mock import patch, MagicMock
from cura.PrintOrderManager import PrintOrderManager
from cura.Scene.CuraSceneNode import CuraSceneNode
def test_getNodeName():
node1 = CuraSceneNode(name="cat", no_setting_override=True)
node2 = CuraSceneNode(name="dog", no_setting_override=True)
assert PrintOrderManager._getNodeName(node1) == "cat"
assert PrintOrderManager._getNodeName(node2) == "dog"
assert PrintOrderManager._getNodeName(None) == ""
def test_getNodeName_truncatesLongName():
node = CuraSceneNode(name="some_name_longer_than_30_characters", no_setting_override=True)
assert PrintOrderManager._getNodeName(node) == "some_name_longer_than_30_chara"
assert PrintOrderManager._getNodeName(node, max_length=10) == "some_name_"
def test_getSingleSelectedNode():
node1 = CuraSceneNode(no_setting_override=True)
with patch("UM.Scene.Selection.Selection.getAllSelectedObjects", MagicMock(return_value=[node1])):
with patch("UM.Scene.Selection.Selection.getSelectedObject", MagicMock(return_value=node1)):
assert PrintOrderManager._getSingleSelectedNode() == node1
def test_getSingleSelectedNode_returnsNoneIfNothingSelected():
with patch("UM.Scene.Selection.Selection.getAllSelectedObjects", MagicMock(return_value=[])):
assert PrintOrderManager._getSingleSelectedNode() is None
def test_getSingleSelectedNode_returnsNoneIfMultipleObjectsSelected():
node1 = CuraSceneNode(no_setting_override=True)
node2 = CuraSceneNode(no_setting_override=True)
with patch("UM.Scene.Selection.Selection.getAllSelectedObjects", MagicMock(return_value=[node1, node2])):
assert PrintOrderManager._getSingleSelectedNode() is None
def test_neighborNodeNamesCorrect_WhenSomeNodeSelected():
node1 = CuraSceneNode(no_setting_override=True, name="node1")
node2 = CuraSceneNode(no_setting_override=True, name="node2")
node3 = CuraSceneNode(no_setting_override=True, name="node3")
node1.printOrder = 1
node2.printOrder = 2
node3.printOrder = 3
with patch.object(PrintOrderManager, "_configureEvents", return_value=None):
with patch.object(PrintOrderManager, "_getSingleSelectedNode", return_value=node1):
print_order_manager = PrintOrderManager(get_nodes=lambda: [node1, node2, node3])
assert print_order_manager.previousNodeName == ""
assert print_order_manager.nextNodeName == "node2"
assert not print_order_manager.shouldEnablePrintBeforeAction
assert print_order_manager.shouldEnablePrintAfterAction
print_order_manager.swapSelectedAndNextNodes() # swaps node1 with node2, result: [node2, node1, node3]
assert print_order_manager.previousNodeName == "node2"
assert print_order_manager.nextNodeName == "node3"
assert print_order_manager.shouldEnablePrintBeforeAction
assert print_order_manager.shouldEnablePrintAfterAction
print_order_manager.swapSelectedAndNextNodes() # swaps node1 with node3, result: [node2, node3, node1]
assert print_order_manager.previousNodeName == "node3"
assert print_order_manager.nextNodeName == ""
assert print_order_manager.shouldEnablePrintBeforeAction
assert not print_order_manager.shouldEnablePrintAfterAction
print_order_manager.swapSelectedAndPreviousNodes() # swaps node1 with node3, result: [node2, node1, node3]
assert print_order_manager.previousNodeName == "node2"
assert print_order_manager.nextNodeName == "node3"
assert print_order_manager.shouldEnablePrintBeforeAction
assert print_order_manager.shouldEnablePrintAfterAction
print_order_manager.swapSelectedAndPreviousNodes() # swaps node1 with node2, result: [node1, node2, node3]
assert print_order_manager.previousNodeName == ""
assert print_order_manager.nextNodeName == "node2"
assert not print_order_manager.shouldEnablePrintBeforeAction
assert print_order_manager.shouldEnablePrintAfterAction
def test_neighborNodeNamesEmpty_WhenNothingSelected():
node1 = CuraSceneNode(no_setting_override=True, name="node1")
node2 = CuraSceneNode(no_setting_override=True, name="node2")
node3 = CuraSceneNode(no_setting_override=True, name="node3")
node1.printOrder = 1
node2.printOrder = 2
node3.printOrder = 3
with patch.object(PrintOrderManager, "_configureEvents", return_value=None):
with patch.object(PrintOrderManager, "_getSingleSelectedNode", return_value=None):
print_order_manager = PrintOrderManager(get_nodes=lambda: [node1, node2, node3])
assert print_order_manager.previousNodeName == ""
assert print_order_manager.nextNodeName == ""
assert not print_order_manager.shouldEnablePrintBeforeAction
assert not print_order_manager.shouldEnablePrintAfterAction
def test_initializePrintOrders():
node1 = CuraSceneNode(no_setting_override=True)
node2 = CuraSceneNode(no_setting_override=True)
# assume print orders are 0
assert node1.printOrder == 0
assert node2.printOrder == 0
PrintOrderManager.initializePrintOrders([node1, node2])
# assert print orders initialized
assert node1.printOrder == 1
assert node2.printOrder == 2
node3 = CuraSceneNode(no_setting_override=True)
node4 = CuraSceneNode(no_setting_override=True)
# assume print orders are 0
assert node3.printOrder == 0
assert node4.printOrder == 0
PrintOrderManager.initializePrintOrders([node2, node1, node3, node4])
# assert print orders not changed for node1 and node2 and initialized for node3 and node4
assert node1.printOrder == 1
assert node2.printOrder == 2
assert node3.printOrder == 3
assert node4.printOrder == 4
def test_updatePrintOrdersAfterGroupOperation():
node1 = CuraSceneNode(no_setting_override=True)
node2 = CuraSceneNode(no_setting_override=True)
node3 = CuraSceneNode(no_setting_override=True)
node4 = CuraSceneNode(no_setting_override=True)
node5 = CuraSceneNode(no_setting_override=True)
node1.printOrder = 1
node2.printOrder = 2
node3.printOrder = 3
node4.printOrder = 4
node5.printOrder = 5
all_nodes = [node1, node2, node3, node4, node5]
grouped_nodes = [node2, node4]
group_node = CuraSceneNode(no_setting_override=True)
PrintOrderManager.updatePrintOrdersAfterGroupOperation(all_nodes, group_node, grouped_nodes)
assert node1.printOrder == 1
assert group_node.printOrder == 2
assert node3.printOrder == 3
assert node5.printOrder == 4
def test_updatePrintOrdersAfterUngroupOperation():
node1 = CuraSceneNode(no_setting_override=True)
node2 = CuraSceneNode(no_setting_override=True)
node3 = CuraSceneNode(no_setting_override=True)
node1.printOrder = 1
node2.printOrder = 2
node3.printOrder = 3
all_nodes = [node1, node2, node3]
node4 = CuraSceneNode(no_setting_override=True)
node5 = CuraSceneNode(no_setting_override=True)
group_node = node2
ungrouped_nodes = [node4, node5]
PrintOrderManager.updatePrintOrdersAfterUngroupOperation(all_nodes, group_node, ungrouped_nodes)
assert node1.printOrder == 1
assert node4.printOrder == 2
assert node5.printOrder == 3
assert node3.printOrder == 4
assert node1 in all_nodes
assert node2 not in all_nodes
assert node3 in all_nodes
assert node4 in all_nodes
assert node5 in all_nodes