Skip to content
Snippets Groups Projects
LoadCalFileTest.h 4.1 KiB
Newer Older
#ifndef MANTID_DATAHANDLING_LOADCALFILETEST_H_
#define MANTID_DATAHANDLING_LOADCALFILETEST_H_

#include <cxxtest/TestSuite.h>
#include "MantidKernel/Timer.h"
#include "MantidKernel/System.h"

#include "MantidDataHandling/LoadCalFile.h"
#include "MantidDataObjects/GroupingWorkspace.h"

using namespace Mantid::DataHandling;
using namespace Mantid::DataObjects;
using namespace Mantid::API;

class LoadCalFileTest : public CxxTest::TestSuite {
  void test_Init() {
    TS_ASSERT_THROWS_NOTHING(alg.initialize())
    TS_ASSERT(alg.isInitialized())

  void test_exec() {
    // Name of the output workspace.
    std::string outWSName("LoadCalFileTest");
    TS_ASSERT_THROWS_NOTHING(alg.initialize())
    TS_ASSERT(alg.isInitialized())
    TS_ASSERT_THROWS_NOTHING(alg.setPropertyValue("InstrumentName", "GEM"));
    TS_ASSERT_THROWS_NOTHING(alg.setProperty("MakeGroupingWorkspace", true));
    TS_ASSERT_THROWS_NOTHING(alg.setProperty("MakeOffsetsWorkspace", true));
    TS_ASSERT_THROWS_NOTHING(alg.setProperty("MakeMaskWorkspace", true));
    TS_ASSERT_THROWS_NOTHING(
        alg.setPropertyValue("CalFilename", "offsets_2006_cycle064.cal"));
    TS_ASSERT_THROWS_NOTHING(alg.setPropertyValue("WorkspaceName", outWSName));
    TS_ASSERT_THROWS_NOTHING(alg.execute(););
    TS_ASSERT(alg.isExecuted());

    std::string title = "offsets_2006_cycle064.cal";

    // Retrieve the workspace from data service. TODO: Change to your desired
    // type
    TS_ASSERT_THROWS_NOTHING(
        groupWS = AnalysisDataService::Instance().retrieveWS<GroupingWorkspace>(
            outWSName + "_group"));
    TS_ASSERT(groupWS);
    if (!groupWS)
      return;
    TS_ASSERT_EQUALS(groupWS->getTitle(), title);
    TS_ASSERT_EQUALS(int(groupWS->getValue(101001)), 2);
    TS_ASSERT_EQUALS(int(groupWS->getValue(715079)), 7);
    // Check if filename is saved
    TS_ASSERT_EQUALS(alg.getPropertyValue("CalFilename"),
                     groupWS->run().getProperty("Filename")->value());

    OffsetsWorkspace_sptr offsetsWS;
    TS_ASSERT_THROWS_NOTHING(
        offsetsWS =
            AnalysisDataService::Instance().retrieveWS<OffsetsWorkspace>(
                outWSName + "_offsets"));
    TS_ASSERT(offsetsWS);
    if (!offsetsWS)
      return;
    TS_ASSERT_EQUALS(offsetsWS->getTitle(), title);
    TS_ASSERT_DELTA(offsetsWS->getValue(101001), -0.0497075, 1e-7);
    TS_ASSERT_DELTA(offsetsWS->getValue(714021), 0.0007437, 1e-7);
    // Check if filename is saved
    TS_ASSERT_EQUALS(alg.getPropertyValue("CalFilename"),
                     offsetsWS->run().getProperty("Filename")->value());

    SpecialWorkspace2D_sptr maskWS;
    TS_ASSERT_THROWS_NOTHING(
        maskWS = AnalysisDataService::Instance().retrieveWS<SpecialWorkspace2D>(
            outWSName + "_mask"));
    TS_ASSERT(maskWS);
    if (!maskWS)
      return;
    TS_ASSERT_EQUALS(maskWS->getTitle(), title);
    TS_ASSERT_EQUALS( int(maskWS->getValue(101001)), 1 );
    TS_ASSERT_EQUALS( int(maskWS->getValue(101003)), 0 );
    TS_ASSERT_EQUALS( int(maskWS->getValue(101008)), 0 );
    TS_ASSERT_EQUALS( int(maskWS->getValue(715079)), 1 );
    TS_ASSERT_EQUALS(int(maskWS->getValue(101001)), 0);
    TS_ASSERT_EQUALS(int(maskWS->getValue(101003)), 1);
    TS_ASSERT_EQUALS(int(maskWS->getValue(101008)), 1);
    TS_ASSERT_EQUALS(int(maskWS->getValue(715079)), 0);
    TS_ASSERT(!maskWS->getInstrument()->getDetector(101001)->isMasked());
    TS_ASSERT(maskWS->getInstrument()->getDetector(101003)->isMasked());
    TS_ASSERT(maskWS->getInstrument()->getDetector(101008)->isMasked());
    TS_ASSERT(!maskWS->getInstrument()->getDetector(715079)->isMasked());
    // Check if filename is saved
    TS_ASSERT_EQUALS(alg.getPropertyValue("CalFilename"),
                     maskWS->run().getProperty("Filename")->value());
    // Remove workspace from the data service.
    AnalysisDataService::Instance().remove(outWSName + "_group");
    AnalysisDataService::Instance().remove(outWSName + "_offsets");
    AnalysisDataService::Instance().remove(outWSName + "_mask");
  }
};

#endif /* MANTID_DATAHANDLING_LOADCALFILETEST_H_ */