Skip to content
Snippets Groups Projects
Commit 6385cc60 authored by Sullivan, Brendan T's avatar Sullivan, Brendan T
Browse files

Re #24329 write unit test

parent b5f3b0ff
No related branches found
No related tags found
No related merge requests found
......@@ -201,7 +201,7 @@ set ( TEST_FILES
SaveLauenormTest.h
SelectCellOfTypeTest.h
SelectCellWithFormTest.h
SetCrystalLocation.h
SetCrystalLocationTest.h
SetGoniometerTest.h
SetSpecialCoordinatesTest.h
SetUBTest.h
......
// Mantid Repository : https://github.com/mantidproject/mantid
//
// Copyright © 2018 ISIS Rutherford Appleton Laboratory UKRI,
// NScD Oak Ridge National Laboratory, European Spallation Source
// & Institut Laue - Langevin
// SPDX - License - Identifier: GPL - 3.0 +
#ifndef SETCRYSTALLOCATIONTEST_H_
#define SETCRYSTALLOCATIONTEST_H_
#include "MantidAPI/ITableWorkspace.h"
#include "MantidCrystal/LoadIsawUB.h"
#include "MantidCrystal/ShowPeakHKLOffsets.h"
#include "MantidDataHandling/LoadNexusProcessed.h"
#include "MantidDataObjects/PeaksWorkspace.h"
#include <cxxtest/TestSuite.h>
using Mantid::DataHandling::LoadNexusProcessed;
using namespace Mantid::DataObjects;
using Mantid::Crystal::LoadIsawUB;
using Mantid::Crystal::ShowPeakHKLOffsets;
using Mantid::DataObjects::TableWorkspace;
class SetCrystalLocationTest : public CxxTest::TestSuite {
public:
void test_basic() {
LoadNexusProcessed load;
load.initialize();
load.setProperty("Filename", "TOPAZ_3007.peaks.nxs");
load.setProperty("OutputWorkspace", "aaa");
load.execute();
}
};
#endif /* SETCRYSTALLOCATIONTEST_H_ */
// Mantid Repository : https://github.com/mantidproject/mantid
//
// Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
// NScD Oak Ridge National Laboratory, European Spallation Source
// & Institut Laue - Langevin
// SPDX - License - Identifier: GPL - 3.0 +
#ifndef SETCRYSTALLOCATIONTEST_H_
#define SETCRYSTALLOCATIONTEST_H_
#include "MantidAPI/AnalysisDataService.h"
#include "MantidAPI/ITableWorkspace.h"
#include "MantidCrystal/LoadIsawUB.h"
#include "MantidCrystal/ShowPeakHKLOffsets.h"
#include "MantidCrystal/SetCrystalLocation.h"
#include "MantidDataHandling/Load.h"
#include "MantidDataObjects/PeaksWorkspace.h"
#include "MantidDataObjects/EventWorkspace.h"
#include <cxxtest/TestSuite.h>
using Mantid::DataHandling::Load;
using namespace Mantid::DataObjects;
using Mantid::Crystal::LoadIsawUB;
using Mantid::Crystal::ShowPeakHKLOffsets;
using Mantid::Crystal::SetCrystalLocation;
using Mantid::DataObjects::TableWorkspace;
using Mantid::Kernel::V3D;
using namespace Mantid::API;
class SetCrystalLocationTest : public CxxTest::TestSuite {
public:
void test_algo() {
std::string WSName = "events";
std::string file_name = "BSS_11841_event.nxs";
Load loader;
TS_ASSERT_THROWS_NOTHING(loader.initialize());
TS_ASSERT(loader.isInitialized());
loader.setPropertyValue("OutputWorkspace", WSName);
loader.setPropertyValue("Filename",file_name);
TS_ASSERT(loader.execute());
TS_ASSERT(loader.isExecuted());
auto workspace = AnalysisDataService::Instance().retrieve(WSName);
EventWorkspace_sptr events = boost::dynamic_pointer_cast<EventWorkspace>(workspace);
TS_ASSERT(events);
auto inst = events->getInstrument();
TS_ASSERT(inst);
auto sample = inst->getSample();
TS_ASSERT(sample);
SetCrystalLocation algo;
TS_ASSERT_THROWS_NOTHING(algo.initialize());
TS_ASSERT(algo.isInitialized());
algo.setProperty("InputWorkspace", WSName);
algo.setProperty("OutputWorkspace", WSName);
algo.setProperty("NewX", 1.0);
algo.setProperty("NewY", -0.30);
algo.setProperty("NewZ", 10.0);
//Check the sample is at the origin by default
V3D sampPos0 = sample->getPos();
TS_ASSERT_DELTA(sampPos0.X(), 0.0, 1.e-3);
TS_ASSERT_DELTA(sampPos0.Y(), 0.0, 1.e-3);
TS_ASSERT_DELTA(sampPos0.Z(), 0.0, 1.e-3);
//Move the sample to (1.0, -0.3, 10.0)
TS_ASSERT(algo.execute());
TS_ASSERT(algo.isExecuted());
//Check that the sample moved
V3D sampPos1 = sample->getPos();
TS_ASSERT_DELTA(sampPos1.X(), 1.0, 1.e-3);
TS_ASSERT_DELTA(sampPos1.Y(), -0.30, 1.e-3);
TS_ASSERT_DELTA(sampPos1.Z(), 10.0, 1.e-3);
//Try it on a separate workspace
SetCrystalLocation algo2;
TS_ASSERT_THROWS_NOTHING(algo2.initialize());
TS_ASSERT(algo2.isInitialized());
algo2.setProperty("InputWorkspace", WSName);
algo2.setProperty("OutputWorkspace", "events_new");
algo2.setProperty("NewX", 2.0);
algo2.setProperty("NewY", 4.0);
algo2.setProperty("NewZ", 0.0);
TS_ASSERT(algo2.execute());
TS_ASSERT(algo2.isExecuted());
//Check that the original is unchanged. "Events" should be at
// the same sampPos1 = (1.0, -0.3, 10.0)
V3D sampPos2 = sample->getPos();
TS_ASSERT_DELTA(sampPos2.X(), 1.0, 1.e-3);
TS_ASSERT_DELTA(sampPos2.Y(), -0.30, 1.e-3);
TS_ASSERT_DELTA(sampPos2.Z(), 10.0, 1.e-3);
//Get pointers to the new workspace
auto workspace_new = AnalysisDataService::Instance().retrieve("events_new");
EventWorkspace_sptr events_new = boost::dynamic_pointer_cast<EventWorkspace>(workspace_new);
TS_ASSERT(events_new)
auto inst_new = events_new->getInstrument();
TS_ASSERT(inst_new);
auto sample_new = inst_new->getSample();
TS_ASSERT(sample_new);
//the new workspace should be at (2.,4.,0.,)
V3D sampPos3 = sample_new->getPos();
TS_ASSERT_DELTA(sampPos3.X(), 2.0, 1.e-3);
TS_ASSERT_DELTA(sampPos3.Y(), 4.0, 1.e-3);
TS_ASSERT_DELTA(sampPos3.Z(), 0.0, 1.e-3);
}
};
#endif /* SETCRYSTALLOCATIONTEST_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