Esempio n. 1
0
    def runTest(self):
        HelperTestingClass.__init__(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()
Esempio n. 2
0
 def test_on_close(self):
     pres = SliceViewer(mock.Mock(),
                        model=mock.MagicMock(),
                        view=mock.MagicMock())
     self.assertIsNotNone(pres.ads_observer)
     pres.clear_observer()
     self.assertEqual(pres.ads_observer, None)
Esempio n. 3
0
 def test_delete_workspace(self):
     mock_model = mock.MagicMock()
     mock_view = mock.MagicMock()
     pres = SliceViewer(mock.Mock(), model=mock_model, view=mock_view)
     mock_model.workspace_equals.return_value = True
     pres.delete_workspace("test_name")
     mock_view.emit_close.assert_called_once()
Esempio n. 4
0
def _create_presenter(model: SliceViewerModel, view, mock_sliceinfo_cls,
                      enable_nonortho_axes, supports_nonortho):
    data_view_mock = view.data_view
    data_view_mock.plot_MDH = mock.Mock()
    presenter = SliceViewer(None, model=model, view=view)
    # Patch out things from the base presenter
    presenter.show_all_data_clicked = mock.Mock()

    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
Esempio n. 5
0
 def test_workspace_not_deleted_with_different_name(self):
     mock_model = mock.MagicMock()
     mock_view = mock.MagicMock()
     pres = SliceViewer(mock.Mock(), model=mock_model, view=mock_view)
     mock_model.workspace_equals.return_value = False
     pres.delete_workspace("different_name")
     mock_view.emit_close.assert_not_called()
Esempio n. 6
0
 def test_rename_workspace_not_renamed_with_different_name(self):
     mock_model = mock.MagicMock()
     mock_view = mock.MagicMock()
     pres = SliceViewer(mock.Mock(), model=mock_model, view=mock_view)
     mock_model.workspace_equals.return_value = False
     pres.rename_workspace("old_name", "new_name")
     mock_model.set_ws_name.assert_not_called()
     mock_view.emit_rename.assert_not_called()
Esempio n. 7
0
 def test_rename_workspace(self):
     mock_model = mock.MagicMock()
     mock_view = mock.MagicMock()
     pres = SliceViewer(mock.Mock(), model=mock_model, view=mock_view)
     mock_model.workspace_equals.return_value = True
     pres.rename_workspace("old_name", "new_name")
     mock_model.set_ws_name.assert_called_with("new_name")
     mock_view.emit_rename.assert_called_once_with(
         mock_model.get_title.return_value)
Esempio n. 8
0
    def test_normalization_change_set_correct_normalization(self):
        self.patched_deps[
            "WorkspaceInfo"].get_ws_type.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.ws,
                                                           distribution=False)
Esempio n. 9
0
 def test_replace_workspace_replaces_model(self):
     mock_model = mock.MagicMock()
     mock_view = mock.MagicMock()
     pres = SliceViewer(mock.Mock(), model=mock_model, view=mock_view)
     mock_model.workspace_equals.return_value = True
     with mock.patch(
             "mantidqt.widgets.sliceviewer.presenters.presenter.SliceViewerModel"
     ) as mock_model_class:
         pres.replace_workspace(mock.NonCallableMock(),
                                mock.NonCallableMock())
         self.assertEqual(mock_model_class.return_value, pres.model)
Esempio n. 10
0
    def test_replace_workspace_does_nothing_if_workspace_is_unchanged(self):
        mock_model = mock.MagicMock()
        mock_view = mock.MagicMock()
        pres = SliceViewer(mock.Mock(), model=mock_model, view=mock_view)
        # TODO The return value here should be True but there is a bug in the
        # presenter where the condition is always incorrect (see the TODO on
        # replace_workspace in the presenter)
        mock_model.workspace_equals.return_value = False
        pres._close_view_with_message = mock.Mock()

        pres.replace_workspace(mock.NonCallableMock(), mock.NonCallableMock())

        pres._close_view_with_message.assert_not_called()
        self.assertEqual(mock_model, pres.model)
