| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- //
- // not_null.t.h
- // pointers
- //
- // Created by Sam Jaffe on 12/2/16.
- //
- #include "pointers/not_null.hpp"
- #include <gmock/gmock.h>
- #include "test_stubs.h"
- using namespace pointers;
- TEST(NonNullPtrTest, ThrowsIfNullptrIsSnuckIn) {
- EXPECT_THROW(not_null<std::shared_ptr<int>>(std::shared_ptr<int>(nullptr)),
- null_pointer_exception);
- }
- TEST(NonNullPtrTest, ContainsInnerPtrForEquality) {
- std::shared_ptr<int> i{new int};
- not_null<std::shared_ptr<int>> n{i};
- EXPECT_THAT(n.get(), i.get());
- EXPECT_THAT(*n, *i);
- }
- TEST(NonNullPtrTest, CanModifyInnerValue) {
- std::shared_ptr<int> i{new int(5)};
- not_null<std::shared_ptr<int>> n{i};
- EXPECT_THAT(*n, 5);
- *n = 4;
- EXPECT_THAT(*i, 4);
- }
- TEST(NonNullPtrTest, DoesNotDeleteRawPtr) {
- bool has_delete{false};
- destructor_sentinal * test_struct = new destructor_sentinal{has_delete};
- not_null<destructor_sentinal *>{test_struct};
- EXPECT_FALSE(has_delete);
- delete test_struct;
- EXPECT_TRUE(has_delete);
- }
|