aboutsummaryrefslogtreecommitdiffstats
path: root/meowpp/utility/pointer_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'meowpp/utility/pointer_test.cpp')
-rw-r--r--meowpp/utility/pointer_test.cpp130
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; }