From 25c0a21ea638164cde00eef7b7ce5cb03bc0a746 Mon Sep 17 00:00:00 2001 From: Matthew Andrew <matthew.andrew@tessella.com> Date: Thu, 19 Mar 2020 14:30:52 +0000 Subject: [PATCH] Updated IndirectFittingModelTest Re #28057 --- .../Indirect/IndirectFittingModel.cpp | 7 +- .../Indirect/test/IndirectFittingModelTest.h | 76 +++++++++---------- 2 files changed, 40 insertions(+), 43 deletions(-) diff --git a/qt/scientific_interfaces/Indirect/IndirectFittingModel.cpp b/qt/scientific_interfaces/Indirect/IndirectFittingModel.cpp index 521df27cb82..ec89b3e5be4 100644 --- a/qt/scientific_interfaces/Indirect/IndirectFittingModel.cpp +++ b/qt/scientific_interfaces/Indirect/IndirectFittingModel.cpp @@ -776,8 +776,8 @@ IndirectFittingModel::mapDefaultParameterNames() const { } std::unordered_map<std::string, ParameterValue> -IndirectFittingModel::createDefaultParameters( - TableDatasetIndex /*unused*/) const { + IndirectFittingModel::createDefaultParameters( + TableDatasetIndex /*unused*/) const { return std::unordered_map<std::string, ParameterValue>(); } @@ -805,7 +805,8 @@ WorkspaceGroup_sptr IndirectFittingModel::getResultGroup() const { bool IndirectFittingModel::isPreviousModelSelected() const { return m_fitFunction && - equivalentFunctions(getFittingFunction(), m_fitFunction); + equivalentFunctions(extractFirstInnerFunction(getFittingFunction()), + m_fitFunction); } MultiDomainFunction_sptr IndirectFittingModel::getMultiDomainFunction() const { diff --git a/qt/scientific_interfaces/Indirect/test/IndirectFittingModelTest.h b/qt/scientific_interfaces/Indirect/test/IndirectFittingModelTest.h index c3ea5449b55..2d3c887c1d1 100644 --- a/qt/scientific_interfaces/Indirect/test/IndirectFittingModelTest.h +++ b/qt/scientific_interfaces/Indirect/test/IndirectFittingModelTest.h @@ -7,10 +7,9 @@ #pragma once #include <cxxtest/TestSuite.h> - #include <utility> -#include "IndirectFittingModelLegacy.h" +#include "IndirectFittingModel.h" #include "MantidAPI/FrameworkManager.h" #include "MantidAPI/FunctionFactory.h" #include "MantidAPI/MatrixWorkspace.h" @@ -24,27 +23,29 @@ using namespace Mantid::CurveFitting; using namespace Mantid::DataObjects; using namespace MantidQt::CustomInterfaces::IDA; using namespace Mantid::IndirectFitDataCreationHelper; +using namespace MantidQt::CustomInterfaces; using ConvolutionFitSequential = Algorithms::ConvolutionFit<Algorithms::QENSFitSequential>; namespace { -IFunction_sptr getFunction(std::string const &functionString) { - return FunctionFactory::Instance().createInitialized(functionString); +MultiDomainFunction_sptr getFunction(std::string const &functionString) { + return FunctionFactory::Instance().createInitializedMultiDomainFunction( + functionString, 1); } /// A dummy model used to inherit the methods which need testing class DummyModel - : public MantidQt::CustomInterfaces::IDA::IndirectFittingModelLegacy { + : public MantidQt::CustomInterfaces::IDA::IndirectFittingModel { public: ~DummyModel(){}; private: std::string sequentialFitOutputName() const override { return ""; }; std::string simultaneousFitOutputName() const override { return ""; }; - std::string singleFitOutputName(std::size_t index, - std::size_t spectrum) const override { + std::string singleFitOutputName(TableDatasetIndex index, + IDA::WorkspaceIndex spectrum) const override { UNUSED_ARG(index); UNUSED_ARG(spectrum); return ""; @@ -257,21 +258,21 @@ public: test_that_getSpectra_returns_a_correct_spectra_when_the_index_provided_is_valid() { auto model = createModelWithSingleWorkspace("WorkspaceName", 3); - SpectraLegacy const inputSpectra = DiscontinuousSpectra<std::size_t>("0-1"); + Spectra const inputSpectra = Spectra("0-1"); model->setSpectra(inputSpectra, 0); - SpectraLegacy const spectra = model->getSpectra(0); + Spectra const spectra = model->getSpectra(0); - TS_ASSERT(boost::apply_visitor(AreSpectraEqual(), spectra, inputSpectra)); + TS_ASSERT_EQUALS(spectra, inputSpectra); } void test_that_getSpectra_returns_an_empty_DiscontinuousSpectra_when_provided_an_out_of_range_index() { auto model = createModelWithSingleWorkspace("WorkspaceName", 3); - SpectraLegacy const emptySpectra(DiscontinuousSpectra<std::size_t>("")); - SpectraLegacy const spectra = model->getSpectra(3); + Spectra const emptySpectra(Spectra("")); + Spectra const spectra = model->getSpectra(3); - TS_ASSERT(boost::apply_visitor(AreSpectraEqual(), spectra, emptySpectra)); + TS_ASSERT_EQUALS(spectra, emptySpectra); } void @@ -302,7 +303,7 @@ public: model->setStartX(1.2, 0, 0); model->setEndX(5.6, 0, 0); - DiscontinuousSpectra<std::size_t> const emptySpec(""); + Spectra const emptySpec(""); model->setSpectra(emptySpec, 0); TS_ASSERT_EQUALS(model->getFittingRange(0, 0).first, 0.0); @@ -332,7 +333,7 @@ public: auto model = createModelWithSingleWorkspace("WorkspaceName", 1); model->setExcludeRegion("0,1,3,4", 0, 0); - DiscontinuousSpectra<std::size_t> const emptySpec(""); + Spectra const emptySpec(""); model->setSpectra(emptySpec, 0); TS_ASSERT_EQUALS(model->getExcludeRegion(1, 0), ""); @@ -457,29 +458,24 @@ public: void test_that_isPreviouslyFit_returns_true_if_the_spectrum_has_been_fitted_previously() { auto const model = getModelWithFitOutputData(); - TS_ASSERT(model->isPreviouslyFit(0, 0)); + TS_ASSERT( + model->isPreviouslyFit(TableDatasetIndex(0), IDA::WorkspaceIndex(0))); } - void test_that_hasZeroSpectra_returns_true_if_workspace_has_zero_spectra() { + void test_that_number_of_spectra_is_zero_if_workspace_has_zero_spectra() { auto model = getEmptyModel(); auto const workspace = std::make_shared<Workspace2D>(); SetUpADSWithWorkspace ads("WorkspaceEmpty", workspace); - model->addWorkspace("WorkspaceEmpty"); - - TS_ASSERT(model->hasZeroSpectra(0)); - } + model->addWorkspace("WorkspaceEmpty", Spectra("")); - void - test_that_hasZeroSpectra_returns_true_if_the_dataIndex_provided_is_out_of_range() { - auto const model = createModelWithSingleWorkspace("WorkspaceName", 1); - TS_ASSERT(model->hasZeroSpectra(1)); + TS_ASSERT(model->getSpectra(TableDatasetIndex(0)).size() == 0); } void - test_that_hasZeroSpectra_returns_false_if_workspace_contains_one_or_more_spectra() { + test_that_number_of_spectra_is_not_zero_if_workspace_contains_one_or_more_spectra() { auto const model = createModelWithSingleWorkspace("WorkspaceName", 1); - TS_ASSERT(!model->hasZeroSpectra(0)); + TS_ASSERT(model->getSpectra(TableDatasetIndex(0)).size() != 0); } void @@ -558,23 +554,23 @@ public: test_that_setSpectra_will_set_the_spectra_to_the_provided_inputSpectra() { auto model = createModelWithSingleWorkspace("WorkspaceName", 10); - SpectraLegacy const inputSpectra = - DiscontinuousSpectra<std::size_t>("2,4,6-8"); + Spectra const inputSpectra = Spectra("2,4,6-8"); model->setSpectra(inputSpectra, 0); - SpectraLegacy const spectra = model->getSpectra(0); + Spectra const spectra = model->getSpectra(0); - TS_ASSERT(boost::apply_visitor(AreSpectraEqual(), spectra, inputSpectra)); + TS_ASSERT_EQUALS(spectra, inputSpectra); } void test_that_setSpectra_will_set_the_spectra_when_provided_a_spectra_pair() { auto model = createModelWithSingleWorkspace("WorkspaceName", 10); - SpectraLegacy const inputSpectra = std::make_pair(0u, 5u); + Spectra const inputSpectra = + Spectra(IDA::WorkspaceIndex(0), IDA::WorkspaceIndex(5)); model->setSpectra(inputSpectra, 0); - SpectraLegacy const spectra = model->getSpectra(0); + Spectra const spectra = model->getSpectra(0); - TS_ASSERT(boost::apply_visitor(AreSpectraEqual(), spectra, inputSpectra)); + TS_ASSERT_EQUALS(spectra, inputSpectra); } void @@ -587,7 +583,7 @@ public: test_that_setStartX_will_set_the_startX_at_the_first_dataIndex_when_the_fit_is_sequential() { auto model = createModelWithSingleWorkspace("WorkspaceName", 5); - model->setStartX(4.0, 3, 0); + model->setStartX(4.0, 0, 0); TS_ASSERT_EQUALS(model->getFittingRange(0, 0).first, 4.0); } @@ -596,7 +592,7 @@ public: test_that_setEndX_will_set_the_endX_at_the_first_dataIndex_when_the_fit_is_sequential() { auto model = createModelWithSingleWorkspace("WorkspaceName", 5); - model->setEndX(4.0, 3, 0); + model->setEndX(4.0, 0, 0); TS_ASSERT_EQUALS(model->getFittingRange(0, 0).second, 4.0); } @@ -605,7 +601,7 @@ public: test_that_setExcludeRegion_set_the_excludeRegion_at_the_first_dataIndex_when_the_fit_is_sequential() { auto model = createModelWithSingleWorkspace("WorkspaceName", 5); - model->setExcludeRegion("0,1,3,4", 3, 0); + model->setExcludeRegion("0,1,3,4", 0, 0); TS_ASSERT_EQUALS(model->getExcludeRegion(0, 0), "0.000,1.000,3.000,4.000"); } @@ -646,7 +642,7 @@ public: model->setDefaultParameterValue("Amplitude", 1.5, 0); auto const parameters = model->getDefaultParameters(0); - TS_ASSERT_EQUALS(parameters.at("f1.f1.f0.Amplitude").value, 1.5); + TS_ASSERT_EQUALS(parameters.at("f0.f1.f1.f0.Amplitude").value, 1.5); } void @@ -664,7 +660,7 @@ public: model->setDefaultParameterValue("Amplitude", 1.5, 0); auto const parameters = model->getParameterValues(0, 0); - TS_ASSERT_EQUALS(parameters.at("f1.f1.f0.Amplitude").value, 1.5); + TS_ASSERT_EQUALS(parameters.at("f0.f1.f1.f0.Amplitude").value, 1.5); } void @@ -709,7 +705,7 @@ public: auto const parameters = model->getDefaultParameters(0); TS_ASSERT(!parameters.empty()); - TS_ASSERT_DELTA(parameters.at("f1.f1.f0.Amplitude").value, 1.5, 0.0001); + TS_ASSERT_DELTA(parameters.at("f0.f1.f1.f0.Amplitude").value, 1.5, 0.0001); } void test_that_getResultLocation_returns_a_location_for_the_output_data() { -- GitLab