Пример #1
0
    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)
Пример #2
0
 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()
Пример #4
0
    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)
Пример #6
0
    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)
Пример #7
0
    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)
Пример #8
0
    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)
Пример #10
0
    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)