Program Listing for File SelectionTest.py
↰ Return to documentation for file (Testing/Python/SelectionTest.py)
from unittest.mock import MagicMock
import slicer
from slicer import (
vtkMRMLLayerDMSelectionObserver,
vtkMRMLScene,
vtkMRMLLayerDMObjectEventObserverScripted,
vtkMRMLInteractionNode,
)
from slicer.ScriptedLoadableModule import ScriptedLoadableModuleTest
class SelectionTest(ScriptedLoadableModuleTest):
def setUp(self):
slicer.mrmlScene.Clear(0)
self.selection_obs = vtkMRMLLayerDMSelectionObserver()
self.selection_obs.SetScene(slicer.mrmlScene)
self.mock = MagicMock(return_value=None)
self._spy = vtkMRMLLayerDMObjectEventObserverScripted()
self._spy.UpdateObserver(None, self.selection_obs)
self._spy.SetPythonCallback(self.mock)
def test_has_access_to_singleton_nodes(self):
assert self.selection_obs.GetInteractionNode() is not None
assert self.selection_obs.GetSelectionNode() is not None
def test_with_empty_new_scene_doesnt_initialize_singleton_nodes(self):
scene = vtkMRMLScene()
obs = vtkMRMLLayerDMSelectionObserver()
obs.SetScene(scene)
assert obs.GetInteractionNode() is None
assert obs.GetSelectionNode() is None
def test_helps_in_placing_nodes(self):
markups_node = slicer.mrmlScene.AddNewNodeByClass("vtkMRMLMarkupsFiducialNode")
self.selection_obs.StartPlace(markups_node, True)
self.mock.assert_called()
assert self.selection_obs.GetActivePlaceNodeID() == markups_node.GetID()
assert self.selection_obs.GetCurrentInteractionMode() == vtkMRMLInteractionNode.Place
assert self.selection_obs.GetPlaceModePersistence()
assert self.selection_obs.IsPlacing(markups_node)
self.mock.reset_mock()
self.selection_obs.StopPlace()
self.mock.assert_called()