aboutsummaryrefslogtreecommitdiffstats
path: root/meowpp.test/src/oo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'meowpp.test/src/oo.cpp')
-rw-r--r--meowpp.test/src/oo.cpp98
1 files changed, 0 insertions, 98 deletions
diff --git a/meowpp.test/src/oo.cpp b/meowpp.test/src/oo.cpp
deleted file mode 100644
index ede8a24..0000000
--- a/meowpp.test/src/oo.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-#include <cstdio>
-
-#include "meowpp/Self.h"
-#include <vector>
-#include <string>
-#include <algorithm>
-
-#include <ctime>
-#include <cmath>
-
-using namespace meow;
-
-class A {
-private:
- struct Myself{
- int n;
- Myself() { }
- Myself(Myself const& m): n(m.n) {
- }
- ~Myself() { }
- };
- Self<Myself> const self;
-public:
- A(): self(){ self()->n = 0; }
- A(A const& b): self(b.self, Self<Myself>::COPY_FROM) { }
- ~A() { }
- int num() const { return self->n; }
- int num(int k) { return (self()->n = k); }
- void copyFrom(A const& v) { self().copyFrom(v.self); }
- void referenceFrom(A const& v) { self().referenceFrom(v.self); }
-};
-
-struct B {
- int n;
- int count;
- B() { n = 0; count = 1; }
-};
-
-static const size_t N = 50;
-
-static A as[N];
-static B *bs[N];
-
-int main(){
- srand(time(0));
- for (size_t i = 0; i < N; i++) {
- bs[i] = new B;
- }
- for (size_t i = 0; i < 500; i++) {
- int k = rand();
- if (k % 3 == 0) { // copyFrom
- int x, y;
- do {
- x = rand() % N;
- y = rand() % N;
- } while(x == y);
- as[x].copyFrom(as[y]);
- bs[x]->n = bs[y]->n;
- }
- else if (k % 3 == 1) { // referenceFrom
- int x, y;
- do {
- x = rand() % N;
- y = rand() % N;
- } while(x == y || x / (N / 5) != y / (N / 5));
- as[x].referenceFrom(as[y]);
- bs[x]->count--;
- if (bs[x]->count == 0) {
- delete bs[x];
- }
- bs[x] = bs[y];
- bs[x]->count++;
- }
- else { // set value
- int x = rand() % N, v = rand() % 100;
- as[x].num(v);
- bs[x]->n = v;
- }
- bool chk = true;
- for (size_t n = 0; n < N; n++) {
- if (as[n].num() != bs[n]->n) {
- chk = false;
- break;
- }
- }
- if (!chk) {
- printf("false!\n");
- return 1;
- }
- //for (size_t j = 0; j < N; j++) { printf("%d ", as[j].num()); } printf("\n");
- }
- for (size_t i = 0; i < N; i++) { printf("%d ", as[i].num()); }
- printf("\n");
- for (size_t i = 0; i < N; i++) { printf("%d ", bs[i]->n); }
- printf("\n");
- printf("true\n");
- return 0;
-}