const_ptr.t.h 920 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. //
  2. // const_ptr.t.h
  3. // pointers
  4. //
  5. // Created by Sam Jaffe on 1/5/17.
  6. //
  7. #pragma once
  8. #include <cxxtest/TestSuite.h>
  9. #include "const_ptr.hpp"
  10. class const_ptr_TestSuite : public CxxTest::TestSuite {
  11. public:
  12. struct mock_object {
  13. bool is_const( ) { return false; }
  14. bool is_const( ) const { return true; }
  15. };
  16. private:
  17. using ptr_t = std::shared_ptr<mock_object>;
  18. public:
  19. void test_non_const() {
  20. ptr_t p { new mock_object };
  21. const_ptr< ptr_t > cp { p };
  22. TS_ASSERT( cp->is_const() );
  23. }
  24. void test_const() {
  25. ptr_t p { new mock_object };
  26. const_ptr< ptr_t > const cp { p };
  27. TS_ASSERT( cp->is_const() );
  28. }
  29. void test_converts_from_cpp() {
  30. ptr_t p { new mock_object };
  31. const_propogating_ptr< ptr_t > cpp { p };
  32. const_ptr< ptr_t > cp { p };
  33. TS_ASSERT_EQUALS( cp.get(), cpp.get() );
  34. TS_ASSERT( ! cpp->is_const() );
  35. TS_ASSERT( cp->is_const() );
  36. }
  37. };