tests/auto/moc/tst_moc.cpp
changeset 19 fcece45ef507
parent 18 2f34d5167611
child 30 5dc02b23752f
--- a/tests/auto/moc/tst_moc.cpp	Fri Apr 16 15:50:13 2010 +0300
+++ b/tests/auto/moc/tst_moc.cpp	Mon May 03 13:17:34 2010 +0300
@@ -484,6 +484,7 @@
     void singleFunctionKeywordSignalAndSlot();
     void templateGtGt();
     void qprivateslots();
+    void qprivateproperties();
     void inlineSlotsWithThrowDeclaration();
     void warnOnPropertyWithoutREAD();
     void constructors();
@@ -1071,6 +1072,56 @@
     QVERIFY(mobj->indexOfMethod("method1()") != -1); //tast204730
 }
 
+class PrivatePropertyTest : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(int foo READ foo WRITE setFoo);
+    Q_PRIVATE_PROPERTY(d, int bar READ bar WRITE setBar);
+    Q_PRIVATE_PROPERTY(PrivatePropertyTest::d, int plop READ plop WRITE setPlop);
+    Q_PRIVATE_PROPERTY(PrivatePropertyTest::d_func(), int baz READ baz WRITE setBaz);
+    class MyDPointer {
+    public:
+        MyDPointer() : mBar(0), mPlop(0) {}
+        int bar() { return mBar ; }
+        void setBar(int value) { mBar = value; }
+        int plop() { return mPlop ; }
+        void setPlop(int value) { mPlop = value; }
+        int baz() { return mBaz ; }
+        void setBaz(int value) { mBaz = value; }
+    private:
+        int mBar;
+        int mPlop;
+        int mBaz;
+    };
+public:
+    PrivatePropertyTest() : mFoo(0), d (new MyDPointer) {}
+    int foo() { return mFoo ; }
+    void setFoo(int value) { mFoo = value; }
+    MyDPointer *d_func() {return d;}
+private:
+    int mFoo;
+    MyDPointer *d;
+};
+
+
+void tst_Moc::qprivateproperties()
+{
+    PrivatePropertyTest test;
+
+    test.setProperty("foo", 1);
+    QCOMPARE(test.property("foo"), qVariantFromValue(1));
+
+    test.setProperty("bar", 2);
+    QCOMPARE(test.property("bar"), qVariantFromValue(2));
+
+    test.setProperty("plop", 3);
+    QCOMPARE(test.property("plop"), qVariantFromValue(3));
+
+    test.setProperty("baz", 4);
+    QCOMPARE(test.property("baz"), qVariantFromValue(4));
+
+}
+
 #include "task189996.h"
 
 void InlineSlotsWithThrowDeclaration::c() throw() {}