mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-12 07:09:01 +08:00
Split test_constrainContainerTypes into separate tests
Firstly, it'll no longer break on the first assert if multiple things are wrong. Secondly, it can now set different types for each container and put it in the correct slot then. Contributes to issue CURA-3497.
This commit is contained in:
parent
07d64f2335
commit
2cdb6c5f6f
@ -49,13 +49,23 @@ def readStack(filename):
|
|||||||
serialized = file_handle.read()
|
serialized = file_handle.read()
|
||||||
return serialized
|
return serialized
|
||||||
|
|
||||||
|
## Gets an instance container with a specified container type.
|
||||||
|
#
|
||||||
|
# \param container_type The type metadata for the instance container.
|
||||||
|
# \return An instance container instance.
|
||||||
|
def getInstanceContainer(container_type) -> InstanceContainer:
|
||||||
|
container = InstanceContainer(container_id = "InstanceContainer")
|
||||||
|
container.addMetaDataEntry("type", container_type)
|
||||||
|
return container
|
||||||
|
|
||||||
class DefinitionContainerSubClass(DefinitionContainer):
|
class DefinitionContainerSubClass(DefinitionContainer):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__(container_id = "SubDefinitionContainer")
|
super().__init__(container_id = "SubDefinitionContainer")
|
||||||
|
|
||||||
class InstanceContainerSubClass(InstanceContainer):
|
class InstanceContainerSubClass(InstanceContainer):
|
||||||
def __init__(self):
|
def __init__(self, container_type):
|
||||||
super().__init__(container_id = "SubInstanceContainer")
|
super().__init__(container_id = "SubInstanceContainer")
|
||||||
|
self.addMetaDataEntry("type", container_type)
|
||||||
|
|
||||||
#############################START OF TEST CASES################################
|
#############################START OF TEST CASES################################
|
||||||
|
|
||||||
@ -64,33 +74,112 @@ def test_addContainer(extruder_stack):
|
|||||||
with pytest.raises(InvalidOperationError):
|
with pytest.raises(InvalidOperationError):
|
||||||
extruder_stack.addContainer(unittest.mock.MagicMock())
|
extruder_stack.addContainer(unittest.mock.MagicMock())
|
||||||
|
|
||||||
## Tests whether the container types are properly enforced on the stack.
|
#Tests setting user changes profiles to invalid containers.
|
||||||
#
|
@pytest.mark.parametrize("container", [
|
||||||
# When setting a field to have a different type of stack than intended, we
|
getInstanceContainer(container_type = "wrong container type"),
|
||||||
# should get an exception.
|
getInstanceContainer(container_type = "material"), #Existing, but still wrong type.
|
||||||
@pytest.mark.parametrize("definition_container, instance_container", [
|
DefinitionContainer(container_id = "wrong class")
|
||||||
(DefinitionContainer(container_id = "TestDefinitionContainer"), InstanceContainer(container_id = "TestInstanceContainer")),
|
|
||||||
(DefinitionContainerSubClass(), InstanceContainerSubClass())
|
|
||||||
])
|
])
|
||||||
def test_constrainContainerTypes(definition_container, instance_container, extruder_stack):
|
def test_constrainUserChangesInvalid(container, extruder_stack):
|
||||||
with pytest.raises(InvalidContainerError): #Putting a definition container in the user changes is not allowed.
|
with pytest.raises(InvalidContainerError): #Invalid container, should raise an error.
|
||||||
extruder_stack.userChanges = definition_container
|
extruder_stack.userChanges = container
|
||||||
extruder_stack.userChanges = instance_container #Putting an instance container in the user changes is allowed.
|
|
||||||
with pytest.raises(InvalidContainerError):
|
#Tests setting user changes profiles.
|
||||||
extruder_stack.qualityChanges = definition_container
|
@pytest.mark.parametrize("container", [
|
||||||
extruder_stack.qualityChanges = instance_container
|
getInstanceContainer(container_type = "user"),
|
||||||
with pytest.raises(InvalidContainerError):
|
InstanceContainerSubClass(container_type = "user")
|
||||||
extruder_stack.quality = definition_container
|
])
|
||||||
extruder_stack.quality = instance_container
|
def test_constrainUserChangesValid(container, extruder_stack):
|
||||||
with pytest.raises(InvalidContainerError):
|
extruder_stack.userChanges = container #Should not give an error.
|
||||||
extruder_stack.material = definition_container
|
|
||||||
extruder_stack.material = instance_container
|
#Tests setting quality changes profiles to invalid containers.
|
||||||
with pytest.raises(InvalidContainerError):
|
@pytest.mark.parametrize("container", [
|
||||||
extruder_stack.variant = definition_container
|
getInstanceContainer(container_type = "wrong container type"),
|
||||||
extruder_stack.variant = instance_container
|
getInstanceContainer(container_type = "material"), #Existing, but still wrong type.
|
||||||
with pytest.raises(InvalidContainerError): #Putting an instance container in the definition is not allowed.
|
DefinitionContainer(container_id = "wrong class")
|
||||||
extruder_stack.definition = instance_container
|
])
|
||||||
extruder_stack.definition = definition_container #Putting a definition container in the definition is allowed.
|
def test_constrainQualityChangesInvalid(container, extruder_stack):
|
||||||
|
with pytest.raises(InvalidContainerError): #Invalid container, should raise an error.
|
||||||
|
extruder_stack.qualityChanges = container
|
||||||
|
|
||||||
|
#Test setting quality changes profiles.
|
||||||
|
@pytest.mark.parametrize("container", [
|
||||||
|
getInstanceContainer(container_type = "quality_changes"),
|
||||||
|
InstanceContainerSubClass(container_type = "quality_changes")
|
||||||
|
])
|
||||||
|
def test_constrainQualityChangesValid(container, extruder_stack):
|
||||||
|
extruder_stack.qualityChanges = container #Should not give an error.
|
||||||
|
|
||||||
|
#Tests setting quality profiles to invalid containers.
|
||||||
|
@pytest.mark.parametrize("container", [
|
||||||
|
getInstanceContainer(container_type = "wrong container type"),
|
||||||
|
getInstanceContainer(container_type = "material"), #Existing, but still wrong type.
|
||||||
|
DefinitionContainer(container_id = "wrong class")
|
||||||
|
])
|
||||||
|
def test_constrainQualityInvalid(container, extruder_stack):
|
||||||
|
with pytest.raises(InvalidContainerError): #Invalid container, should raise an error.
|
||||||
|
extruder_stack.quality = container
|
||||||
|
|
||||||
|
#Test setting quality profiles.
|
||||||
|
@pytest.mark.parametrize("container", [
|
||||||
|
getInstanceContainer(container_type = "quality"),
|
||||||
|
InstanceContainerSubClass(container_type = "quality")
|
||||||
|
])
|
||||||
|
def test_constrainQualityValid(container, extruder_stack):
|
||||||
|
extruder_stack.quality = container #Should not give an error.
|
||||||
|
|
||||||
|
#Tests setting materials to invalid containers.
|
||||||
|
@pytest.mark.parametrize("container", [
|
||||||
|
getInstanceContainer(container_type = "wrong container type"),
|
||||||
|
getInstanceContainer(container_type = "quality"), #Existing, but still wrong type.
|
||||||
|
DefinitionContainer(container_id = "wrong class")
|
||||||
|
])
|
||||||
|
def test_constrainMaterialInvalid(container, extruder_stack):
|
||||||
|
with pytest.raises(InvalidContainerError): #Invalid container, should raise an error.
|
||||||
|
extruder_stack.material = container
|
||||||
|
|
||||||
|
#Test setting materials.
|
||||||
|
@pytest.mark.parametrize("container", [
|
||||||
|
getInstanceContainer(container_type = "material"),
|
||||||
|
InstanceContainerSubClass(container_type = "material")
|
||||||
|
])
|
||||||
|
def test_constrainMaterialValid(container, extruder_stack):
|
||||||
|
extruder_stack.material = container #Should not give an error.
|
||||||
|
|
||||||
|
#Tests setting variants to invalid containers.
|
||||||
|
@pytest.mark.parametrize("container", [
|
||||||
|
getInstanceContainer(container_type = "wrong container type"),
|
||||||
|
getInstanceContainer(container_type = "material"), #Existing, but still wrong type.
|
||||||
|
DefinitionContainer(container_id = "wrong class")
|
||||||
|
])
|
||||||
|
def test_constrainVariantInvalid(container, extruder_stack):
|
||||||
|
with pytest.raises(InvalidContainerError): #Invalid container, should raise an error.
|
||||||
|
extruder_stack.variant = container
|
||||||
|
|
||||||
|
#Test setting variants.
|
||||||
|
@pytest.mark.parametrize("container", [
|
||||||
|
getInstanceContainer(container_type = "variant"),
|
||||||
|
InstanceContainerSubClass(container_type = "variant")
|
||||||
|
])
|
||||||
|
def test_constrainVariantValid(container, extruder_stack):
|
||||||
|
extruder_stack.variant = container #Should not give an error.
|
||||||
|
|
||||||
|
#Tests setting definitions to invalid containers.
|
||||||
|
@pytest.mark.parametrize("container", [
|
||||||
|
getInstanceContainer(container_type = "wrong class"),
|
||||||
|
getInstanceContainer(container_type = "material"), #Existing, but still wrong class.
|
||||||
|
])
|
||||||
|
def test_constrainVariantInvalid(container, extruder_stack):
|
||||||
|
with pytest.raises(InvalidContainerError): #Invalid container, should raise an error.
|
||||||
|
extruder_stack.definition = container
|
||||||
|
|
||||||
|
#Test setting definitions.
|
||||||
|
@pytest.mark.parametrize("container", [
|
||||||
|
DefinitionContainer(container_id = "DefinitionContainer"),
|
||||||
|
DefinitionContainerSubClass()
|
||||||
|
])
|
||||||
|
def test_constrainDefinitionValid(container, extruder_stack):
|
||||||
|
extruder_stack.definition = container #Should not give an error.
|
||||||
|
|
||||||
## Tests whether definitions are being read properly from an extruder stack.
|
## Tests whether definitions are being read properly from an extruder stack.
|
||||||
@pytest.mark.parametrize("filename, definition_id", [
|
@pytest.mark.parametrize("filename, definition_id", [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user