| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- //
- // const_ptr.t.h
- // pointers
- //
- // Created by Sam Jaffe on 1/5/17.
- //
- #pragma once
- #include <cxxtest/TestSuite.h>
- #include "const_ptr.hpp"
- class const_ptr_TestSuite : public CxxTest::TestSuite {
- public:
- struct mock_object {
- bool is_const( ) { return false; }
- bool is_const( ) const { return true; }
- };
- private:
- using ptr_t = std::shared_ptr<mock_object>;
- public:
- void test_non_const() {
- ptr_t p { new mock_object };
- const_ptr< ptr_t > cp { p };
- TS_ASSERT( cp->is_const() );
- }
-
- void test_const() {
- ptr_t p { new mock_object };
- const_ptr< ptr_t > const cp { p };
- TS_ASSERT( cp->is_const() );
- }
-
- void test_converts_from_cpp() {
- ptr_t p { new mock_object };
- const_propogating_ptr< ptr_t > cpp { p };
- const_ptr< ptr_t > cp { p };
- TS_ASSERT_EQUALS( cp.get(), cpp.get() );
- TS_ASSERT( ! cpp->is_const() );
- TS_ASSERT( cp->is_const() );
- }
-
- void test_do_not_own() const {
- bool has_delete{false};
- struct test_t {
- ~test_t() { _r = true; }
- bool & _r;
- };
- test_t * test_struct = new test_t{has_delete};
- const_ptr<test_t *>{test_struct};
- TS_ASSERT_EQUALS(has_delete, false);
- delete test_struct;
- TS_ASSERT_EQUALS(has_delete, true);
- }
- };
|