From f8e50d49bc35b3ca9656f153309cfd63c249b61c Mon Sep 17 00:00:00 2001 From: Matthew Andrew <matthew.andrew@tessella.com> Date: Mon, 17 Feb 2020 13:20:32 +0000 Subject: [PATCH] Corrected unit tests Re #26881 --- .../Indirect/IFQFitObserver.h | 1 + .../Indirect/JumpFitDataPresenter.cpp | 2 +- .../Indirect/JumpFitDataPresenter.h | 2 +- .../Indirect/test/JumpFitDataPresenterTest.h | 19 +++- .../Indirect/test/JumpFitModelTest.h | 107 ++++++++++-------- 5 files changed, 77 insertions(+), 54 deletions(-) diff --git a/qt/scientific_interfaces/Indirect/IFQFitObserver.h b/qt/scientific_interfaces/Indirect/IFQFitObserver.h index f97247cce4f..049ff3520fd 100644 --- a/qt/scientific_interfaces/Indirect/IFQFitObserver.h +++ b/qt/scientific_interfaces/Indirect/IFQFitObserver.h @@ -14,6 +14,7 @@ enum DataType { class IFQFitObserver { public: + virtual ~IFQFitObserver() = default; virtual void updateDataType(DataType) = 0; virtual void spectrumChanged(int) = 0; }; diff --git a/qt/scientific_interfaces/Indirect/JumpFitDataPresenter.cpp b/qt/scientific_interfaces/Indirect/JumpFitDataPresenter.cpp index c169c68e8a0..64adba97272 100644 --- a/qt/scientific_interfaces/Indirect/JumpFitDataPresenter.cpp +++ b/qt/scientific_interfaces/Indirect/JumpFitDataPresenter.cpp @@ -16,7 +16,7 @@ namespace IDA { JumpFitDataPresenter::JumpFitDataPresenter( JumpFitModel *model, IIndirectFitDataView *view, QComboBox *cbParameterType, QComboBox *cbParameter, QLabel *lbParameterType, QLabel *lbParameter, - FQTemplateBrowser *fQTemplateBrowser) + IFQFitObserver *fQTemplateBrowser) : IndirectFitDataPresenter(model, view, std::make_unique<JumpFitDataTablePresenter>( model, view->getDataTable())), diff --git a/qt/scientific_interfaces/Indirect/JumpFitDataPresenter.h b/qt/scientific_interfaces/Indirect/JumpFitDataPresenter.h index 58e5b79ff6e..b3628ffddf9 100644 --- a/qt/scientific_interfaces/Indirect/JumpFitDataPresenter.h +++ b/qt/scientific_interfaces/Indirect/JumpFitDataPresenter.h @@ -28,7 +28,7 @@ public: JumpFitDataPresenter(JumpFitModel *model, IIndirectFitDataView *view, QComboBox *cbParameterType, QComboBox *cbParameter, QLabel *lbParameterType, QLabel *lbParameter, - FQTemplateBrowser *fQTemplateBrowser); + IFQFitObserver *fQTemplateBrowser); private slots: void hideParameterComboBoxes(); diff --git a/qt/scientific_interfaces/Indirect/test/JumpFitDataPresenterTest.h b/qt/scientific_interfaces/Indirect/test/JumpFitDataPresenterTest.h index 2cdc68ace7d..906a509c21c 100644 --- a/qt/scientific_interfaces/Indirect/test/JumpFitDataPresenterTest.h +++ b/qt/scientific_interfaces/Indirect/test/JumpFitDataPresenterTest.h @@ -10,7 +10,8 @@ #include <cxxtest/TestSuite.h> #include <gmock/gmock.h> -#include "IIndirectFitDataViewLegacy.h" +#include "IIndirectFitDataView.h" +#include "IndirectFunctionBrowser/FQTemplateBrowser.h" #include "JumpFitDataPresenter.h" #include "JumpFitModel.h" @@ -70,7 +71,7 @@ std::unique_ptr<QTableWidget> createEmptyTableWidget(int columns, int rows) { GNU_DIAG_OFF_SUGGEST_OVERRIDE /// Mock object to mock the view -class MockJumpFitDataView : public IIndirectFitDataViewLegacy { +class MockJumpFitDataView : public IIndirectFitDataView { public: /// Public Methods MOCK_CONST_METHOD0(getDataTable, QTableWidget *()); @@ -78,6 +79,9 @@ public: MOCK_CONST_METHOD0(isResolutionHidden, bool()); MOCK_METHOD1(setResolutionHidden, void(bool hide)); MOCK_METHOD1(setStartAndEndHidden, void(bool hidden)); + MOCK_METHOD1(setXRange, void(std::pair<double, double> const &range)); + MOCK_METHOD1(setStartX, void(double startX)); + MOCK_METHOD1(setEndX, void(double endX)); MOCK_METHOD0(disableMultipleDataTab, void()); MOCK_CONST_METHOD0(getSelectedSample, std::string()); @@ -104,6 +108,11 @@ public: MOCK_METHOD1(displayWarning, void(std::string const &warning)); }; +class FQTemplateBrowserMock : public IFQFitObserver { + MOCK_METHOD1(updateDataType, void(DataType dataType)); + MOCK_METHOD1(spectrumChanged, void(int spec)); +}; + /// Mock object to mock the model class MockJumpFitModel : public JumpFitModel {}; @@ -129,6 +138,7 @@ public: m_ParameterCombo = createComboBox(getJumpParameters()); m_ParameterTypeLabel = createLabel(PARAMETER_TYPE_LABEL); m_ParameterLabel = createLabel(PARAMETER_LABEL); + m_FQTemplateBrowser = std::make_unique<FQTemplateBrowserMock>(); ON_CALL(*m_view, getDataTable()).WillByDefault(Return(m_dataTable.get())); @@ -137,7 +147,7 @@ public: std::move(m_ParameterTypeCombo.get()), std::move(m_ParameterCombo.get()), std::move(m_ParameterTypeLabel.get()), - std::move(m_ParameterLabel.get())); + std::move(m_ParameterLabel.get()), m_FQTemplateBrowser.get()); SetUpADSWithWorkspace m_ads( "WorkspaceName", createWorkspaceWithTextAxis(6, getTextAxisLabels())); @@ -188,7 +198,7 @@ public: void test_that_the_model_contains_the_correct_number_of_workspace_after_instantiation() { - TS_ASSERT_EQUALS(m_model->numberOfWorkspaces(), 1); + TS_ASSERT_EQUALS(m_model->numberOfWorkspaces(), TableDatasetIndex{1}); } ///---------------------------------------------------------------------- @@ -201,6 +211,7 @@ private: std::unique_ptr<QComboBox> m_ParameterCombo; std::unique_ptr<QLabel> m_ParameterTypeLabel; std::unique_ptr<QLabel> m_ParameterLabel; + std::unique_ptr<FQTemplateBrowserMock> m_FQTemplateBrowser; std::unique_ptr<MockJumpFitDataView> m_view; std::unique_ptr<MockJumpFitModel> m_model; diff --git a/qt/scientific_interfaces/Indirect/test/JumpFitModelTest.h b/qt/scientific_interfaces/Indirect/test/JumpFitModelTest.h index bcdceff6aff..49add191ac8 100644 --- a/qt/scientific_interfaces/Indirect/test/JumpFitModelTest.h +++ b/qt/scientific_interfaces/Indirect/test/JumpFitModelTest.h @@ -56,26 +56,26 @@ public: } void test_that_the_model_is_instantiated_and_can_hold_a_workspace() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); addWorkspacesToModel(spectra, m_workspace); - TS_ASSERT_EQUALS(m_model->numberOfWorkspaces(), 1); + TS_ASSERT_EQUALS(m_model->numberOfWorkspaces(), TableDatasetIndex{1}); } void test_that_removeWorkspace_will_remove_the_specified_workspace_from_the_model() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); addWorkspacesToModel(spectra, m_workspace); - m_model->removeWorkspace(0); + m_model->removeWorkspace(TableDatasetIndex{0}); - TS_ASSERT_EQUALS(m_model->numberOfWorkspaces(), 0); + TS_ASSERT_EQUALS(m_model->numberOfWorkspaces(), TableDatasetIndex{0}); } void test_that_setFitType_will_change_the_fit_type_in_the_sequentialFitOutputName() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); addWorkspacesToModel(spectra, m_workspace); m_model->setFitType("ChudleyElliot"); @@ -86,7 +86,7 @@ public: void test_that_setFitType_will_change_the_fit_type_in_the_simultaneousFitOutputName() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); addWorkspacesToModel(spectra, m_workspace); m_model->setFitType("ChudleyElliot"); @@ -96,44 +96,44 @@ public: } void test_that_zeroWidths_returns_false_if_the_workspace_contains_widths() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); addWorkspacesToModel(spectra, m_workspace); - TS_ASSERT(!m_model->zeroWidths(0)); + TS_ASSERT(!m_model->zeroWidths(TableDatasetIndex{0})); } void test_that_zeroWidths_returns_true_if_the_workspace_contains_no_widths() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); auto const workspace2 = createWorkspaceWithTextAxis(2, getNoWidthLabels()); m_ads->addOrReplace("Name2", workspace2); addWorkspacesToModel(spectra, m_workspace, workspace2); - TS_ASSERT(m_model->zeroWidths(1)); + TS_ASSERT(m_model->zeroWidths(TableDatasetIndex{1})); } void test_that_zeroEISF_returns_false_if_the_workspace_contains_EISFs() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); addWorkspacesToModel(spectra, m_workspace); - TS_ASSERT(!m_model->zeroEISF(0)); + TS_ASSERT(!m_model->zeroEISF(TableDatasetIndex{0})); } void test_that_zeroEISF_returns_true_if_the_workspace_contains_no_EISFs() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); auto const workspace2 = createWorkspaceWithTextAxis(2, getNoEISFLabels()); m_ads->addOrReplace("Name2", workspace2); addWorkspacesToModel(spectra, m_workspace, workspace2); - TS_ASSERT(m_model->zeroEISF(1)); + TS_ASSERT(m_model->zeroEISF(TableDatasetIndex{1})); } void test_that_isMultiFit_returns_false_if_the_model_contains_one_workspace() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); addWorkspacesToModel(spectra, m_workspace); @@ -142,7 +142,7 @@ public: void test_that_isMultiFit_returns_true_if_the_model_contains_multiple_workspace() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); auto const workspace2 = createWorkspaceWithTextAxis(2, getNoEISFLabels()); m_ads->addOrReplace("Name2", workspace2); @@ -153,7 +153,7 @@ public: void test_that_isMultiFit_returns_false_if_the_model_contains_multiple_workspace_which_are_identical() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); addWorkspacesToModel(spectra, m_workspace, m_workspace); @@ -166,94 +166,104 @@ public: void test_that_getFitParameterName_will_return_the_name_of_the_expected_parameter() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); addWorkspacesToModel(spectra, m_workspace); - TS_ASSERT_EQUALS(m_model->getFitParameterName(0, 0), "f0.EISF"); - TS_ASSERT_EQUALS(m_model->getFitParameterName(0, 2), "f1.FWHM"); + TS_ASSERT_EQUALS(m_model->getFitParameterName( + TableDatasetIndex{0}, + MantidQt::CustomInterfaces::IDA::WorkspaceIndex{0}), + "f0.EISF"); + TS_ASSERT_EQUALS(m_model->getFitParameterName( + TableDatasetIndex{0}, + MantidQt::CustomInterfaces::IDA::WorkspaceIndex{2}), + "f1.FWHM"); } void test_that_getWidths_will_return_an_empty_vector_if_there_are_no_widths() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); auto const workspace2 = createWorkspaceWithTextAxis(2, getNoWidthLabels()); m_ads->addOrReplace("Name2", workspace2); addWorkspacesToModel(spectra, m_workspace, workspace2); - TS_ASSERT(m_model->getWidths(1).empty()); + TS_ASSERT(m_model->getWidths(TableDatasetIndex{1}).empty()); } void test_that_getWidths_will_return_the_width_parameter_names() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); addWorkspacesToModel(spectra, m_workspace); - TS_ASSERT_EQUALS(m_model->getWidths(0)[0], "f1.Width"); - TS_ASSERT_EQUALS(m_model->getWidths(0)[1], "f1.FWHM"); + TS_ASSERT_EQUALS(m_model->getWidths(TableDatasetIndex{0})[0], "f1.Width"); + TS_ASSERT_EQUALS(m_model->getWidths(TableDatasetIndex{0})[1], "f1.FWHM"); } void test_that_getEISF_will_return_an_empty_vector_if_there_are_no_EISFs() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); auto const workspace2 = createWorkspaceWithTextAxis(2, getNoEISFLabels()); m_ads->addOrReplace("Name2", workspace2); addWorkspacesToModel(spectra, m_workspace, workspace2); - TS_ASSERT(m_model->getEISF(1).empty()); + TS_ASSERT(m_model->getEISF(TableDatasetIndex{1}).empty()); } void test_that_getEISF_will_return_the_EISF_parameter_names() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); addWorkspacesToModel(spectra, m_workspace); - TS_ASSERT_EQUALS(m_model->getEISF(0)[0], "f0.EISF"); - TS_ASSERT_EQUALS(m_model->getEISF(0)[1], "f1.EISF"); + TS_ASSERT_EQUALS(m_model->getEISF(TableDatasetIndex{0})[0], "f0.EISF"); + TS_ASSERT_EQUALS(m_model->getEISF(TableDatasetIndex{0})[1], "f1.EISF"); } void test_that_getWidthSpectrum_will_return_none_when_there_are_no_widths() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); auto const workspace2 = createWorkspaceWithTextAxis(2, getNoWidthLabels()); m_ads->addOrReplace("Name2", workspace2); addWorkspacesToModel(spectra, m_workspace, workspace2); - TS_ASSERT(!m_model->getWidthSpectrum(0, 1)); + TS_ASSERT(!m_model->getWidthSpectrum(0, TableDatasetIndex{1})); } void test_that_getWidthSpectrum_will_return_the_width_spectrum_number() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); addWorkspacesToModel(spectra, m_workspace); - TS_ASSERT_EQUALS(m_model->getWidthSpectrum(0, 0).get(), 1); - TS_ASSERT_EQUALS(m_model->getWidthSpectrum(1, 0).get(), 2); + TS_ASSERT_EQUALS(m_model->getWidthSpectrum(0, TableDatasetIndex{0}).get(), + 1); + TS_ASSERT_EQUALS(m_model->getWidthSpectrum(1, TableDatasetIndex{0}).get(), + 2); } void test_that_getEISFSpectrum_will_return_none_when_there_are_no_EISFs() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); auto const workspace2 = createWorkspaceWithTextAxis(2, getNoEISFLabels()); m_ads->addOrReplace("Name2", workspace2); addWorkspacesToModel(spectra, m_workspace, workspace2); - TS_ASSERT(!m_model->getEISFSpectrum(0, 1)); + TS_ASSERT(!m_model->getEISFSpectrum(0, TableDatasetIndex{1})); } void test_that_getEISFSpectrum_will_return_the_EISF_spectrum_number() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); addWorkspacesToModel(spectra, m_workspace); - TS_ASSERT_EQUALS(m_model->getEISFSpectrum(0, 0).get(), 0); - TS_ASSERT_EQUALS(m_model->getEISFSpectrum(1, 0).get(), 3); + TS_ASSERT_EQUALS(m_model->getEISFSpectrum(0, TableDatasetIndex{0}).get(), + 0); + TS_ASSERT_EQUALS(m_model->getEISFSpectrum(1, TableDatasetIndex{0}).get(), + 3); } void test_that_sequentialFitOutputName_returns_the_correct_name_for_a_multi_fit() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); auto const workspace2 = createWorkspaceWithTextAxis(2, getNoEISFLabels()); m_ads->addOrReplace("Name2", workspace2); @@ -266,7 +276,7 @@ public: void test_that_simultaneousFitOutputName_returns_the_correct_name_for_a_multi_fit() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); auto const workspace2 = createWorkspaceWithTextAxis(2, getNoEISFLabels()); m_ads->addOrReplace("Name2", workspace2); @@ -279,25 +289,26 @@ public: void test_that_singleFitOutputName_returns_the_correct_name_for_a_single_data_set_fit() { - SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const spectra = Spectra("0-1"); addWorkspacesToModel(spectra, m_workspace); m_model->setFitType("ChudleyElliot"); - TS_ASSERT_EQUALS(m_model->singleFitOutputName(0, 0), + TS_ASSERT_EQUALS(m_model->singleFitOutputName( + TableDatasetIndex{0}, + MantidQt::CustomInterfaces::IDA::WorkspaceIndex{0}), "Name_HWHM_FofQFit_ChudleyElliot_s0_Results"); } private: template <typename Workspace, typename... Workspaces> - void addWorkspacesToModel(SpectraLegacy const &spectra, - Workspace const &workspace, + void addWorkspacesToModel(Spectra const &spectra, Workspace const &workspace, Workspaces const &... workspaces) { m_model->addWorkspace(workspace, spectra); addWorkspacesToModel(spectra, workspaces...); } - void addWorkspacesToModel(SpectraLegacy const &spectra, + void addWorkspacesToModel(Spectra const &spectra, MatrixWorkspace_sptr const &workspace) { m_model->addWorkspace(workspace, spectra); } -- GitLab