Newer
Older
#ifndef ALG_CHOPDATA_TEST_H_
#define ALG_CHOPDATA_TEST_H_
#include <cxxtest/TestSuite.h>
#include "MantidAlgorithms/ChopData.h"
#include "MantidTestHelpers/WorkspaceCreationHelper.h"
using namespace Mantid::API;
using namespace Mantid::Algorithms;
class ChopDataTest : public CxxTest::TestSuite {
alg = new ChopData();
TS_ASSERT_EQUALS(alg->name(), "ChopData");
TS_ASSERT_EQUALS(alg->version(), 1);
delete alg;
}
alg = new ChopData();
TS_ASSERT_THROWS_NOTHING(alg->initialize());
TS_ASSERT(alg->isInitialized());
delete alg;
}
void testExec() {
Mantid::DataObjects::Workspace2D_sptr inputWS =
WorkspaceCreationHelper::Create2DWorkspaceBinned(149, 24974, 5, 4);
for (int i = 0; i < 4995; i++) {
inputWS->dataX(140)[i + 19980] = 0.2;
}
inputWS->getAxis(0)->setUnit("TOF");
TS_ASSERT_THROWS_NOTHING(Mantid::API::AnalysisDataService::Instance().add(
"chopdatatest_input", inputWS));
const size_t nHist = inputWS->getNumberHistograms();
TS_ASSERT_EQUALS(nHist, 149);
alg = new ChopData();
TS_ASSERT_THROWS_NOTHING(alg->initialize());
TS_ASSERT_THROWS_NOTHING(
alg->setPropertyValue("InputWorkspace", "chopdatatest_input"));
TS_ASSERT_THROWS_NOTHING(
alg->setPropertyValue("OutputWorkspace", "chopdatatest_output"));
TS_ASSERT_THROWS_NOTHING(
alg->setProperty<int>("MonitorWorkspaceIndex", 140));
TS_ASSERT_THROWS_NOTHING(
alg->setProperty<double>("IntegrationRangeLower", 5000.0));
TS_ASSERT_THROWS_NOTHING(
alg->setProperty<double>("IntegrationRangeUpper", 10000.0));
TS_ASSERT_THROWS_NOTHING(alg->execute());
TS_ASSERT(alg->isExecuted());
// Get workspace group output by algorithm
Mantid::API::WorkspaceGroup_sptr wsgroup;
TS_ASSERT_THROWS_NOTHING(
wsgroup = boost::dynamic_pointer_cast<Mantid::API::WorkspaceGroup>(
Mantid::API::AnalysisDataService::Instance().retrieve(
"chopdatatest_output")));
TS_ASSERT_EQUALS(wsgroup->getNumberOfEntries(), 4);
std::vector<std::string> wsnames = wsgroup->getNames();
Mantid::API::MatrixWorkspace_const_sptr output1;
Mantid::API::MatrixWorkspace_const_sptr output4;
TS_ASSERT_THROWS_NOTHING(
output1 = boost::dynamic_pointer_cast<Mantid::API::MatrixWorkspace>(
Mantid::API::AnalysisDataService::Instance().retrieve(wsnames[0])));
output4 = boost::dynamic_pointer_cast<Mantid::API::MatrixWorkspace>(
Mantid::API::AnalysisDataService::Instance().retrieve(wsnames[3])));
TS_ASSERT_EQUALS(output1->getNumberHistograms(), nHist);
TS_ASSERT_EQUALS(output4->getNumberHistograms(), nHist);
TS_ASSERT_EQUALS(output1->blocksize(), 4998);
TS_ASSERT_EQUALS(output4->blocksize(), 9975);
TS_ASSERT(output1->readX(0)[4997] < output4->readX(0)[9975]);
delete alg;
// Cleanup
AnalysisDataService::Instance().remove("chopdatatest_input");
AnalysisDataService::Instance().deepRemoveGroup("chopdatatest_output");