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