From 19e02c9bcecd7ba2330635b475c74fdce72a9c45 Mon Sep 17 00:00:00 2001 From: Dan Nixon Date: Tue, 2 Jun 2015 10:42:45 +0100 Subject: [PATCH] Add unit tests Refs #11873 --- .../CurveFitting/src/SplineInterpolation.cpp | 2 +- .../test/SplineInterpolationTest.h | 49 ++++++++++++++++--- 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/Code/Mantid/Framework/CurveFitting/src/SplineInterpolation.cpp b/Code/Mantid/Framework/CurveFitting/src/SplineInterpolation.cpp index 06f098090762..2f31b1f8e95d 100644 --- a/Code/Mantid/Framework/CurveFitting/src/SplineInterpolation.cpp +++ b/Code/Mantid/Framework/CurveFitting/src/SplineInterpolation.cpp @@ -154,7 +154,7 @@ SplineInterpolation::setupOutputWorkspace(API::MatrixWorkspace_sptr mws, WorkspaceFactory::Instance().create(mws, numSpec); // Use the vertical axis form the workspace to interpolate on the output WS - Axis *vAxis = iws->getAxis(1); + Axis *vAxis = iws->getAxis(1)->clone(NULL); outputWorkspace->replaceAxis(1, vAxis); return outputWorkspace; diff --git a/Code/Mantid/Framework/CurveFitting/test/SplineInterpolationTest.h b/Code/Mantid/Framework/CurveFitting/test/SplineInterpolationTest.h index f743f5fbd82b..303b2a7ee4d1 100644 --- a/Code/Mantid/Framework/CurveFitting/test/SplineInterpolationTest.h +++ b/Code/Mantid/Framework/CurveFitting/test/SplineInterpolationTest.h @@ -5,8 +5,11 @@ #include "MantidCurveFitting/SplineInterpolation.h" #include "MantidTestHelpers/WorkspaceCreationHelper.h" +#include "MantidAPI/NumericAxis.h" +#include "MantidAPI/TextAxis.h" using Mantid::CurveFitting::SplineInterpolation; +using namespace Mantid::API; class SplineInterpolationTest : public CxxTest::TestSuite { @@ -34,8 +37,6 @@ class SplineInterpolationTest : public CxxTest::TestSuite void testExec() { - using namespace Mantid::API; - int order(2), spectra(1); //create binned workspaces @@ -49,8 +50,6 @@ class SplineInterpolationTest : public CxxTest::TestSuite void testExecHistogramData() { - using namespace Mantid::API; - int order(2), spectra(1); //create binned workspaces @@ -64,29 +63,65 @@ class SplineInterpolationTest : public CxxTest::TestSuite void testExecMultipleSpectra() { - using namespace Mantid::API; + int order(2), spectra(3); + + //create binned workspaces + MatrixWorkspace_sptr mws = WorkspaceCreationHelper::Create2DWorkspaceFromFunction(SplineFunc(), 1, 0, 20, 1, true); + MatrixWorkspace_sptr iws = WorkspaceCreationHelper::Create2DWorkspaceFromFunction(SplineFunc(), spectra, 0, 20, 1, true); + + SplineInterpolation alg; + runAlgorithm(alg, order, iws, mws); + checkOutput(alg); + } + void testAxisCopy() + { int order(2), spectra(3); //create binned workspaces MatrixWorkspace_sptr mws = WorkspaceCreationHelper::Create2DWorkspaceFromFunction(SplineFunc(), 1, 0, 20, 1, true); MatrixWorkspace_sptr iws = WorkspaceCreationHelper::Create2DWorkspaceFromFunction(SplineFunc(), spectra, 0, 20, 1, true); + // Add an axis + TextAxis * vAxis = new TextAxis(spectra); + vAxis->setLabel(0, "a"); + vAxis->setLabel(1, "b"); + vAxis->setLabel(2, "c"); + iws->replaceAxis(1, vAxis); + SplineInterpolation alg; runAlgorithm(alg, order, iws, mws); checkOutput(alg); + + // Check the axis values are preserved + MatrixWorkspace_const_sptr ows = alg.getProperty("OutputWorkspace"); + TextAxis * vAxisOut = dynamic_cast(ows->getAxis(1)); + TS_ASSERT(vAxisOut); + if(vAxisOut) + { + TS_ASSERT_EQUALS(vAxisOut->label(0), "a"); + TS_ASSERT_EQUALS(vAxisOut->label(1), "b"); + TS_ASSERT_EQUALS(vAxisOut->label(2), "c"); + } } void checkOutput(const SplineInterpolation& alg) const { - using namespace Mantid::API; - MatrixWorkspace_const_sptr ows = alg.getProperty("OutputWorkspace"); WorkspaceGroup_const_sptr derivs = alg.getProperty("OutputWorkspaceDeriv"); for (size_t i = 0; i < ows->getNumberHistograms(); ++i) { MatrixWorkspace_const_sptr derivsWs = boost::dynamic_pointer_cast(derivs->getItem(i)); + + NumericAxis * derivVAxis = dynamic_cast(derivsWs->getAxis(1)); + TS_ASSERT(derivVAxis); + if(derivVAxis) + { + for(size_t i = 0; i < derivsWs->getNumberHistograms(); i++) + TS_ASSERT_EQUALS((*derivVAxis)(i), i + 1); + } + const auto & xs = ows->readX(i); const auto & ys = ows->readY(i); const auto & d1 = derivsWs->readY(0);