Browse Source

Adding test cases for const_propogating_ptr and const_ptr

Samuel Jaffe 9 years ago
parent
commit
cc2cad67b6
2 changed files with 77 additions and 0 deletions
  1. 34 0
      const_propogating_ptr.t.h
  2. 43 0
      const_ptr.t.h

+ 34 - 0
const_propogating_ptr.t.h

@@ -0,0 +1,34 @@
+//
+//  const_propogating_ptr.t.h
+//  pointers
+//
+//  Created by Sam Jaffe on 1/5/17.
+//
+
+#pragma once
+
+#include <cxxtest/TestSuite.h>
+
+#include "const_propogating_ptr.hpp"
+
+class const_propogating_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_propogating_ptr< ptr_t > cp { p };
+    TS_ASSERT( ! cp->is_const() );
+  }
+  
+  void test_const() {
+    ptr_t p { new mock_object };
+    const_propogating_ptr< ptr_t > const cp { p };
+    TS_ASSERT( cp->is_const() );
+  }
+};

+ 43 - 0
const_ptr.t.h

@@ -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() );
+  }
+};