def test_presenter_subscribes_to_view_updates(self, _): mock_view = MagicMock() presenter = PeaksViewerPresenter(create_peaks_viewer_model([], 'r'), mock_view) mock_view.subscribe.assert_called_once_with(presenter)
def test_delete_peak(self): peak_centers = [[1.0, 0.0, 0.0], [1.0, 1.0, 0.0]] model = create_peaks_viewer_model(centers=peak_centers, fg_color="red") assert model.delete_peak(np.array([1.0, 0.9, 0.1]), SpecialCoordinateSystem.QLab) == 1 assert model.delete_peak(np.array([1.1, 0.0, 0.1]), SpecialCoordinateSystem.QSample) == 0 assert model.delete_peak(np.array([0.0, 0.0, 0.0]), SpecialCoordinateSystem.QSample) == 0
def test_view_populated_on_presenter_construction(self, mock_peaks_list_presenter): name = "ws1" fg_color = "r" test_model = create_peaks_viewer_model([(1, 2, 3)], fg_color=fg_color, name=name) PeaksViewerPresenter(test_model, self.mock_view) self.mock_view.set_title.assert_called_once_with(name) self.mock_view.set_peak_color.assert_called_once_with(fg_color) # peaks list presenter construction mock_peaks_list_presenter.assert_called_once_with(ANY, self.mock_view.table_view) self.mock_view.table_view.enable_sorting.assert_called_once()
def test_clear_removes_painted_peaks(self, mock_peaks_list_presenter): centers = ((1, 2, 3), (4, 5, 3.01)) slice_info = create_slice_info(centers, slice_value=3, slice_width=5) test_model = create_peaks_viewer_model(centers, fg_color="r") painter = MagicMock() test_model.draw_peaks(slice_info, painter) mock_view = MagicMock() mock_view.painter = painter presenter = PeaksViewerPresenter(test_model, mock_view) presenter.notify(PeaksViewerPresenter.Event.ClearPeaks) self.assertEqual(2, mock_view.painter.remove.call_count)
def test_clear_removes_painted_peaks(self, mock_peaks_list_presenter): centers = ((1, 2, 3), (4, 5, 3.01)) slice_info = create_slice_info(centers, slice_value=3, slice_width=5) test_model = create_peaks_viewer_model(centers, fg_color="r") painter, axes = MagicMock(), MagicMock() axes.get_xlim.return_value = (-1, 1) painter.axes = axes test_model.draw_peaks(slice_info, painter, SpecialCoordinateSystem.QSample) self.mock_view.painter = painter presenter = PeaksViewerPresenter(test_model, self.mock_view) presenter.notify(PeaksViewerPresenter.Event.ClearPeaks) self.assertEqual(2, self.mock_view.painter.remove.call_count)
def test_slicepoint_transforms_center_to_correct_frame_and_order(self): peak_center = (1, 2, 3) model = create_peaks_viewer_model(centers=[peak_center], fg_color="red") slice_info = MagicMock() slice_info.slicepoint = [0.5, None, None] slice_info.z_index = 0 slice_info.frame = SpecialCoordinateSystem.QSample slicepoint = model.slicepoint(0, slice_info) peak0 = model.ws.getPeak(0) peak0.getQSampleFrame.assert_called_once() peak0.getQLabFrame.assert_not_called() peak0.getHKL.assert_not_called() self.assertEqual([1, None, None], slicepoint)
def test_slice_center_transforms_center_to_correct_frame_and_order(self): peak_center = (1, 2, 3) model = create_peaks_viewer_model(centers=[peak_center], fg_color="red") slice_info = MagicMock() slice_info.transform.side_effect = lambda p: [ peak_center[2], peak_center[1], peak_center[0] ] slice_info.frame = SpecialCoordinateSystem.QSample slice_center = model.slice_center(0, slice_info) peak0 = model.ws.getPeak(0) peak0.getQSampleFrame.assert_called_once() peak0.getQLabFrame.assert_not_called() peak0.getHKL.assert_not_called() self.assertEqual(peak_center[0], slice_center)
def test_slice_center_transforms_center_to_correct_frame_and_order(self): peak_center = (1, 2, 3) frame = SpecialCoordinateSystem.QSample model = create_peaks_viewer_model(centers=[peak_center], fg_color="red") slice_info = SliceInfo(indices=(2, 1, 0), frame=frame, point=0.25, range=(15, 15)) slice_center = model.slice_center(0, slice_info) peak0 = model.ws.getPeak(0) peak0.getQSampleFrame.assert_called_once() peak0.getQLabFrame.assert_not_called() peak0.getHKL.assert_not_called() self.assertEqual(peak_center[0], slice_center)
def test_slice_point_changed_clears_old_peaks_and_overlays_visible( self, mock_peaks_list_presenter): centers = ((1, 2, 3), (4, 5, 3.01)) slice_info = create_slice_info(centers, slice_value=3, slice_width=5) test_model = create_peaks_viewer_model(centers, fg_color="r") # draw some peaks first so we can test clearing them painter, axes = MagicMock(), MagicMock() axes.get_xlim.return_value = (-1, 1) painter.axes = axes test_model.draw_peaks(slice_info, painter, SpecialCoordinateSystem.QSample) # clear draw calls painter.cross.reset_mock() self.mock_view.painter = painter self.mock_view.sliceinfo = create_slice_info(centers, slice_value=3, slice_width=5) presenter = PeaksViewerPresenter(test_model, self.mock_view) presenter.notify(PeaksViewerPresenter.Event.SlicePointChanged) self.assertEqual(2, self.mock_view.painter.remove.call_count) self.assertEqual(2, self.mock_view.painter.cross.call_count)
def test_slice_point_changed_clears_old_peaks_and_overlays_visible( self, mock_peaks_list_presenter): centers = ((1, 2, 3), (4, 5, 3.01)) slice_info = create_slice_info(centers, slice_value=3, slice_width=5) test_model = create_peaks_viewer_model(centers, fg_color="r") # draw some peaks first so we can test clearing them painter = MagicMock() test_model.draw_peaks(slice_info, painter) # clear draw calls painter.cross.reset_mock() mock_view = MagicMock() mock_view.painter = painter mock_view.sliceinfo = create_slice_info(centers, slice_value=3, slice_width=5) presenter = PeaksViewerPresenter(test_model, mock_view) presenter.notify(PeaksViewerPresenter.Event.SlicePointChanged) self.assertEqual(2, mock_view.painter.remove.call_count) self.assertEqual(2, mock_view.painter.cross.call_count)