示例#1
0
def _create_presenter(model, view, mock_sliceinfo_cls, enable_nonortho_axes,
                      supports_nonortho):
    model.get_ws_type = mock.Mock(return_value=WS_TYPE.MDH)
    model.is_ragged_matrix_plotted.return_value = False
    model.get_dim_limits.return_value = ((-1, 1), (-2, 2))
    data_view_mock = view.data_view
    data_view_mock.plot_MDH = mock.Mock()
    presenter = SliceViewer(None, model=model, view=view)
    if enable_nonortho_axes:
        data_view_mock.nonorthogonal_mode = True
        data_view_mock.nonortho_transform = mock.MagicMock(
            NonOrthogonalTransform)
        data_view_mock.nonortho_transform.tr.return_value = (0, 1)
        presenter.nonorthogonal_axes(True)
    else:
        data_view_mock.nonorthogonal_mode = False
        data_view_mock.nonortho_transform = None

    data_view_mock.disable_tool_button.reset_mock()
    data_view_mock.create_axes_orthogonal.reset_mock()
    data_view_mock.create_axes_nonorthogonal.reset_mock()
    mock_sliceinfo_instance = mock_sliceinfo_cls.return_value
    mock_sliceinfo_instance.can_support_nonorthogonal_axes.return_value = supports_nonortho

    return presenter, data_view_mock
    def test_axes_limits_respect_nonorthog_transfrom(self):
        limits = (-10.0, 10.0, -9.0, 9.0)
        ws_nonrotho = CreateMDWorkspace(
            Dimensions=3,
            Extents=','.join([str(lim) for lim in limits]) + ',-8,8',
            Names='A,B,C',
            Units='r.l.u.,r.l.u.,r.l.u.',
            Frames='HKL,HKL,HKL')
        expt_info_nonortho = CreateSampleWorkspace()
        ws_nonrotho.addExperimentInfo(expt_info_nonortho)
        SetUB(ws_nonrotho, 1, 1, 2, 90, 90, 120)
        pres = SliceViewer(ws_nonrotho)

        # assert limits of orthog
        limits_orthog = pres.view.data_view.get_axes_limits()
        self.assertEqual(limits_orthog[0], limits[0:2])
        self.assertEqual(limits_orthog[1], limits[2:])

        # set nonorthog view and retrieve new limits
        pres.nonorthogonal_axes(True)
        limits_nonorthog = pres.view.data_view.get_axes_limits()
        self.assertAlmostEqual(limits_nonorthog[0][0], -19, delta=1e-5)
        self.assertAlmostEqual(limits_nonorthog[0][1], 19, delta=1e-5)
        self.assertEqual(limits_nonorthog[1], limits[2:])

        pres.view.close()
    def test_normalization_change_set_correct_normalization(self):
        self.model.get_ws_type = mock.Mock(return_value=WS_TYPE.MATRIX)
        self.view.data_view.plot_matrix = mock.Mock()

        presenter = SliceViewer(None, model=self.model, view=self.view)
        presenter.normalization_changed("By bin width")
        self.view.data_view.plot_matrix.assert_called_with(self.model.get_ws(),
                                                           distribution=False)
示例#4
0
    def test_overlay_peaks_workspaces_attaches_view_and_draws_peaks(
            self, mock_peaks_presenter, _):
        presenter = SliceViewer(None, model=self.model, view=self.view)

        presenter.view.query_peaks_to_overlay.side_effect = ["peaks_workspace"]
        presenter.overlay_peaks_workspaces()
        presenter.view.query_peaks_to_overlay.assert_called_once()
        mock_peaks_presenter.assert_called_once()
        mock_peaks_presenter.overlay_peaksworkspaces.asssert_called_once()
示例#5
0
    def test_normalization_change_set_correct_normalization(self):
        self.model.get_ws_type = mock.Mock(return_value=WS_TYPE.MATRIX)
        self.view.plot_matrix = mock.Mock()

        presenter = SliceViewer(None, model=self.model, view=self.view)
        presenter.normalization_changed("By bin width")
        self.view.plot_matrix.assert_called_with(
            self.model.get_ws(),
            normalize=mantid.api.MDNormalization.VolumeNormalization)