Esempio n. 11
0
    def test_cut_view_toggled_off(self, mock_get_sliceinfo):
        presenter = SliceViewer(None, model=self.model, view=self.view)
        presenter._cutviewer_presenter = mock.MagicMock()
        mock_get_sliceinfo.return_value.can_support_nonorthogonal_axes.return_value = True

        presenter.non_axis_aligned_cut(False)

        presenter._cutviewer_presenter.hide_view.assert_called_once()
        # test correct buttons disabled
        self.view.data_view.enable_tool_button.assert_has_calls([
            mock.call(tool)
            for tool in (ToolItemText.REGIONSELECTION, ToolItemText.LINEPLOTS,
                         ToolItemText.NONORTHOGONAL_AXES)
        ])
Esempio n. 12
0
 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()
Esempio n. 13
0
    def peaks_button_not_disabled_if_model_can_support_it(self):
        self.patched_deps[
            "WorkspaceInfo"].get_ws_type.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_tool_button.assert_not_called()
Esempio n. 14
0
    def runTest(self):
        HelperTestingClass.__init__(self)
        ws = CreateSampleWorkspace()
        SliceViewer(ws)
        AnalysisDataService.clear()

        self._qapp.sendPostedEvents()

        self.assert_no_toplevel_widgets()
Esempio n. 15
0
    def peaks_button_disabled_if_model_cannot_support_it(self):
        self.patched_deps[
            "WorkspaceInfo"].get_ws_type.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)
Esempio n. 16
0
    def test_cut_view_toggled_on(self, mock_cv_pres):
        presenter = SliceViewer(None, model=self.model, view=self.view)
        self.view.data_view.track_cursor = mock.MagicMock()

        presenter.non_axis_aligned_cut(True)

        mock_cv_pres.assert_called_once_with(presenter,
                                             self.view.data_view.canvas)
        # test correct buttons disabled
        self.view.data_view.deactivate_and_disable_tool.assert_has_calls([
            mock.call(tool)
            for tool in (ToolItemText.REGIONSELECTION, ToolItemText.LINEPLOTS,
                         ToolItemText.NONORTHOGONAL_AXES)
        ])
        self.view.data_view.deactivate_tool.assert_called_once_with(
            ToolItemText.ZOOM)
        self.view.data_view.track_cursor.setChecked.assert_called_once_with(
            False)
Esempio n. 17
0
    def test_cut_view_button_disabled_if_model_cannot_support_it(self):
        self.patched_deps[
            "WorkspaceInfo"].get_ws_type.return_value = WS_TYPE.MATRIX
        self.model.can_support_non_axis_cuts.return_value = False

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

        self.view.data_view.disable_tool_button.assert_has_calls(
            [mock.call(ToolItemText.NONAXISALIGNEDCUTS)])
Esempio n. 18
0
    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)
Esempio n. 19
0
    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())
Esempio n. 20
0
    def test_sliceviewer_matrix(self):
        self.patched_deps[
            "WorkspaceInfo"].get_ws_type.return_value = WS_TYPE.MATRIX

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

        # setup calls
        self.assertEqual(self.model.get_properties.call_count, 1)
        self.assertEqual(
            self.view.data_view.dimensions.get_slicepoint.call_count,
            1)  # extra call during init of pres
        self.assertEqual(self.view.data_view.plot_matrix.call_count, 1)

        # new_plot
        self.model.reset_mock()
        self.view.reset_mock()
        presenter.new_plot()
        self.assertEqual(
            self.view.data_view.dimensions.get_slicepoint.call_count, 0)
        self.assertEqual(self.view.data_view.plot_matrix.call_count, 1)
    def runTest(self, mock_update_slider):
        HelperTestingClass.__init__(self)
        xmin = 5000
        xmax = 10000
        ws = CreateSampleWorkspace(NumBanks=2, BankPixelWidth=2, XMin=xmin, XMax=xmax)  # two non-monitor spectra
        ws.setX(0, hstack([2 * ws.readX(0)[0:-1], inf]))  # change x limits of spectrum and put inf in last element
        pres = SliceViewer(ws)

        pres.view.data_view.plot_matrix(ws)

        self.assertEqual(pres.view.data_view.get_axes_limits()[0], (xmin, xmax))
    def runTest(self):
        HelperTestingClass.__init__(self)
        xmin = 5000
        xmax = 10000
        ws = CreateSampleWorkspace(NumBanks=1, NumMonitors=1, BankPixelWidth=1, XMin=xmin, XMax=xmax)
        ws.setX(0, 2 * ws.readX(0))  # change x limits of monitor spectrum
        pres = SliceViewer(ws)

        pres.view.data_view.plot_matrix(ws)

        self.assertEqual(pres.view.data_view.get_axes_limits()[0], (xmin, xmax))
