00001 #ifndef TESTLIBRARYIMPL_H 00002 #define TESTLIBRARYIMPL_H 00003 00004 #include "ipc/TestLibrary.h" 00005 #include <boost/utility.hpp> 00006 #include <ipc/object.h> 00007 00008 namespace SctCalibrationController { 00009 using namespace Ipc; 00010 00011 class TestLibraryImpl : public TestLibrary { 00012 public: 00013 typedef Sct_CalibrationController::TestRequest_ptr(*FunctionPointer)(); 00014 static bool registerStaticFactoryMethodForTest(const std::string & name, const FunctionPointer f); 00015 private: 00016 typedef std::map<std::string, FunctionPointer> StringFunctionPtrMap; 00017 static StringFunctionPtrMap & stringFunctionPtrMap() { static StringFunctionPtrMap ans; return ans; }; 00018 public: 00019 // The name that is supplied to this method should be the "bare" name of the test, i.e. leave out 00020 // any trailing "Test". Example: "StrobeDelay" not "StrobeDelayTest" 00021 virtual Sct_CalibrationController::TestRequest_ptr getTestRequestByName(const char * name); 00022 virtual Sct_CalibrationController::TestLibrary::Strings* getTestNames(); 00023 static Sct_CalibrationController::TestLibrary_ptr instance(); 00024 private: 00025 TestLibraryImpl(); 00026 }; 00027 00028 } 00029 00030 #endif //TESTLIBRARYIMPL_H