SingletonHolderTest.cc 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include "SingletonHolder.h"
  2. #include "SharedHandle.h"
  3. #include <cppunit/extensions/HelperMacros.h>
  4. using namespace std;
  5. class SingletonHolderTest : public CppUnit::TestFixture {
  6. CPPUNIT_TEST_SUITE(SingletonHolderTest);
  7. CPPUNIT_TEST(testInstance);
  8. CPPUNIT_TEST_SUITE_END();
  9. private:
  10. public:
  11. void setUp() {
  12. }
  13. void testInstance();
  14. };
  15. CPPUNIT_TEST_SUITE_REGISTRATION( SingletonHolderTest );
  16. class M {
  17. private:
  18. string _greeting;
  19. public:
  20. M(const string& greeting):_greeting(greeting) {}
  21. const string& greeting() const { return _greeting; }
  22. void greeting(const string& greeting) {
  23. _greeting = greeting;
  24. }
  25. };
  26. typedef SharedHandle<M> MHandle;
  27. typedef SharedHandle<int> IntHandle;
  28. void SingletonHolderTest::testInstance()
  29. {
  30. MHandle m = new M("Hello world.");
  31. SingletonHolder<MHandle>::instance(m);
  32. cerr << SingletonHolder<MHandle>::instance()->greeting() << endl;
  33. SingletonHolder<MHandle>::instance()->greeting("Yes, it worked!");
  34. cerr << SingletonHolder<MHandle>::instance()->greeting() << endl;
  35. IntHandle i = new int(100);
  36. SingletonHolder<IntHandle>::instance(i);
  37. cerr << SingletonHolder<IntHandle>::instance() << endl;
  38. cerr << SingletonHolder<MHandle>::instance()->greeting() << endl;
  39. }