Esempio n. 23
0
    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()
Esempio n. 24
0
    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)
Esempio n. 25
0
    def test_sliceviewer_MDH(self):
        presenter = SliceViewer(None, model=self.model, view=self.view)

        # setup calls
        self.assertEqual(self.model.get_ws.call_count, 1)
        self.assertEqual(self.model.get_properties.call_count, 1)
        self.assertEqual(
            self.view.data_view.dimensions.get_slicepoint.call_count,
            2)  # extra call during init of pres
        self.assertEqual(self.view.data_view.plot_MDH.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.data_view.dimensions.get_slicepoint.call_count, 1)
        self.assertEqual(self.view.data_view.plot_MDH.call_count, 1)

        # update_plot_data
        self.model.reset_mock()
        self.view.reset_mock()
        presenter.update_plot_data()
        self.assertEqual(self.model.get_data.call_count, 1)
        self.assertEqual(
            self.view.data_view.dimensions.get_slicepoint.call_count, 1)
        self.assertEqual(self.view.data_view.update_plot_data.call_count, 1)
Esempio n. 26
0
    def test_non_orthogonal_axes_toggled_on(self):
        self.patched_deps[
            "WorkspaceInfo"].get_ws_type.return_value = WS_TYPE.MDE
        self.patched_deps[
            "Dimensions"].return_value.get_dim_limits.return_value = ((-1, 1),
                                                                      (-2, 2))
        data_view_mock = self.view.data_view
        data_view_mock.plot_MDH = mock.Mock()

        presenter = SliceViewer(None, model=self.model, view=self.view)
        presenter.show_all_data_clicked = mock.Mock()
        presenter.new_plot = mock.Mock()
        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.disable_tool_button.assert_has_calls(
            [mock.call(ToolItemText.LINEPLOTS)])
        presenter.show_all_data_clicked.assert_called_once()
        presenter.new_plot.assert_called_once()
    def runTest(self):
        HelperTestingClass.__init__(self)
        ws_4D = CreateMDWorkspace(Dimensions=4, Extents=[-1, 1, -1, 1, -1, 1, -1, 1], Names="E,H,K,L",
                                  Frames='General Frame,HKL,HKL,HKL', Units='meV,r.l.u.,r.l.u.,r.l.u.')
        expt_info_4D = CreateSampleWorkspace()
        ws_4D.addExperimentInfo(expt_info_4D)
        SetUB(ws_4D, 1, 1, 2, 90, 90, 120)
        pres = SliceViewer(ws_4D)
        self._qapp.sendPostedEvents()

        non_ortho_action = toolbar_actions(pres, [ToolItemText.NONORTHOGONAL_AXES])[0]
        self.assertFalse(non_ortho_action.isEnabled())

        pres.view.close()
Esempio n. 28
0
    def runTest(self):
        HelperTestingClass.__init__(self)
        histo_ws_positive = create_histo_ws_positive()
        pres = SliceViewer(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()
    def runTest(self):
        HelperTestingClass.__init__(self)

        def scale_ws(ws):
            ws = Scale(ws, 100, "Multiply")

        ws = CreateSampleWorkspace()
        pres = SliceViewer(ws)
        self._assertNoErrorInADSHandlerFromSeparateThread(partial(scale_ws, ws))

        self._qapp.sendPostedEvents()

        self.assertTrue(pres.view in self.find_widgets_of_type(str(type(pres.view))))
        self.assertNotEqual(pres.ads_observer, None)

        pres.view.close()
    def runTest(self):
        HelperTestingClass.__init__(self)
        ws_non_ortho = CreateMDWorkspace(Dimensions='3', Extents='-6,6,-4,4,-0.5,0.5',
                                         Names='H,K,L', Units='r.l.u.,r.l.u.,r.l.u.',
                                         Frames='HKL,HKL,HKL',
                                         SplitInto='2', SplitThreshold='50')
        expt_info_nonortho = CreateSampleWorkspace()
        ws_non_ortho.addExperimentInfo(expt_info_nonortho)
        SetUB(ws_non_ortho, 1, 1, 2, 90, 90, 120)
        pres = SliceViewer(ws_non_ortho)
        ClearUB(ws_non_ortho)

        self._qapp.sendPostedEvents()

        self.assert_no_toplevel_widgets()
        self.assertEqual(pres.ads_observer, None)