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)
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()
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)
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))
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()
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))
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))
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
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()
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)
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()
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)
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())
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()
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)])
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()
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())
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()
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)
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()