Skip to content
Snippets Groups Projects
Commit 879d8ad0 authored by Owen Arnold's avatar Owen Arnold
Browse files

refs #13989. Use LoadNexusLogs.

parent 1b768211
No related branches found
No related tags found
No related merge requests found
......@@ -4,10 +4,12 @@
#include "MantidAPI/AlgorithmManager.h"
#include "MantidAPI/Workspace.h"
#include "MantidAPI/MatrixWorkspace.h"
#include "MantidAPI/WorkspaceFactory.h"
#include "MantidKernel/TimeSeriesProperty.h"
#include <iostream>
#include <string>
#include <sstream>
#include <boost/regex.hpp>
using namespace Mantid::API;
using namespace Mantid::Kernel;
......@@ -37,24 +39,20 @@ ReflNexusMeasurementSource::obtain(const std::string &definedPath,
}
}
try {
auto hostWorkspace =
WorkspaceFactory::Instance().create("Workspace2D", 1, 1, 1);
IAlgorithm_sptr algLoadRun =
AlgorithmManager::Instance().create("LoadISISNexus");
AlgorithmManager::Instance().create("LoadNexusLogs");
algLoadRun->setChild(true);
algLoadRun->setRethrows(true);
algLoadRun->initialize();
algLoadRun->setProperty("Filename", filenameArg);
algLoadRun->setPropertyValue("OutputWorkspace", "dummy");
algLoadRun->setProperty("Workspace", hostWorkspace);
algLoadRun->execute();
Workspace_sptr temp = algLoadRun->getProperty("OutputWorkspace");
MatrixWorkspace_sptr outWS =
boost::dynamic_pointer_cast<MatrixWorkspace>(temp);
if (outWS.get() == NULL) {
WorkspaceGroup_sptr tempGroup =
boost::dynamic_pointer_cast<WorkspaceGroup>(temp);
outWS =
boost::dynamic_pointer_cast<MatrixWorkspace>(tempGroup->getItem(0));
}
auto run = outWS->run();
auto run = hostWorkspace->run();
const std::string measurementId =
run.getPropertyValueAsType<std::string>("measurement_id");
const std::string measurementSubId =
......@@ -63,8 +61,15 @@ ReflNexusMeasurementSource::obtain(const std::string &definedPath,
run.getPropertyValueAsType<std::string>("measurement_label");
const std::string measurementType =
run.getPropertyValueAsType<std::string>("measurement_type");
const std::string runNumber =
run.getPropertyValueAsType<std::string>("run_number");
std::string runNumber;
try {
runNumber = run.getPropertyValueAsType<std::string>("run_number");
} catch (Exception::NotFoundError &) {
boost::regex re("([0-9]*)$");
boost::smatch match;
boost::regex_search(fuzzyName, match, re);
runNumber = match[0];
}
double theta = -1.0;
try {
......
......@@ -12,29 +12,35 @@ class ReflNexusMeasurementSourceTest : public CxxTest::TestSuite {
public:
// This pair of boilerplate methods prevent the suite being created statically
// This means the constructor isn't called when running other tests
static ReflNexusMeasurementSourceTest *createSuite() { return new ReflNexusMeasurementSourceTest(); }
static void destroySuite( ReflNexusMeasurementSourceTest *suite ) { delete suite; }
static ReflNexusMeasurementSourceTest *createSuite() {
return new ReflNexusMeasurementSourceTest();
}
static void destroySuite(ReflNexusMeasurementSourceTest *suite) {
delete suite;
}
void test_obatin_via_full_path() {
void test_obtain_via_full_path() {
std::string path =
Mantid::API::FileFinder::Instance().findRun("POLREF14966");
Poco::File file(path);
TSM_ASSERT("Test setup incorrect", !path.empty() && file.exists());
ReflNexusMeasurementSource source;
Measurement measurement = source.obtain(path, "made_up");
TS_ASSERT(measurement.isUseable());
TS_ASSERT(measurement.isUseable());
TS_ASSERT_EQUALS("34", measurement.id());
TS_ASSERT_EQUALS("0", measurement.subId());
TS_ASSERT_EQUALS("14966", measurement.run());
TS_ASSERT_EQUALS("", measurement.label());
TS_ASSERT_EQUALS("", measurement.label());
Poco::File file(path);
TSM_ASSERT("Test setup incorrect", !path.empty() && file.exists());
ReflNexusMeasurementSource source;
Measurement measurement = source.obtain(path, "POLREF1111");
TS_ASSERT(measurement.isUseable());
TS_ASSERT(measurement.isUseable());
TS_ASSERT_EQUALS("34", measurement.id());
TS_ASSERT_EQUALS("0", measurement.subId());
TS_ASSERT_EQUALS(
"1111",
measurement
.run()); // Run number is taken from fuzzy because log is missing.
TS_ASSERT_EQUALS("", measurement.label());
TS_ASSERT_EQUALS("", measurement.label());
}
void test_obtain_via_fuzzy_path()
{
void test_obtain_via_fuzzy_path() {
ReflNexusMeasurementSource source;
Measurement measurement = source.obtain("made_up", "POLREF14966");
......@@ -45,8 +51,6 @@ public:
TS_ASSERT_EQUALS("", measurement.label());
TS_ASSERT_EQUALS("", measurement.label());
}
};
#endif /* MANTIDQT_CUSTOMINTERFACES_REFLNEXUSMEASUREMENTSOURCETEST_H_ */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment