Skip to content

Commit

Permalink
Add unit tests Refs #11873
Browse files Browse the repository at this point in the history
  • Loading branch information
DanNixon committed Jun 2, 2015
1 parent 12fd479 commit 19e02c9
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 8 deletions.
Expand Up @@ -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;
Expand Down
49 changes: 42 additions & 7 deletions Code/Mantid/Framework/CurveFitting/test/SplineInterpolationTest.h
Expand Up @@ -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
{
Expand Down Expand Up @@ -34,8 +37,6 @@ class SplineInterpolationTest : public CxxTest::TestSuite

void testExec()
{
using namespace Mantid::API;

int order(2), spectra(1);

//create binned workspaces
Expand All @@ -49,8 +50,6 @@ class SplineInterpolationTest : public CxxTest::TestSuite

void testExecHistogramData()
{
using namespace Mantid::API;

int order(2), spectra(1);

//create binned workspaces
Expand All @@ -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<TextAxis *>(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<const MatrixWorkspace>(derivs->getItem(i));

NumericAxis * derivVAxis = dynamic_cast<NumericAxis *>(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);
Expand Down

0 comments on commit 19e02c9

Please sign in to comment.