diff --git a/qt/scientific_interfaces/Indirect/IndirectFitOutput.cpp b/qt/scientific_interfaces/Indirect/IndirectFitOutput.cpp index 31fb3c5edb6d3b60e837c1c9ae7fd8283eb66f0d..7fe36fceb86154ba2b60ed170d1425651020791a 100644 --- a/qt/scientific_interfaces/Indirect/IndirectFitOutput.cpp +++ b/qt/scientific_interfaces/Indirect/IndirectFitOutput.cpp @@ -324,11 +324,11 @@ void IndirectFitOutput::addOutput(WorkspaceGroup_sptr resultGroup, m_resultGroup = resultGroup; } -void IndirectFitOutput::addOutput( - Mantid::API::WorkspaceGroup_sptr resultGroup, - Mantid::API::ITableWorkspace_sptr parameterTable, - Mantid::API::WorkspaceGroup_sptr resultWorkspace, - IndirectFitData const *fitData, std::size_t spectrum) { +void IndirectFitOutput::addOutput(WorkspaceGroup_sptr resultGroup, + ITableWorkspace_sptr parameterTable, + WorkspaceGroup_sptr resultWorkspace, + IndirectFitData const *fitData, + std::size_t spectrum) { TableRowExtractor extractRowFromTable(parameterTable); m_parameters[fitData][spectrum] = extractRowFromTable(0); m_outputResultLocations[fitData][spectrum] = ResultLocation(resultGroup, 0); @@ -359,8 +359,8 @@ void IndirectFitOutput::updateParameters(ITableWorkspace_sptr parameterTable, } void IndirectFitOutput::updateFitResultsFromUnstructured( - Mantid::API::WorkspaceGroup_sptr resultGroup, - const FitDataIterator &fitDataBegin, const FitDataIterator &fitDataEnd) { + WorkspaceGroup_sptr resultGroup, const FitDataIterator &fitDataBegin, + const FitDataIterator &fitDataEnd) { std::unordered_map<MatrixWorkspace *, std::unordered_map<std::size_t, std::size_t>> resultIndices; @@ -376,8 +376,8 @@ void IndirectFitOutput::updateFitResultsFromUnstructured( } void IndirectFitOutput::updateFitResultsFromStructured( - Mantid::API::WorkspaceGroup_sptr resultGroup, - const FitDataIterator &fitDataBegin, const FitDataIterator &fitDataEnd) { + WorkspaceGroup_sptr resultGroup, const FitDataIterator &fitDataBegin, + const FitDataIterator &fitDataEnd) { auto update = [&](IndirectFitData const *inputData) { auto &fitResults = extractOrAddDefault(m_outputResultLocations, inputData); return [&](std::size_t index, std::size_t spectrum) { diff --git a/qt/scientific_interfaces/Indirect/test/IndirectFitDataTest.h b/qt/scientific_interfaces/Indirect/test/IndirectFitDataTest.h index 50cd9e4955ee26ffe4effd3efcbc2e25b45b8030..11a6383bc9e8cb2bcfe63c1cc429ff18376012c2 100644 --- a/qt/scientific_interfaces/Indirect/test/IndirectFitDataTest.h +++ b/qt/scientific_interfaces/Indirect/test/IndirectFitDataTest.h @@ -18,11 +18,12 @@ using namespace Mantid::IndirectFitDataCreationHelper; namespace { -IndirectFitData getIndirectFitData(int const &numberOfSpectra) { +std::unique_ptr<IndirectFitData> +getIndirectFitData(int const &numberOfSpectra) { auto const workspace = createWorkspace(numberOfSpectra); Spectra const spec = std::make_pair(0u, workspace->getNumberHistograms() - 1); IndirectFitData data(workspace, spec); - return data; + return std::make_unique<IndirectFitData>(data); } } // namespace @@ -66,9 +67,10 @@ public: std::string const inputString = "8,0-7,6,10"; Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-8,10"); - data.setSpectra(inputString); + data->setSpectra(inputString); - TS_ASSERT(boost::apply_visitor(AreSpectraEqual(), data.spectra(), spectra)); + TS_ASSERT( + boost::apply_visitor(AreSpectraEqual(), data->spectra(), spectra)); } void @@ -77,9 +79,10 @@ public: std::string const inputString = "1,2,4-3,10"; Spectra const spectra = DiscontinuousSpectra<std::size_t>("1-4,10"); - data.setSpectra(inputString); + data->setSpectra(inputString); - TS_ASSERT(boost::apply_visitor(AreSpectraEqual(), data.spectra(), spectra)); + TS_ASSERT( + boost::apply_visitor(AreSpectraEqual(), data->spectra(), spectra)); } void @@ -88,14 +91,15 @@ public: std::string const inputString = " 8,10, 7"; Spectra const spectra = DiscontinuousSpectra<std::size_t>("7-8,10"); - data.setSpectra(inputString); + data->setSpectra(inputString); - TS_ASSERT(boost::apply_visitor(AreSpectraEqual(), data.spectra(), spectra)); + TS_ASSERT( + boost::apply_visitor(AreSpectraEqual(), data->spectra(), spectra)); } void test_data_is_stored_in_the_ADS() { auto const data = getIndirectFitData(1); - SetUpADSWithWorkspace ads("WorkspaceName", data.workspace()); + SetUpADSWithWorkspace ads("WorkspaceName", data->workspace()); TS_ASSERT(ads.doesExist("WorkspaceName")); auto workspace = ads.retrieveWorkspace("WorkspaceName"); @@ -111,36 +115,36 @@ public: std::string const rangeDelimiter = "_to_"; std::size_t const spectrum = 1; - TS_ASSERT_EQUALS(data.displayName(formatStrings[0], rangeDelimiter), + TS_ASSERT_EQUALS(data->displayName(formatStrings[0], rangeDelimiter), "_s0_Result"); - TS_ASSERT_EQUALS(data.displayName(formatStrings[1], rangeDelimiter), + TS_ASSERT_EQUALS(data->displayName(formatStrings[1], rangeDelimiter), "_f0+s0_Parameter"); - TS_ASSERT_EQUALS(data.displayName(formatStrings[2], spectrum), + TS_ASSERT_EQUALS(data->displayName(formatStrings[2], spectrum), "_s1_Parameter"); } void test_displayName_removes_red_part_of_a_workspace_name() { auto const data = getIndirectFitData(1); - SetUpADSWithWorkspace ads("Workspace_3456_red", data.workspace()); + SetUpADSWithWorkspace ads("Workspace_3456_red", data->workspace()); std::string const formatString = "%1%_s%2%_Result"; std::string const rangeDelimiter = "_to_"; - TS_ASSERT_EQUALS(data.displayName(formatString, rangeDelimiter), + TS_ASSERT_EQUALS(data->displayName(formatString, rangeDelimiter), "Workspace_3456_s0_Result"); } void test_that_the_number_of_spectra_returned_matches_the_instantiated_value() { auto const data = getIndirectFitData(10); - TS_ASSERT_EQUALS(data.numberOfSpectra(), 10); + TS_ASSERT_EQUALS(data->numberOfSpectra(), 10); } void test_that_getSpectrum_returns_the_expected_spectrum_numbers() { auto const data = getIndirectFitData(4); - for (auto i = 0u; i < data.numberOfSpectra(); ++i) { - std::size_t const spectrumNum = data.getSpectrum(i); + for (auto i = 0u; i < data->numberOfSpectra(); ++i) { + std::size_t const spectrumNum = data->getSpectrum(i); TS_ASSERT_EQUALS(spectrumNum, i); } } @@ -167,7 +171,7 @@ public: test_that_false_is_returned_from_zeroSpectra_if_data_contains_one_or_more_spectra() { for (auto i = 1u; i < 10; ++i) { auto const data = getIndirectFitData(i); - TS_ASSERT_EQUALS(data.zeroSpectra(), false); + TS_ASSERT_EQUALS(data->zeroSpectra(), false); } } @@ -177,14 +181,14 @@ public: /// string is in the correct order(unordered: 10,11 9,7 ordered:10,11,7,9) auto data = getIndirectFitData(4); - data.setExcludeRegionString("1,8", 0); - data.setExcludeRegionString("2,5", 1); - data.setExcludeRegionString("1,2,5,6,3,4", 2); + data->setExcludeRegionString("1,8", 0); + data->setExcludeRegionString("2,5", 1); + data->setExcludeRegionString("1,2,5,6,3,4", 2); - TS_ASSERT_EQUALS(data.getExcludeRegion(0), "1.0,8.0"); - TS_ASSERT_EQUALS(data.getExcludeRegion(1), "2.0,5.0"); - TS_ASSERT_EQUALS(data.getExcludeRegion(2), "1.0,2.0,5.0,6.0,3.0,4.0"); - TS_ASSERT_EQUALS(data.getExcludeRegion(3), ""); + TS_ASSERT_EQUALS(data->getExcludeRegion(0), "1.0,8.0"); + TS_ASSERT_EQUALS(data->getExcludeRegion(1), "2.0,5.0"); + TS_ASSERT_EQUALS(data->getExcludeRegion(2), "1.0,2.0,5.0,6.0,3.0,4.0"); + TS_ASSERT_EQUALS(data->getExcludeRegion(3), ""); } void @@ -193,46 +197,46 @@ public: /// string is in the correct order(unordered: 10,11 9,7 ordered:10,11,7,9) auto data = getIndirectFitData(4); - data.setExcludeRegionString("1,8", 0); - data.setExcludeRegionString("2,5", 1); + data->setExcludeRegionString("1,8", 0); + data->setExcludeRegionString("2,5", 1); std::vector<double> const regionVector1{1.0, 8.0}; std::vector<double> const regionVector2{2.0, 5.0}; - TS_ASSERT_EQUALS(data.excludeRegionsVector(0), regionVector1); - TS_ASSERT_EQUALS(data.excludeRegionsVector(1), regionVector2); - TS_ASSERT_EQUALS(data.excludeRegionsVector(3).empty(), true); + TS_ASSERT_EQUALS(data->excludeRegionsVector(0), regionVector1); + TS_ASSERT_EQUALS(data->excludeRegionsVector(1), regionVector2); + TS_ASSERT_EQUALS(data->excludeRegionsVector(3).empty(), true); } void test_that_excludeRegion_pairs_are_stored_in_an_order_of_low_to_high() { /// Example: unordered: 10,11 9,7 ordered: 10,11,7,9 auto data = getIndirectFitData(3); - data.setExcludeRegionString("6,2", 0); - data.setExcludeRegionString("6,2,1,2,3,4,7,6", 1); - data.setExcludeRegionString("1,2,2,3,20,18,21,22,7,8", 2); + data->setExcludeRegionString("6,2", 0); + data->setExcludeRegionString("6,2,1,2,3,4,7,6", 1); + data->setExcludeRegionString("1,2,2,3,20,18,21,22,7,8", 2); std::vector<double> const regionVector{2.0, 6.0}; - TS_ASSERT_EQUALS(data.getExcludeRegion(0), "2.0,6.0"); - TS_ASSERT_EQUALS(data.getExcludeRegion(1), + TS_ASSERT_EQUALS(data->getExcludeRegion(0), "2.0,6.0"); + TS_ASSERT_EQUALS(data->getExcludeRegion(1), "2.0,6.0,1.0,2.0,3.0,4.0,6.0,7.0"); - TS_ASSERT_EQUALS(data.getExcludeRegion(2), + TS_ASSERT_EQUALS(data->getExcludeRegion(2), "1.0,2.0,2.0,3.0,18.0,20.0,21.0,22.0,7.0,8.0"); - TS_ASSERT_EQUALS(data.excludeRegionsVector(0), regionVector); + TS_ASSERT_EQUALS(data->excludeRegionsVector(0), regionVector); } void test_that_excludeRegion_is_stored_without_spaces_when_there_are_many_spaces_in_input_string() { auto data = getIndirectFitData(3); - data.setExcludeRegionString(" 6, 2", 0); - data.setExcludeRegionString("6, 2,1 ,2, 3,4 ,7,6", 1); - data.setExcludeRegionString("1,2 ,2,3, 20, 18,21,22,7, 8 ", 2); + data->setExcludeRegionString(" 6, 2", 0); + data->setExcludeRegionString("6, 2,1 ,2, 3,4 ,7,6", 1); + data->setExcludeRegionString("1,2 ,2,3, 20, 18,21,22,7, 8 ", 2); - TS_ASSERT_EQUALS(data.getExcludeRegion(0), "2.0,6.0"); - TS_ASSERT_EQUALS(data.getExcludeRegion(1), + TS_ASSERT_EQUALS(data->getExcludeRegion(0), "2.0,6.0"); + TS_ASSERT_EQUALS(data->getExcludeRegion(1), "2.0,6.0,1.0,2.0,3.0,4.0,6.0,7.0"); - TS_ASSERT_EQUALS(data.getExcludeRegion(2), + TS_ASSERT_EQUALS(data->getExcludeRegion(2), "1.0,2.0,2.0,3.0,18.0,20.0,21.0,22.0,7.0,8.0"); } @@ -240,11 +244,11 @@ public: test_that_setExcludeRegion_rounds_the_numbers_in_the_input_string_to_the_appropriate_decimal_place() { auto data = getIndirectFitData(2); - data.setExcludeRegionString("6.29,2.93", 0); - data.setExcludeRegionString("2.6,2.3,1.99,3.01", 1); + data->setExcludeRegionString("6.29,2.93", 0); + data->setExcludeRegionString("2.6,2.3,1.99,3.01", 1); - TS_ASSERT_EQUALS(data.getExcludeRegion(0), "2.9,6.3"); - TS_ASSERT_EQUALS(data.getExcludeRegion(1), "2.3,2.6,2.0,3.0"); + TS_ASSERT_EQUALS(data->getExcludeRegion(0), "2.9,6.3"); + TS_ASSERT_EQUALS(data->getExcludeRegion(1), "2.3,2.6,2.0,3.0"); } void test_throws_when_setSpectra_is_provided_an_out_of_range_spectra() { @@ -257,9 +261,9 @@ public: "10", "100000000000000000000000000000", "1,5,10", "1,2,3,4,5,6,22"}; for (auto i = 0u; i < spectraPairs.size(); ++i) - TS_ASSERT_THROWS(data.setSpectra(spectraPairs[i]), std::runtime_error); + TS_ASSERT_THROWS(data->setSpectra(spectraPairs[i]), std::runtime_error); for (auto i = 0u; i < spectraStrings.size(); ++i) - TS_ASSERT_THROWS(data.setSpectra(spectraStrings[i]), std::runtime_error); + TS_ASSERT_THROWS(data->setSpectra(spectraStrings[i]), std::runtime_error); } void test_no_throw_when_setSpectra_is_provided_a_valid_spectra() { @@ -271,51 +275,51 @@ public: "1,2,3,4,5,6"}; for (auto i = 0u; i < spectraPairs.size(); ++i) - TS_ASSERT_THROWS_NOTHING(data.setSpectra(spectraPairs[i])); + TS_ASSERT_THROWS_NOTHING(data->setSpectra(spectraPairs[i])); for (auto i = 0u; i < spectraStrings.size(); ++i) - TS_ASSERT_THROWS_NOTHING(data.setSpectra(spectraStrings[i])); + TS_ASSERT_THROWS_NOTHING(data->setSpectra(spectraStrings[i])); } void test_no_throw_when_setStartX_is_provided_a_valid_xValue_and_spectrum_number() { auto data = getIndirectFitData(10); - TS_ASSERT_THROWS_NOTHING(data.setStartX(0.0, 0)); - TS_ASSERT_THROWS_NOTHING(data.setStartX(-5.0, 0)); - TS_ASSERT_THROWS_NOTHING(data.setStartX(5000000, 10)); + TS_ASSERT_THROWS_NOTHING(data->setStartX(0.0, 0)); + TS_ASSERT_THROWS_NOTHING(data->setStartX(-5.0, 0)); + TS_ASSERT_THROWS_NOTHING(data->setStartX(5000000, 10)); } void test_the_provided_startX_is_stored_in_range_after_using_setStartX() { auto data = getIndirectFitData(3); - data.setStartX(-5.0, 0); - data.setStartX(6.53, 1); - data.setStartX(100000000000000.0, 2); + data->setStartX(-5.0, 0); + data->setStartX(6.53, 1); + data->setStartX(100000000000000.0, 2); - TS_ASSERT_EQUALS(data.getRange(0).first, -5.0); - TS_ASSERT_EQUALS(data.getRange(1).first, 6.53); - TS_ASSERT_EQUALS(data.getRange(2).first, 100000000000000.0); + TS_ASSERT_EQUALS(data->getRange(0).first, -5.0); + TS_ASSERT_EQUALS(data->getRange(1).first, 6.53); + TS_ASSERT_EQUALS(data->getRange(2).first, 100000000000000.0); } void test_no_throw_when_setEndX_is_provided_a_valid_xValue_and_spectrum_number() { auto data = getIndirectFitData(10); - TS_ASSERT_THROWS_NOTHING(data.setStartX(0.0, 0)); - TS_ASSERT_THROWS_NOTHING(data.setStartX(-5.0, 0)); - TS_ASSERT_THROWS_NOTHING(data.setStartX(5000000, 10)); + TS_ASSERT_THROWS_NOTHING(data->setStartX(0.0, 0)); + TS_ASSERT_THROWS_NOTHING(data->setStartX(-5.0, 0)); + TS_ASSERT_THROWS_NOTHING(data->setStartX(5000000, 10)); } void test_the_provided_endX_is_stored_in_range_after_using_setEndX() { auto data = getIndirectFitData(3); - data.setEndX(-5.0, 0); - data.setEndX(6.53, 1); - data.setEndX(100000000000000.0, 2); + data->setEndX(-5.0, 0); + data->setEndX(6.53, 1); + data->setEndX(100000000000000.0, 2); - TS_ASSERT_EQUALS(data.getRange(0).second, -5.0); - TS_ASSERT_EQUALS(data.getRange(1).second, 6.53); - TS_ASSERT_EQUALS(data.getRange(2).second, 100000000000000.0); + TS_ASSERT_EQUALS(data->getRange(0).second, -5.0); + TS_ASSERT_EQUALS(data->getRange(1).second, 6.53); + TS_ASSERT_EQUALS(data->getRange(2).second, 100000000000000.0); } void @@ -323,9 +327,9 @@ public: auto data1 = getIndirectFitData(2); auto data2 = getIndirectFitData(2); - data1.setStartX(6.53, 0); - data2.setStartX(5.0, 1); - auto const combinedData = data2.combine(data1); + data1->setStartX(6.53, 0); + data2->setStartX(5.0, 1); + auto const combinedData = data2->combine(*data1); TS_ASSERT_EQUALS(combinedData.getRange(0).first, 6.53); TS_ASSERT_EQUALS(combinedData.getRange(1).first, 5.0); @@ -336,9 +340,9 @@ public: auto data1 = getIndirectFitData(2); auto data2 = getIndirectFitData(2); - data1.setEndX(2.34, 0); - data2.setEndX(5.9, 1); - auto const combinedData = data2.combine(data1); + data1->setEndX(2.34, 0); + data2->setEndX(5.9, 1); + auto const combinedData = data2->combine(*data1); TS_ASSERT_EQUALS(combinedData.getRange(0).second, 2.34); TS_ASSERT_EQUALS(combinedData.getRange(1).second, 5.9); @@ -349,9 +353,9 @@ public: auto data1 = getIndirectFitData(2); auto data2 = getIndirectFitData(2); - data1.setExcludeRegionString("1,2,6,5", 0); - data1.setExcludeRegionString("6,2", 1); - auto const combinedData = data2.combine(data1); + data1->setExcludeRegionString("1,2,6,5", 0); + data1->setExcludeRegionString("6,2", 1); + auto const combinedData = data2->combine(*data1); TS_ASSERT_EQUALS(combinedData.getExcludeRegion(0), "1.0,2.0,5.0,6.0"); TS_ASSERT_EQUALS(combinedData.getExcludeRegion(1), "2.0,6.0"); @@ -362,9 +366,9 @@ public: auto data1 = getIndirectFitData(10); auto data2 = getIndirectFitData(10); - data1.setSpectra(std::make_pair(0u, 4u)); - data2.setSpectra(std::make_pair(5u, 9u)); - auto const combinedData = data2.combine(data1); + data1->setSpectra(std::make_pair(0u, 4u)); + data2->setSpectra(std::make_pair(5u, 9u)); + auto const combinedData = data2->combine(*data1); Spectra const spec(std::make_pair(0u, 9u)); TS_ASSERT( @@ -376,9 +380,9 @@ public: auto data1 = getIndirectFitData(10); auto data2 = getIndirectFitData(10); - data1.setSpectra(std::make_pair(0u, 4u)); - data2.setSpectra(std::make_pair(8u, 9u)); - auto const combinedData = data2.combine(data1); + data1->setSpectra(std::make_pair(0u, 4u)); + data2->setSpectra(std::make_pair(8u, 9u)); + auto const combinedData = data2->combine(*data1); Spectra const spec(DiscontinuousSpectra<std::size_t>("0-4,8-9")); TS_ASSERT( @@ -390,9 +394,9 @@ public: auto data1 = getIndirectFitData(10); auto data2 = getIndirectFitData(10); - data1.setSpectra(std::make_pair(0u, 8u)); - data2.setSpectra(std::make_pair(4u, 9u)); - auto const combinedData = data2.combine(data1); + data1->setSpectra(std::make_pair(0u, 8u)); + data2->setSpectra(std::make_pair(4u, 9u)); + auto const combinedData = data2->combine(*data1); Spectra const spec(DiscontinuousSpectra<std::size_t>("0-9")); TS_ASSERT( @@ -404,9 +408,9 @@ public: auto data1 = getIndirectFitData(10); auto data2 = getIndirectFitData(10); - data1.setSpectra(DiscontinuousSpectra<std::size_t>("0-4")); - data2.setSpectra(DiscontinuousSpectra<std::size_t>("5-9")); - auto const combinedData = data2.combine(data1); + data1->setSpectra(DiscontinuousSpectra<std::size_t>("0-4")); + data2->setSpectra(DiscontinuousSpectra<std::size_t>("5-9")); + auto const combinedData = data2->combine(*data1); Spectra const spec(DiscontinuousSpectra<std::size_t>("0-9")); TS_ASSERT( @@ -418,9 +422,9 @@ public: auto data1 = getIndirectFitData(10); auto data2 = getIndirectFitData(10); - data1.setSpectra(DiscontinuousSpectra<std::size_t>("0-7")); - data2.setSpectra(DiscontinuousSpectra<std::size_t>("2-9")); - auto const combinedData = data2.combine(data1); + data1->setSpectra(DiscontinuousSpectra<std::size_t>("0-7")); + data2->setSpectra(DiscontinuousSpectra<std::size_t>("2-9")); + auto const combinedData = data2->combine(*data1); Spectra const spec(DiscontinuousSpectra<std::size_t>("0-9")); TS_ASSERT( @@ -432,9 +436,9 @@ public: auto data1 = getIndirectFitData(10); auto data2 = getIndirectFitData(10); - data1.setSpectra(DiscontinuousSpectra<std::size_t>("0-4")); - data2.setSpectra(std::make_pair(5u, 9u)); - auto const combinedData = data2.combine(data1); + data1->setSpectra(DiscontinuousSpectra<std::size_t>("0-4")); + data2->setSpectra(std::make_pair(5u, 9u)); + auto const combinedData = data2->combine(*data1); Spectra const spec(DiscontinuousSpectra<std::size_t>("0-9")); TS_ASSERT( @@ -446,9 +450,9 @@ public: auto data1 = getIndirectFitData(10); auto data2 = getIndirectFitData(10); - data1.setSpectra(DiscontinuousSpectra<std::size_t>("0-7")); - data2.setSpectra(std::make_pair(4u, 9u)); - auto const combinedData = data2.combine(data1); + data1->setSpectra(DiscontinuousSpectra<std::size_t>("0-7")); + data2->setSpectra(std::make_pair(4u, 9u)); + auto const combinedData = data2->combine(*data1); Spectra const spec(DiscontinuousSpectra<std::size_t>("0-9")); TS_ASSERT( diff --git a/qt/scientific_interfaces/Indirect/test/IndirectFitOutputTest.h b/qt/scientific_interfaces/Indirect/test/IndirectFitOutputTest.h index cb2432857ce1f2bec44533ad3b461868879bed2a..9deab3f4cc1351feafbaeda0e32d787b346cba77 100644 --- a/qt/scientific_interfaces/Indirect/test/IndirectFitOutputTest.h +++ b/qt/scientific_interfaces/Indirect/test/IndirectFitOutputTest.h @@ -4,12 +4,72 @@ #include <cxxtest/TestSuite.h> #include "IndirectFitOutput.h" +#include "MantidAPI/AlgorithmManager.h" +#include "MantidAPI/ITableWorkspace.h" #include "MantidAPI/MatrixWorkspace.h" +#include "MantidAPI/TableRow.h" +#include "MantidAPI/WorkspaceGroup.h" #include "MantidTestHelpers/IndirectFitDataCreationHelper.h" #include <iostream> +using namespace Mantid::API; using namespace Mantid::IndirectFitDataCreationHelper; +using namespace MantidQt::CustomInterfaces::IDA; + +namespace { + +IndirectFitData getIndirectFitData(int const &numberOfSpectra) { + auto const workspace = createWorkspace(numberOfSpectra); + Spectra const spec = std::make_pair(0u, workspace->getNumberHistograms() - 1); + IndirectFitData data(workspace, spec); + return data; +} + +ITableWorkspace_sptr getEmptyTableWorkspace() { + auto table = WorkspaceFactory::Instance().createTable(); + std::vector<std::string> columnHeadings{"axis-1", "Height", "Height_Err", + "Msd", "Msd_Err", "Chi_squared"}; + for (auto i = 0u; i < columnHeadings.size(); ++i) + table->addColumn("double", columnHeadings[i]); + return table; +} + +ITableWorkspace_sptr getPopulatedParameterTable(std::size_t const &size) { + auto table = getEmptyTableWorkspace(); + for (auto i = 0u; i < size; ++i) { + TableRow row = table->appendRow(); + row << 14.675 << 0.047 << 0.001 << 0.514 << 0.0149 << 5.138; + } + return table; +} + +WorkspaceGroup_sptr +getGroupWorkspaceWithEmptyWorkspaces(std::size_t const &size) { + WorkspaceGroup_sptr resultWorkspaces = boost::make_shared<WorkspaceGroup>(); + for (auto i = 0u; i < size; ++i) + resultWorkspaces->addWorkspace(createWorkspace(10)); + return resultWorkspaces; +} + +WorkspaceGroup_sptr getResultWorkspaces(std::size_t const &size) { + return getGroupWorkspaceWithEmptyWorkspaces(size); +} + +WorkspaceGroup_sptr getResultGroup(std::size_t const &size) { + return getGroupWorkspaceWithEmptyWorkspaces(size); +} + +// IndirectFitOutput createFitOutput(WorkspaceGroup_sptr resultGroup, +// ITableWorkspace_sptr parameterTable, +// WorkspaceGroup_sptr resultWorkspace, +// IndirectFitData *fitData, +// std::size_t &spectrum) { +// return MantidQt::CustomInterfaces::IDA::IndirectFitOutput( +// resultGroup, parameterTable, resultWorkspace, fitData, spectrum); +//} + +} // namespace class IndirectFitOutputTest : public CxxTest::TestSuite { public: @@ -19,6 +79,21 @@ public: static void destroySuite(IndirectFitOutputTest *suite) { delete suite; } + void + test_that_IndirectFitOutput_constructor_will_set_the_values_of_the_output_data() { + auto resultGroup = getResultGroup(2); + auto resultWorkspaces = getResultWorkspaces(2); + auto parameterTable = getPopulatedParameterTable(2); + IndirectFitData *data = new IndirectFitData(getIndirectFitData(5)); + std::size_t spectrum = 0; + + IndirectFitOutput outputData(resultGroup, parameterTable, resultWorkspaces, + data, spectrum); + + // auto const fitOutput = createFitOutput(resultGroup, parameterTable, + // resultWorkspaces, data, spectrum); + } + void test_that_isSpectrumFit_returns_false_if_the_spectrum_has_not_been_previously_fit() { }