diff options
Diffstat (limited to 'meowpp/utility/pointer_test.cpp')
-rw-r--r-- | meowpp/utility/pointer_test.cpp | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/meowpp/utility/pointer_test.cpp b/meowpp/utility/pointer_test.cpp deleted file mode 100644 index b2ecb52..0000000 --- a/meowpp/utility/pointer_test.cpp +++ /dev/null @@ -1,130 +0,0 @@ -#define MEOWPP_UTILITY_POINTER_TESTING - -#include <meowpp/utility/pointer.h> -#include <meowpp/utility/pointer.h> -#include <meowpp/utility/pointer.h> -#include <meowpp/debug/assert.h> - -namespace meow { -class PointerTest { - private: - struct Data { - int* info; - int some_data; - Data(Data const& b) : info(b.info), some_data(b.some_data) {} - Data(int* infoo) : info(infoo) {} - ~Data() { (*info)++; } - }; - public: - PointerTest() { - { - Pointer<Data> ptr1; - Assert(ptr1.ptr_->address == NULL, ""); - Assert(ptr1.ptr_->auto_delete == false, ""); - } - int remove = 0; - Data some_data(&remove); - Pointer<Data> ptr0(&some_data, SINGLE, false); - { - Pointer<Data> ptr2(&some_data, SINGLE, false); - Assert(ptr2.ptr_->address == &some_data, ""); - Assert(ptr2.ptr_->auto_delete == false, ""); - { - Pointer<Data> ptr5(ptr2); - Assert(ptr2.ptr_ == ptr2.ptr_, ""); - } - Assert(remove == 0, ""); - } - Assert(remove == 0, ""); - { - Data* ptrr = new Data(&remove); - Assert(ptrr->info == &remove, ""); - Pointer<Data> ptr3(ptrr, SINGLE, true); - Assert(remove == 0, ""); - Assert(ptr3.ptr_->address == ptrr, ""); - Assert(remove == 0, ""); - Assert(ptrr->info == &remove, ""); - Assert(remove == 0, ""); - Assert(ptr3.ptr_->address->info == &remove, ""); - Assert(ptr3.ptr_->auto_delete == true, ""); - Assert(ptr3.address() == ptr3.ptr_->address, ""); - Assert(ptr3.auto_delete() == ptr3.ptr_->auto_delete, ""); - Assert(ptr3.ptr_->address->info == &remove, - "%llu --- %llu\n", - (unsigned long long)(ptr3.ptr_->address->info), - (unsigned long long)(&remove)); - Assert(ptr3.ptr_->counter == 1, ""); - { - Pointer<Data> ptr6(ptr3); - Assert(ptr3.ptr_ == ptr3.ptr_, ""); - Assert(ptr6.ptr_->counter == 2, ""); - } - Assert(ptr3.ptr_->counter == 1, ""); - Assert(remove == 0, ""); - } - Assert(remove == 1, " r = %d\n", remove); - { - Data* ptr = new Data(&remove); - remove = 0; - { - Pointer<Data> ptrr(ptr, SINGLE, false); - } - Assert(remove == 0, ""); - delete ptr; - } - Assert(remove == 1, ""); - (*ptr0).some_data = 0; - Assert(some_data.some_data == 0, ""); - Assert(some_data.some_data == (*ptr0).some_data, ""); - ptr0[0].some_data = 1; - Assert(some_data.some_data == 1, ""); - Assert(some_data.some_data == (*ptr0).some_data, ""); - ptr0->some_data = 2; - Assert(some_data.some_data == 2, ""); - Assert(some_data.some_data == (*ptr0).some_data, ""); - Pointer<Data> ptr7; - ptr7 = ptr0; - Assert(ptr7.ptr_ == ptr0.ptr_, ""); - { - Pointer<int> k(new int, SINGLE, true); - Pointer<int> l(new int, SINGLE, true); - (*k) = 3; - (*l) = 3; - Assert(*k == 3, ""); - Assert(*l == 3, ""); - Assert(!k.Equals(&l), ""); - Pointer<int> kk(k); - Assert(k.Equals(&kk), ""); - Assert(k.ptr_->counter == 2, ""); - *l = 10; - k.CopyFrom(&l); - Assert(k.ptr_->counter == 2, ""); - Assert(kk.ptr_->counter == 1, ""); - Assert(l.ptr_->counter == 2, ""); - Assert(k.Equals(&l), ""); - Assert((*k) == 10, ""); - Pointer<int>* cp = dynamic_cast<Pointer<int>*>(k.Copy()); - Assert((*cp) == k, ""); - Assert(cp->ptr_ == k.ptr_, ""); - Assert(cp->ptr_->counter == 3, ""); - delete cp; - Assert(k.ptr_->counter == 2, ""); - } - Pointer<int>* in = new Pointer<int>[2]; - Assert(in[0].ptr_ != NULL, ""); - Assert(in[1].ptr_ != NULL, ""); - Assert(in[0].ptr_ != in[1].ptr_, ""); - Assert(in[0].ptr_->counter == 1, ""); - Assert(in[1].ptr_->counter == 1, ""); - Assert(in[0].ptr_->auto_delete == false, ""); - Assert(in[1].ptr_->auto_delete == false, ""); - Assert(in[0].ptr_->address == NULL, ""); - Assert(in[1].ptr_->address == NULL, ""); - delete [] in; - Pointer<int> ptr(new int[2], ARRAY, true); - }; -} _; - -} - -int main() { return 0; } |