mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-23 22:29:41 +08:00
176 lines
7.4 KiB
Python
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
|