|
|
@@ -0,0 +1,43 @@
|
|
|
+//
|
|
|
+// 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() );
|
|
|
+ }
|
|
|
+};
|