Newer
Older
#ifndef CREATECALFILEBYNAMESTEST_H_
#define CREATECALFILEBYNAMESTEST_H_
#include <cxxtest/TestSuite.h>
#include "MantidAlgorithms/CreateCalFileByNames.h"
#include "MantidDataHandling/LoadEmptyInstrument.h"
#include "MantidAPI/WorkspaceFactory.h"
Russell Taylor
committed
#include "MantidGeometry/Instrument.h"
#include "MantidDataObjects/Workspace2D.h"
#include "MantidAPI/AnalysisDataService.h"
#include "MantidKernel/Exception.h"
#include "MantidAPI/FrameworkManager.h"
#include "MantidAPI/Workspace.h"
#include "MantidAPI/Algorithm.h"
#include "MantidGeometry/Instrument/Component.h"
#include "MantidGeometry/Instrument/FitParameter.h"
Peterson, Peter
committed
#include "MantidKernel/ConfigService.h"
Janik Zikovsky
committed
#include <fstream>
#include <cstring>
#include <vector>
using namespace Mantid::API;
using namespace Mantid::Algorithms;
using namespace Mantid::Kernel;
using namespace Mantid::Geometry;
using namespace Mantid::DataHandling;
using namespace Mantid::DataObjects;
class CreateCalFileByNamesTest : public CxxTest::TestSuite {
LoadEmptyInstrument loaderCAL;
loaderCAL.initialize();
loaderCAL.isInitialized();
loaderCAL.setPropertyValue(
"Filename",
ConfigService::Instance().getString("instrumentDefinition.directory") +
"/INES_Definition.xml");
Russell Taylor
committed
const std::string wsName = "LoadEmptyInstrumentTestCAL";
loaderCAL.setPropertyValue("OutputWorkspace", wsName);
loaderCAL.execute();
loaderCAL.isExecuted();
CreateCalFileByNames testerCAL;
TS_ASSERT_THROWS_NOTHING(testerCAL.initialize());
TS_ASSERT_THROWS_NOTHING(testerCAL.isInitialized());
testerCAL.setPropertyValue("InstrumentWorkspace", wsName);
Russell Taylor
committed
outputFile = "./INES_CreateCalFileByNamesTest.cal";
testerCAL.setPropertyValue("GroupingFileName", outputFile);
Janik Zikovsky
committed
outputFile = testerCAL.getPropertyValue("GroupingFileName");
TS_ASSERT_THROWS_NOTHING(testerCAL.setPropertyValue(
"GroupNames",
"bank1A, bank2B,bank3C, bank4D,bank5E,bank6F, bank7G,bank8H,bank9I"));
TS_ASSERT_THROWS_NOTHING(testerCAL.execute());
TS_ASSERT_THROWS_NOTHING(testerCAL.isExecuted());
Russell Taylor
committed
// Remove workspace
AnalysisDataService::Instance().remove(wsName);
// has the algorithm written a file to disk?
TS_ASSERT(fileExists = Poco::File(outputFile).exists());
Russell Taylor
committed
// Do a few tests to see if the content of outputFile is what you
// expect.
std::ifstream in(outputFile.c_str());
std::string line;
Russell Taylor
committed
double d1;
// Skip header
for (int i = 0; i < 4; ++i) {
std::getline(in, line);
Russell Taylor
committed
}
// Check the first line, middle and last lines
// First line
in >> i1 >> i2 >> d1 >> i3 >> i4;
TS_ASSERT_EQUALS(i1, 0);
TS_ASSERT_EQUALS(i2, 145);
TS_ASSERT_EQUALS(d1, 0.000000);
TS_ASSERT_EQUALS(i3, 1);
TS_ASSERT_EQUALS(i4, 0);
for (int i = 0; i < 72; ++i) {
Russell Taylor
committed
in >> i1 >> i2 >> d1 >> i3 >> i4;
}
TS_ASSERT_EQUALS(i1, 72);
TS_ASSERT_EQUALS(i2, 71);
TS_ASSERT_EQUALS(d1, 0.000000);
TS_ASSERT_EQUALS(i3, 1);
TS_ASSERT_EQUALS(i4, 5);
Russell Taylor
committed
// Final line
Russell Taylor
committed
in >> i1 >> i2 >> d1 >> i3 >> i4;
}
TS_ASSERT_EQUALS(i1, 145);
TS_ASSERT_EQUALS(i2, 144);
TS_ASSERT_EQUALS(d1, 0.000000);
TS_ASSERT_EQUALS(i3, 1);
TS_ASSERT_EQUALS(i4, 9);
Russell Taylor
committed
in.close();
// remove file created by this algorithm
Poco::File(outputFile).remove();
}
}
};
#endif /*CREATECALFILEBYNAMESTEST_H_*/