示例#6
0
    def test_request_to_show_all_data_sets_correct_limits_on_view(self):
        presenter = SliceViewer(None, model=self.model, view=self.view)
        self.model.get_dim_limits.return_value = ((-1, 1), (-2, 2))

        presenter.show_all_data_requested()

        data_view = self.view.data_view
        self.model.get_dim_limits.assert_called_once_with(
            [None, None, 0.5], data_view.dimensions.transpose)
        data_view.set_axes_limits.assert_called_once_with((-1, 1), (-2, 2))
示例#7
0
    def test_data_limits_changed_does_not_create_new_plot_if_dynamic_rebinning_not_supported(
            self):
        presenter = SliceViewer(None, model=self.model, view=self.view)
        self.model.can_support_dynamic_rebinning.return_value = False
        new_plot_mock = mock.MagicMock()
        presenter.new_plot = new_plot_mock

        presenter.data_limits_changed()

        new_plot_mock.assert_not_called()
示例#8
0
    def test_request_to_show_all_data_sets_correct_limits_on_view_ragged_matrix(
            self, _):
        presenter = SliceViewer(None, model=self.model, view=self.view)
        self.model.is_ragged_matrix_plotted.return_value = True
        self.view.data_view.get_full_extent.return_value = [-1, 1, -2, 2]

        presenter.show_all_data_requested()

        data_view = self.view.data_view
        self.model.get_dim_limits.assert_not_called()
        data_view.set_axes_limits.assert_called_once_with((-1, 1), (-2, 2))
示例#9
0
    def test_request_to_show_all_data_sets_correct_limits_on_view_MD(self, _):
        presenter = SliceViewer(None, model=self.model, view=self.view)
        self.model.is_ragged_matrix_plotted.return_value = False
        self.model.get_dim_limits.return_value = ((-1, 1), (-2, 2))

        presenter.show_all_data_requested()

        data_view = self.view.data_view
        self.model.get_dim_limits.assert_called_once_with(
            [None, None, 0.5], data_view.dimensions.transpose)
        data_view.get_full_extent.assert_not_called()
        data_view.set_axes_limits.assert_called_once_with((-1, 1), (-2, 2))
示例#10
0
def _create_presenter(model, view, mock_sliceinfo_cls, enable_nonortho_axes,
                      supports_nonortho):
    model.get_ws_type = mock.Mock(return_value=WS_TYPE.MDH)
    data_view_mock = view.data_view
    data_view_mock.plot_MDH = mock.Mock()
    presenter = SliceViewer(None, model=model, view=view)
    if enable_nonortho_axes:
        presenter.nonorthogonal_axes(True)
    else:
        data_view_mock.nonorthogonal_mode = False
    data_view_mock.create_axes_orthogonal.reset_mock()
    data_view_mock.create_axes_nonorthogonal.reset_mock()
    mock_sliceinfo_instance = mock_sliceinfo_cls.return_value
    mock_sliceinfo_instance.can_support_nonorthogonal_axes.return_value = supports_nonortho

    return presenter, data_view_mock
示例#11
0
    def test_non_orthogonal_axes_toggled_on(self):
        self.model.get_ws_type = mock.Mock(return_value=WS_TYPE.MATRIX)
        data_view_mock = self.view.data_view
        data_view_mock.plot_matrix = mock.Mock()

        presenter = SliceViewer(None, model=self.model, view=self.view)
        data_view_mock.plot_matrix.reset_mock()  # clear initial plot call
        data_view_mock.create_axes_orthogonal.reset_mock()
        presenter.nonorthogonal_axes(True)

        data_view_mock.remove_line_plots.assert_called_once()
        data_view_mock.create_axes_nonorthogonal.assert_called_once()
        data_view_mock.create_axes_orthogonal.assert_not_called()
        data_view_mock.plot_matrix.assert_called_once()
        data_view_mock.disable_lineplots_button.assert_called_once()
        data_view_mock.disable_peaks_button.assert_called_once()
