From 593ebf292b6dc58d3df17738e91a01a15fb29331 Mon Sep 17 00:00:00 2001
From: Dennis Mikkelson <mikkelsond@uwstout.edu>
Date: Fri, 26 Aug 2011 16:41:09 +0000
Subject: [PATCH] Added test for FindUBUsingLatticeParameters algorithm. refs
 #3577

---
 .../test/FindUBUsingLatticeParametersTest.h   | 89 +++++++++++++++++++
 1 file changed, 89 insertions(+)
 create mode 100644 Code/Mantid/Framework/Crystal/test/FindUBUsingLatticeParametersTest.h

diff --git a/Code/Mantid/Framework/Crystal/test/FindUBUsingLatticeParametersTest.h b/Code/Mantid/Framework/Crystal/test/FindUBUsingLatticeParametersTest.h
new file mode 100644
index 00000000000..b8825f85e0f
--- /dev/null
+++ b/Code/Mantid/Framework/Crystal/test/FindUBUsingLatticeParametersTest.h
@@ -0,0 +1,89 @@
+#ifndef MANTID_CRYSTAL_FIND_UB_USING_LATTICE_PARAMETERS_TEST_H_
+#define MANTID_CRYSTAL_FIND_UB_USING_LATTICE_PARAMETERS_TEST_H_
+
+#include <cxxtest/TestSuite.h>
+#include "MantidKernel/Timer.h"
+#include "MantidKernel/System.h"
+#include <iostream>
+#include <iomanip>
+
+#include "MantidCrystal/FindUBUsingLatticeParameters.h"
+#include "MantidCrystal/LoadPeaksFile.h"
+#include "MantidGeometry/Crystal/OrientedLattice.h"
+#include "MantidCrystal/LoadIsawUB.h"
+
+using namespace Mantid;
+using namespace Mantid::Crystal;
+using namespace Mantid::API;
+using namespace Mantid::DataObjects;
+using namespace Mantid::Kernel;
+
+class FindUBUsingLatticeParametersTest : public CxxTest::TestSuite
+{
+public:
+    
+  void test_Init()
+  {
+    FindUBUsingLatticeParameters alg;
+    TS_ASSERT_THROWS_NOTHING( alg.initialize() )
+    TS_ASSERT( alg.isInitialized() )
+  }
+  
+  void test_exec()
+  {
+    // Name of the output workspace.
+    std::string WSName("peaks");
+    LoadPeaksFile loader;
+    TS_ASSERT_THROWS_NOTHING( loader.initialize() );
+    TS_ASSERT( loader.isInitialized() );
+    loader.setPropertyValue("Filename", "TOPAZ_3007.peaks");
+    loader.setPropertyValue("OutputWorkspace", WSName);
+
+    TS_ASSERT( loader.execute() );
+    TS_ASSERT( loader.isExecuted() );
+
+    PeaksWorkspace_sptr ws;
+    TS_ASSERT_THROWS_NOTHING( ws = boost::dynamic_pointer_cast<PeaksWorkspace>(
+        AnalysisDataService::Instance().retrieve(WSName) ) );
+    TS_ASSERT(ws);
+    if (!ws) return;
+    FindUBUsingLatticeParameters alg;
+    TS_ASSERT_THROWS_NOTHING( alg.initialize() )
+    TS_ASSERT( alg.isInitialized() )
+    TS_ASSERT_THROWS_NOTHING( alg.setPropertyValue("PeaksWorkspace", WSName) );
+    TS_ASSERT_THROWS_NOTHING( alg.setPropertyValue("a","14.131") );
+    TS_ASSERT_THROWS_NOTHING( alg.setPropertyValue("b","19.247") );
+    TS_ASSERT_THROWS_NOTHING( alg.setPropertyValue("c","8.606") );
+    TS_ASSERT_THROWS_NOTHING( alg.setPropertyValue("alpha","90.0") );
+    TS_ASSERT_THROWS_NOTHING( alg.setPropertyValue("beta","105.071") );
+    TS_ASSERT_THROWS_NOTHING( alg.setPropertyValue("gamma","90.0") );
+    TS_ASSERT_THROWS_NOTHING( alg.setPropertyValue("num_initial","15") );
+    TS_ASSERT_THROWS_NOTHING( alg.setPropertyValue("tolerance","0.12") );
+    TS_ASSERT_THROWS_NOTHING( alg.execute(); );
+    TS_ASSERT( alg.isExecuted() );
+
+    // Check that we set an oriented lattice
+    TS_ASSERT(ws->mutableSample().hasOrientedLattice());
+    // Check that the UB matrix is the same as in TOPAZ_3007.mat
+    OrientedLattice latt=ws->mutableSample().getOrientedLattice();
+
+    double correct_UB[] = {  0.04542050, 0.040619900,  0.0122354,
+                            -0.00140347, -0.00318493, -0.1165450,
+                            -0.05749760,  0.03223800, -0.0273738  };
+
+    std::vector<double> UB_calculated = latt.getUB().get_vector();
+
+    for ( size_t i = 0; i < 9; i++ )
+    {
+      TS_ASSERT_DELTA( correct_UB[i], UB_calculated[i], 5e-4 );
+    }
+
+    // Remove workspace from the data service.
+    AnalysisDataService::Instance().remove(WSName);
+  }
+
+};
+
+
+#endif /* MANTID_CRYSTAL_FIND_UB_USING_LATTICE_PARAMETERS_TEST_H_ */
+
-- 
GitLab