Newer
Older
#ifndef EXTRACTFFTSPECTRUM_H_
#define EXTRACTFFTSPECTRUM_H_
#include <cxxtest/TestSuite.h>
#include "MantidAlgorithms/ExtractFFTSpectrum.h"
#include "MantidTestHelpers/WorkspaceCreationHelper.h"
#include "MantidDataHandling/LoadNexus.h"
#include "MantidAlgorithms/Rebin.h"
using namespace Mantid::Kernel;
using namespace Mantid::API;
using namespace Mantid::Algorithms;
using namespace Mantid::DataObjects;
class ExtractFFTSpectrumTest : public CxxTest::TestSuite {
ExtractFFTSpectrum alg;
TS_ASSERT_EQUALS(alg.name(), "ExtractFFTSpectrum");
TS_ASSERT_EQUALS(alg.version(), 1);
ExtractFFTSpectrum alg;
TS_ASSERT_THROWS_NOTHING(alg.initialize());
TS_ASSERT(alg.isInitialized());
Mantid::DataHandling::LoadNexus loader;
loader.initialize();
loader.setPropertyValue("Filename", "IRS26176_ipg.nxs");
loader.setPropertyValue("OutputWorkspace", "alg_irs_r");
loader.setPropertyValue("SpectrumMin", "2");
loader.setPropertyValue("SpectrumMax", "3");
TS_ASSERT_THROWS_NOTHING(loader.execute());
TS_ASSERT(loader.isExecuted());
Rebin rebin;
rebin.initialize();
rebin.setPropertyValue("InputWorkspace", "alg_irs_r");
rebin.setPropertyValue("OutputWorkspace", "alg_irs_r");
rebin.setPropertyValue("Params", "-0.5,0.005,0.5");
TS_ASSERT_THROWS_NOTHING(rebin.execute());
TS_ASSERT(rebin.isExecuted());
MatrixWorkspace_sptr inputWS =
AnalysisDataService::Instance().retrieveWS<MatrixWorkspace>(
"alg_irs_r");
ExtractFFTSpectrum alg;
alg.initialize();
TS_ASSERT_THROWS(alg.execute(),
std::runtime_error); // check it does output error
TS_ASSERT(!alg.isExecuted());
TS_ASSERT_THROWS_NOTHING(
alg.setPropertyValue("InputWorkspace", "alg_irs_r"));
TS_ASSERT_THROWS_NOTHING(alg.setPropertyValue(
"InputImagWorkspace",
"alg_irs_r")); // use same spectra for the imaginary part (Re==Im)
TS_ASSERT_THROWS_NOTHING(
alg.setPropertyValue("OutputWorkspace", "alg_irs_t"));
TS_ASSERT_THROWS_NOTHING(alg.execute());
TS_ASSERT(alg.isExecuted());
// Get output workspace
MatrixWorkspace_const_sptr outputWS;
TS_ASSERT_THROWS_NOTHING(
outputWS = AnalysisDataService::Instance().retrieveWS<MatrixWorkspace>(
"alg_irs_t"));
TS_ASSERT_EQUALS(inputWS->getNumberHistograms(),
outputWS->getNumberHistograms());
TS_ASSERT_EQUALS(inputWS->blocksize(), outputWS->blocksize());
// Units ( Axis 1 should be the same, Axis 0 should be "Time/ns"
TS_ASSERT_EQUALS(inputWS->getAxis(1)->unit(), outputWS->getAxis(1)->unit());
TS_ASSERT_EQUALS(outputWS->getAxis(0)->unit()->caption(), "Time");
TS_ASSERT_EQUALS(outputWS->getAxis(0)->unit()->label(), "ns");
}
};
#endif // EXTRACTFFTSPECTRUM_H