示例#12
0
    def peaks_button_not_disabled_if_model_can_support_it(self):
        self.model.get_ws_type = mock.Mock(return_value=WS_TYPE.MATRIX)
        self.model.can_support_peaks_overlay.return_value = True

        SliceViewer(None, model=self.model, view=self.view)

        self.view.data_view.disable_peaks_button.assert_not_called()
    def peaks_button_disabled_if_model_cannot_support_it(self):
        self.model.get_ws_type = mock.Mock(return_value=WS_TYPE.MATRIX)
        self.model.can_support_peaks_overlay.return_value = False

        SliceViewer(None, model=self.model, view=self.view)

        self.view.data_view.disable_tool_button.assert_called_once_with(
            ToolItemText.OVERLAY_PEAKS)
示例#14
0
    def test_view_closes_on_ADS_cleared(self):
        ws = CreateSampleWorkspace()
        SliceViewer(ws)
        AnalysisDataService.clear()

        QApplication.sendPostedEvents()

        self.assert_no_toplevel_widgets()
 def runTest(self):
     HelperTestingClass.__init__(self)
     conf = MockConfig()
     histo_ws = create_histo_ws()
     pres = SliceViewer(histo_ws, conf=conf)
     colorbar = pres.view.data_view.colorbar
     self.assertTrue(isinstance(colorbar.get_norm(), Normalize))
     pres.view.close()
示例#16
0
    def test_view_closes_on_shown_workspace_deleted(self):
        ws = CreateSampleWorkspace()
        pres = SliceViewer(ws)
        DeleteWorkspace(ws)

        QApplication.sendPostedEvents()

        self.assert_no_toplevel_widgets()
        self.assertEqual(pres.ads_observer, None)
示例#17
0
    def test_view_title_did_not_change_other_workspace_rename(self):
        ws = CreateSampleWorkspace()
        pres = SliceViewer(ws)
        title = pres.model.get_title()
        other_workspace = CreateSampleWorkspace()
        other_renamed = RenameWorkspace(other_workspace)  # noqa F841

        self.assertEqual(pres.model.get_title(), title)
        self.assertEqual(pres.view.windowTitle(), pres.model.get_title())
示例#18
0
    def test_view_closes_on_replace_when_model_properties_change(self):
        ws = CreateSampleWorkspace()
        pres = SliceViewer(ws)
        ConvertToDistribution(ws)

        QApplication.sendPostedEvents()

        self.assert_no_toplevel_widgets()
        self.assertEqual(pres.ads_observer, None)
    def runTest(self):
        HelperTestingClass.__init__(self)
        ws = CreateSampleWorkspace()
        SliceViewer(ws)
        AnalysisDataService.clear()

        self._qapp.sendPostedEvents()

        self.assert_no_toplevel_widgets()
示例#20
0
    def test_deleted_on_close(self):
        pres = SliceViewer(self.histo_ws)
        self.assert_widget_created()
        pres.view.close()

        QApplication.processEvents()
        QApplication.processEvents()

        self.assert_no_toplevel_widgets()
    def test_non_orthogonal_axes_toggled_on(self):
        self.model.get_ws_type = mock.Mock(return_value=WS_TYPE.MDE)
        data_view_mock = self.view.data_view
        data_view_mock.plot_MDH = mock.Mock()

        presenter = SliceViewer(None, model=self.model, view=self.view)

        data_view_mock.plot_MDH.reset_mock()  # clear initial plot call
        data_view_mock.create_axes_orthogonal.reset_mock()
        presenter.nonorthogonal_axes(True)

        data_view_mock.deactivate_and_disable_tool.assert_called_once_with(
            ToolItemText.REGIONSELECTION)
        data_view_mock.create_axes_nonorthogonal.assert_called_once()
        data_view_mock.create_axes_orthogonal.assert_not_called()
        data_view_mock.plot_MDH.assert_called_once()
        data_view_mock.disable_tool_button.assert_has_calls(
            [mock.call(ToolItemText.LINEPLOTS)])
示例#22
0
    def test_close_event(self):
        ws = CreateSampleWorkspace()
        pres = SliceViewer(ws)
        self.assert_widget_created()

        pres.view.close()
        pres = None
        QApplication.sendPostedEvents()

        self.assert_no_toplevel_widgets()
