Newer
Older
Russell Taylor
committed
#ifndef DYNAMICFACTORYTEST_H_
#define DYNAMICFACTORYTEST_H_
Russell Taylor
committed
#include <cxxtest/TestSuite.h>
#include <vector>
#include <string>
Russell Taylor
committed
#include "MantidKernel/DynamicFactory.h"
Russell Taylor
committed
Russell Taylor
committed
using namespace Mantid::Kernel;
Russell Taylor
committed
// Helper class
class AFactory : public DynamicFactory<int>
{
};
class DynamicFactoryTest : public CxxTest::TestSuite
{
Russell Taylor
committed
public:
void testCreate()
{
TS_ASSERT_THROWS( factory.create("testEntry"), std::runtime_error )
factory.subscribe<int>("testEntry");
TS_ASSERT_THROWS_NOTHING( int_ptr i = factory.create("testEntry") );
Russell Taylor
committed
}
void testSubscribe()
{
TS_ASSERT_THROWS_NOTHING( factory.subscribe<int>("int") );
TS_ASSERT_THROWS_NOTHING( factory.subscribe("int2",new Instantiator<int, int>));
TS_ASSERT_THROWS( factory.subscribe<int>("int"), std::runtime_error);
}
void testUnsubscribe()
{
TS_ASSERT_THROWS( factory.unsubscribe("tester"), std::runtime_error);
factory.subscribe<int>("tester");
TS_ASSERT_THROWS_NOTHING( factory.unsubscribe("tester"));
}
void testExists()
{
TS_ASSERT( ! factory.exists("testing") );
factory.subscribe<int>("testing");
TS_ASSERT( factory.exists("testing") );
}
void testGetKeys()
{
std::vector<std::string> keys = factory.getKeys();
TS_ASSERT(!keys.empty());
}
Russell Taylor
committed
private:
AFactory factory;
};
#endif /*DYNAMICFACTORYTEST_H_*/