Newer
Older
Matt Clarke
committed
#ifndef AlgorithmManagerTest_H_
#define AlgorithmManagerTest_H_
#include <cxxtest/TestSuite.h>
#include <stdexcept>
Matt Clarke
committed
class AlgTest : public Algorithm
Matt Clarke
committed
AlgTest() : Algorithm() {}
virtual ~AlgTest() {}
Matt Clarke
committed
class AlgTestSecond : public Algorithm
Matt Clarke
committed
AlgTestSecond() : Algorithm() {}
virtual ~AlgTestSecond() {}
Matt Clarke
committed
DECLARE_ALGORITHM(AlgTest)
DECLARE_ALGORITHM(AlgTestSecond)
class AlgorithmManagerTest : public CxxTest::TestSuite
{
public:
Matt Clarke
committed
Matt Clarke
committed
//AlgorithmManager *tester = AlgorithmManager::Instance();
//TS_ASSERT_EQUALS( manager, tester);
TS_ASSERT_THROWS_NOTHING( AlgorithmManager::Instance().create("AlgTest") )
TS_ASSERT_THROWS(AlgorithmManager::Instance().create("aaaaaa"), std::runtime_error )
Matt Clarke
committed
AlgorithmManager::Instance().clear();
AlgorithmManager::Instance().subscribe<AlgTest>("AlgorithmManager::myAlgclear");
AlgorithmManager::Instance().subscribe<AlgTestSecond>("AlgorithmManager::myAlgBclear");
TS_ASSERT_THROWS_NOTHING( AlgorithmManager::Instance().create("AlgorithmManager::myAlgBclear") );
TS_ASSERT_THROWS_NOTHING(AlgorithmManager::Instance().create("AlgorithmManager::myAlgBclear") );
TS_ASSERT_EQUALS(AlgorithmManager::Instance().size(),2);
AlgorithmManager::Instance().clear();
TS_ASSERT_EQUALS(AlgorithmManager::Instance().size(),0);
Matt Clarke
committed
AlgorithmManager::Instance().clear();
AlgorithmManager::Instance().subscribe<AlgTest>("AlgorithmManager::myAlg");
AlgorithmManager::Instance().subscribe<AlgTestSecond>("AlgorithmManager::myAlgB");
Matt Clarke
committed
TS_ASSERT_THROWS_NOTHING( alg = AlgorithmManager::Instance().create("AlgorithmManager::myAlg") );
TS_ASSERT_DIFFERS(dynamic_cast<AlgTest*>(alg.get()),static_cast<AlgTest*>(0));
TS_ASSERT_THROWS_NOTHING( alg = AlgorithmManager::Instance().create("AlgorithmManager::myAlgB") );
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_*/