示例#23
0
    def test_deleted_on_close(self):
        pres = SliceViewer(self.histo_ws)
        self.assert_widget_created()
        pres.view.close()

        QApplication.sendPostedEvents()
        QApplication.sendPostedEvents()

        self.assert_no_toplevel_widgets()
        self.assertEqual(pres.ads_observer, None)
    def runTest(self):
        HelperTestingClass.__init__(self)
        ws = CreateSampleWorkspace()
        pres = SliceViewer(ws)
        ConvertToDistribution(ws)

        self._qapp.sendPostedEvents()

        self.assert_no_toplevel_widgets()
        self.assertEqual(pres.ads_observer, None)
    def runTest(self):
        HelperTestingClass.__init__(self)
        ws = CreateSampleWorkspace()
        pres = SliceViewer(ws)
        title = pres.model.get_title()
        other_workspace = CreateSampleWorkspace()
        other_renamed = RenameWorkspace(other_workspace)  # noqa F841

        self.assertEqual(pres.model.get_title(), title)
        self.assertEqual(pres.view.windowTitle(), pres.model.get_title())
示例#26
0
    def test_sliceviewer_matrix(self):

        self.model.get_ws_type = mock.Mock(return_value=WS_TYPE.MATRIX)

        presenter = SliceViewer(None, model=self.model, view=self.view)

        # setup calls
        self.assertEqual(self.model.get_dimensions_info.call_count, 0)
        self.assertEqual(self.model.get_ws.call_count, 1)
        self.assertEqual(self.view.dimensions.get_slicepoint.call_count, 0)
        self.assertEqual(self.view.plot_matrix.call_count, 1)

        # new_plot
        self.model.reset_mock()
        self.view.reset_mock()
        presenter.new_plot()
        self.assertEqual(self.model.get_ws.call_count, 1)
        self.assertEqual(self.view.dimensions.get_slicepoint.call_count, 0)
        self.assertEqual(self.view.plot_matrix.call_count, 1)
    def runTest(self):
        HelperTestingClass.__init__(self)
        ws = CreateSampleWorkspace()
        pres = SliceViewer(ws)
        self.assert_widget_created()

        pres.view.close()
        pres = None
        self._qapp.sendPostedEvents()

        self.assert_no_toplevel_widgets()
示例#28
0
    def test_non_orthogonal_axes_toggled_on(self, _):
        self.model.get_ws_type = mock.Mock(return_value=WS_TYPE.MDE)
        self.model.get_dim_limits.return_value = ((-1, 1), (-2, 2))
        self.model.is_ragged_matrix_plotted.return_value = False
        data_view_mock = self.view.data_view
        data_view_mock.plot_MDH = mock.Mock()

        presenter = SliceViewer(None, model=self.model, view=self.view)

        data_view_mock.plot_MDH.reset_mock()  # clear initial plot call
        data_view_mock.create_axes_orthogonal.reset_mock()
        presenter.nonorthogonal_axes(True)

        data_view_mock.deactivate_and_disable_tool.assert_called_once_with(
            ToolItemText.REGIONSELECTION)
        data_view_mock.create_axes_nonorthogonal.assert_called_once()
        data_view_mock.create_axes_orthogonal.assert_not_called()
        self.assertEqual(data_view_mock.plot_MDH.call_count, 2)
        data_view_mock.disable_tool_button.assert_has_calls(
            [mock.call(ToolItemText.LINEPLOTS)])
    def runTest(self):
        HelperTestingClass.__init__(self)
        histo_ws = create_histo_ws()
        pres = SliceViewer(histo_ws)
        self.assert_widget_created()
        pres.view.close()

        self._qapp.sendPostedEvents()
        self._qapp.sendPostedEvents()

        self.assert_no_toplevel_widgets()
        self.assertEqual(pres.ads_observer, None)
示例#30
0
    def test_changing_norm_updates_clim_validators(self):
        pres = SliceViewer(self.histo_ws_positive)
        colorbar = pres.view.data_view.colorbar
        colorbar.autoscale.setChecked(False)

        colorbar.norm.setCurrentText("Log")
        self.assertEqual(colorbar.cmin.validator().bottom(), MIN_LOG_VALUE)

        colorbar.norm.setCurrentText("Linear")
        self.assertEqual(colorbar.cmin.validator().bottom(), -inf)

        pres.view.close()