--- /dev/null
+
+#include "dptrtest.h"
+
+#include <QtCore>
+
+class DPTR_CLASS_NAME(ClassWithDptr):public DPtr
+{
+ public:
+ int num;
+ Private(){num=0;}
+};
+DEFINE_DPTR(ClassWithDptr)
+
+
+QString ClassWithDptr::toString()const
+{
+ return QString("class with dptr %1").arg(d->num);
+}
+int ClassWithDptr::num()const{return d->num;}
+void ClassWithDptr::setNum(int n){d->num=n;}
+
+class DPTR_CLASS_NAME(ClassWithSDptr):public SharedDPtr
+{
+ public:
+ int num;
+ Private(){num=0;}
+};
+DEFINE_SHARED_DPTR(ClassWithSDptr)
+
+QString ClassWithSDptr::toString()const
+{
+ return QString("class with shared dptr %1").arg(d->num);
+}
+int ClassWithSDptr::num()const{return d->num;}
+void ClassWithSDptr::setNum(int n){d->num=n;}
--- /dev/null
+
+#include "dptrtest.h"
+
+#include <QtCore>
+#include <QtTest>
+#include <QDebug>
+
+void DPtrTest::simpleDP()
+{
+ QCOMPARE(ClassWithDptr().num(),0);
+ ClassWithDptr o1;o1.setNum(1);
+ QCOMPARE(o1.num(),1);
+ ClassWithDptr o2;o2.setNum(2);
+ ClassWithDptr o3(o1);
+ QCOMPARE(o1.num(),1);
+ QCOMPARE(o2.num(),2);
+ QCOMPARE(o3.num(),1);
+ o1=o2;
+ QCOMPARE(o1.num(),2);
+ o2.setNum(3);
+ QCOMPARE(o1.num(),2);
+ QCOMPARE(o2.num(),3);
+}
+
+void DPtrTest::sharedDP()
+{
+ QCOMPARE(ClassWithSDptr().num(),0);
+ ClassWithSDptr o1;o1.setNum(1);
+ QCOMPARE(o1.num(),1);
+ ClassWithSDptr o2;o2.setNum(2);
+ ClassWithSDptr o3(o1);
+ QCOMPARE(o1.num(),1);
+ QCOMPARE(o2.num(),2);
+ QCOMPARE(o3.num(),1);
+ o1.setNum(4);
+ QCOMPARE(o1.num(),4);
+ QCOMPARE(o2.num(),2);
+ QCOMPARE(o3.num(),4);
+ o2=o1;o2.setNum(5);
+ QCOMPARE(o1.num(),5);
+ QCOMPARE(o2.num(),5);
+ QCOMPARE(o3.num(),5);
+}
+
+
+QTEST_MAIN(DPtrTest)
\ No newline at end of file
--- /dev/null
+#include "../../src/dptr.h"
+
+#include <QString>
+
+class ClassWithDptr
+{
+ DECLARE_DPTR(d)
+ public:
+ QString toString()const;
+ int num()const;
+ void setNum(int);
+};
+
+class ClassWithSDptr
+{
+ DECLARE_SHARED_DPTR(d)
+ public:
+ QString toString()const;
+ int num()const;
+ void setNum(int);
+};
+
+
+#include <QObject>
+
+class DPtrTest:public QObject
+{
+ Q_OBJECT
+ private slots:
+ void simpleDP();
+ void sharedDP();
+};
--- /dev/null
+TEMPLATE = app
+TARGET = dptrtest
+QT -= gui
+CONFIG += qtestlib debug
+
+SOURCES += dptrtest.cpp dptrpriv.cpp
+HEADERS += dptrtest.h
\ No newline at end of file