TestMachineAction.py 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # Copyright (c) 2018 Ultimaker B.V.
  2. # Cura is released under the terms of the LGPLv3 or higher.
  3. import pytest
  4. from cura.MachineAction import MachineAction
  5. from cura.MachineActionManager import NotUniqueMachineActionError, UnknownMachineActionError
  6. class Machine:
  7. def __init__(self, key = ""):
  8. self._key = key
  9. def getKey(self):
  10. return self._key
  11. def test_addMachineAction(machine_action_manager):
  12. test_action = MachineAction(key = "test_action")
  13. test_action_2 = MachineAction(key = "test_action_2")
  14. test_machine = Machine("test_machine")
  15. machine_action_manager.addMachineAction(test_action)
  16. machine_action_manager.addMachineAction(test_action_2)
  17. assert machine_action_manager.getMachineAction("test_action") == test_action
  18. assert machine_action_manager.getMachineAction("key_that_doesnt_exist") is None
  19. # Adding the same machine action is not allowed.
  20. with pytest.raises(NotUniqueMachineActionError):
  21. machine_action_manager.addMachineAction(test_action)
  22. # Check that the machine has no supported actions yet.
  23. assert machine_action_manager.getSupportedActions(test_machine) == list()
  24. # Check if adding a supported action works.
  25. machine_action_manager.addSupportedAction(test_machine, "test_action")
  26. assert machine_action_manager.getSupportedActions(test_machine) == [test_action, ]
  27. # Check that adding a unknown action doesn't change anything.
  28. machine_action_manager.addSupportedAction(test_machine, "key_that_doesnt_exist")
  29. assert machine_action_manager.getSupportedActions(test_machine) == [test_action, ]
  30. # Check if adding multiple supported actions works.
  31. machine_action_manager.addSupportedAction(test_machine, "test_action_2")
  32. assert machine_action_manager.getSupportedActions(test_machine) == [test_action, test_action_2]
  33. # Check that the machine has no required actions yet.
  34. assert machine_action_manager.getRequiredActions(test_machine) == set()
  35. ## Ensure that only known actions can be added.
  36. with pytest.raises(UnknownMachineActionError):
  37. machine_action_manager.addRequiredAction(test_machine, "key_that_doesnt_exist")
  38. ## Check if adding single required action works
  39. machine_action_manager.addRequiredAction(test_machine, "test_action")
  40. assert machine_action_manager.getRequiredActions(test_machine) == [test_action, ]
  41. # Check if adding multiple required actions works.
  42. machine_action_manager.addRequiredAction(test_machine, "test_action_2")
  43. assert machine_action_manager.getRequiredActions(test_machine) == [test_action, test_action_2]
  44. # Ensure that firstStart actions are empty by default.
  45. assert machine_action_manager.getFirstStartActions(test_machine) == []
  46. # Check if adding multiple (the same) actions to first start actions work.
  47. machine_action_manager.addFirstStartAction(test_machine, "test_action")
  48. machine_action_manager.addFirstStartAction(test_machine, "test_action")
  49. assert machine_action_manager.getFirstStartActions(test_machine) == [test_action, test_action]
  50. # Check if inserting an action works
  51. machine_action_manager.addFirstStartAction(test_machine, "test_action_2", index = 1)
  52. assert machine_action_manager.getFirstStartActions(test_machine) == [test_action, test_action_2, test_action]
  53. # Check that adding a unknown action doesn't change anything.
  54. machine_action_manager.addFirstStartAction(test_machine, "key_that_doesnt_exist", index = 1)
  55. assert machine_action_manager.getFirstStartActions(test_machine) == [test_action, test_action_2, test_action]