Newer
Older
Matt Clarke
committed
#ifndef AlgorithmManagerTest_H_
#define AlgorithmManagerTest_H_
#include <cxxtest/TestSuite.h>
#include "MantidAPI/AlgorithmManager.h"
#include <stdexcept>
#include <vector>
Matt Clarke
committed
class AlgTest : public Algorithm
Matt Clarke
committed
AlgTest() : Algorithm() {}
virtual ~AlgTest() {}
virtual const std::string name() const {return "AlgTest";}
virtual const int version() const {return(1);}
};
class AlgTestFail : public Algorithm
{
public:
AlgTestFail() : Algorithm() {}
virtual ~AlgTestFail() {}
void init() { }
void exec() { }
virtual const std::string name() const {return "AlgTest";}
virtual const int version() const {return(1);}
};
class AlgTestPass : public Algorithm
{
public:
AlgTestPass() : Algorithm() {}
virtual ~AlgTestPass() {}
void init() { }
void exec() { }
virtual const std::string name() const {return "AlgTest";}
virtual const int version() const {return(2);}
Matt Clarke
committed
class AlgTestSecond : public Algorithm
Matt Clarke
committed
AlgTestSecond() : Algorithm() {}
virtual ~AlgTestSecond() {}
virtual const std::string name() const {return "AlgTestSecond";}
virtual const int version() const {return(1);}
Matt Clarke
committed
DECLARE_ALGORITHM(AlgTest)
Matt Clarke
committed
DECLARE_ALGORITHM(AlgTestSecond)
class AlgorithmManagerTest : public CxxTest::TestSuite
{
public:
// AlgorithmFactory::Instance().subscribe<AlgTest>("AlgTest");
TS_ASSERT_THROWS(AlgorithmFactory::Instance().subscribe<AlgTestFail>(),std::runtime_error);
TS_ASSERT_THROWS_NOTHING(AlgorithmFactory::Instance().subscribe<AlgTestPass>());
Matt Clarke
committed
//AlgorithmManager *tester = AlgorithmManager::Instance();
Matt Clarke
committed
//TS_ASSERT_EQUALS( manager, tester);
TS_ASSERT_THROWS_NOTHING( AlgorithmManager::Instance().create("AlgTest") )
TS_ASSERT_THROWS(AlgorithmManager::Instance().create("AlgTest",3), std::runtime_error )
Matt Clarke
committed
TS_ASSERT_THROWS(AlgorithmManager::Instance().create("aaaaaa"), std::runtime_error )
void testGetNames()
{
AlgorithmManager::Instance().clear();
TS_ASSERT_THROWS_NOTHING( AlgorithmManager::Instance().create("AlgTest") );
TS_ASSERT_THROWS_NOTHING(AlgorithmManager::Instance().create("AlgTestSecond") );
std::vector<std::string> names = AlgorithmManager::Instance().getNames();
TS_ASSERT_EQUALS(names.size(), 2)
}
Matt Clarke
committed
AlgorithmManager::Instance().clear();
// AlgorithmFactory::Instance().subscribe<AlgTest>();
// AlgorithmFactory::Instance().subscribe<AlgTestSecond>();
TS_ASSERT_THROWS_NOTHING( AlgorithmManager::Instance().create("AlgTest") );
TS_ASSERT_THROWS_NOTHING(AlgorithmManager::Instance().create("AlgTestSecond") );
Matt Clarke
committed
TS_ASSERT_EQUALS(AlgorithmManager::Instance().size(),2);
AlgorithmManager::Instance().clear();
TS_ASSERT_EQUALS(AlgorithmManager::Instance().size(),0);
Matt Clarke
committed
AlgorithmManager::Instance().clear();
// AlgorithmFactory::Instance().subscribe<AlgTest>();
// AlgorithmFactory::Instance().subscribe<AlgTestSecond>();
TS_ASSERT_THROWS_NOTHING( alg = AlgorithmManager::Instance().create("AlgTest",1) );
Matt Clarke
committed
TS_ASSERT_DIFFERS(dynamic_cast<AlgTest*>(alg.get()),static_cast<AlgTest*>(0));
TS_ASSERT_THROWS_NOTHING( alg = AlgorithmManager::Instance().create("AlgTestSecond",1) );
Matt Clarke
committed
TS_ASSERT_DIFFERS(dynamic_cast<AlgTestSecond*>(alg.get()),static_cast<AlgTestSecond*>(0));
TS_ASSERT_DIFFERS(dynamic_cast<Algorithm*>(alg.get()),static_cast<Algorithm*>(0));
Matt Clarke
committed
TS_ASSERT_EQUALS(AlgorithmManager::Instance().size(),2); // To check that crea is called on local objects
Matt Clarke
committed
AlgorithmManager::Instance().clear();
Aptr=AlgorithmManager::Instance().create("AlgTest");
Bptr=AlgorithmManager::Instance().createUnmanaged("AlgTest");
Matt Clarke
committed
TS_ASSERT_EQUALS(AlgorithmManager::Instance().size(),1);
TS_ASSERT_DIFFERS(Aptr.get(),static_cast<Algorithm*>(0));
TS_ASSERT_DIFFERS(Bptr.get(),static_cast<Algorithm*>(0));
}
Matt Clarke
committed
#endif /* AlgorithmManagerTest_H_*/