From 78e78ac1474d0c875f1e6eb8e3e051291ede508e Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 24 Mar 2017 17:40:41 +0100 Subject: [PATCH] Add test for settings behaving like a stack The stack order is very fixed here. Is that bad? Contributes to issue CURA-3497. --- tests/Settings/TestExtruderStack.py | 33 +++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/Settings/TestExtruderStack.py b/tests/Settings/TestExtruderStack.py index 1e54c7251e..7ca351e1be 100644 --- a/tests/Settings/TestExtruderStack.py +++ b/tests/Settings/TestExtruderStack.py @@ -233,6 +233,39 @@ def test_deserializeVariant(filename, variant_id, container_registry, extruder_s #Restore. UM.Settings.ContainerStack._containerRegistry = original_container_registry +## Tests whether getProperty properly applies the stack-like behaviour on its +# containers. +def test_getPropertyFallThrough(extruder_stack): + #A few instance container mocks to put in the stack. + layer_height_5 = unittest.mock.MagicMock() #Sets layer height to 5. + layer_height_5.getProperty = lambda key, property: 5 if (key == "layer_height" and property == "value") else None + layer_height_5.hasProperty = lambda key: key == "layer_height" + layer_height_10 = unittest.mock.MagicMock() #Sets layer height to 10. + layer_height_10.getProperty = lambda key, property: 10 if (key == "layer_height" and property == "value") else None + layer_height_10.hasProperty = lambda key: key == "layer_height" + no_layer_height = unittest.mock.MagicMock() #No settings at all. + no_layer_height.getProperty = lambda key, property: None + no_layer_height.hasProperty = lambda key: False + + extruder_stack.userChanges = no_layer_height + extruder_stack.qualityChanges = no_layer_height + extruder_stack.quality = no_layer_height + extruder_stack.material = no_layer_height + extruder_stack.variant = no_layer_height + extruder_stack.definition = layer_height_5 #Here it is! + + assert extruder_stack.getProperty("layer_height", "value") == 5 + extruder_stack.variant = layer_height_10 + assert extruder_stack.getProperty("layer_height", "value") == 10 + extruder_stack.material = layer_height_5 + assert extruder_stack.getProperty("layer_height", "value") == 5 + extruder_stack.quality = layer_height_10 + assert extruder_stack.getProperty("layer_height", "value") == 10 + extruder_stack.qualityChanges = layer_height_5 + assert extruder_stack.getProperty("layer_height", "value") == 5 + extruder_stack.userChanges = layer_height_10 + assert extruder_stack.getProperty("layer_height", "value") == 10 + ## Tests whether inserting a container is properly forbidden. def test_insertContainer(extruder_stack): with pytest.raises(InvalidOperationError):