tests/auto/qmetaobject/tst_qmetaobject.cpp
changeset 33 3e2da88830cd
parent 30 5dc02b23752f
child 37 758a864f9613
equal deleted inserted replaced
30:5dc02b23752f 33:3e2da88830cd
   169     void propertyConstant();
   169     void propertyConstant();
   170     void propertyFinal();
   170     void propertyFinal();
   171 
   171 
   172     void stdSet();
   172     void stdSet();
   173     void classInfo();
   173     void classInfo();
       
   174 
       
   175     void metaMethod();
   174 
   176 
   175 signals:
   177 signals:
   176     void value6Changed();
   178     void value6Changed();
   177     void value7Changed(const QString &);
   179     void value7Changed(const QString &);
   178 };
   180 };
   736     QTest::newRow("template3") << "QMap<QString, int>" << "QMap<QString,int>";
   738     QTest::newRow("template3") << "QMap<QString, int>" << "QMap<QString,int>";
   737     QTest::newRow("template4") << "const QMap<QString, int> &" << "QMap<QString,int>";
   739     QTest::newRow("template4") << "const QMap<QString, int> &" << "QMap<QString,int>";
   738     QTest::newRow("template5") << "QList< ::Foo::Bar>" << "QList< ::Foo::Bar>";
   740     QTest::newRow("template5") << "QList< ::Foo::Bar>" << "QList< ::Foo::Bar>";
   739     QTest::newRow("template6") << "QList<::Foo::Bar>" << "QList<::Foo::Bar>";
   741     QTest::newRow("template6") << "QList<::Foo::Bar>" << "QList<::Foo::Bar>";
   740     QTest::newRow("template7") << "QList<QList<int> >" << "QList<QList<int> >";
   742     QTest::newRow("template7") << "QList<QList<int> >" << "QList<QList<int> >";
       
   743     QTest::newRow("template8") << "QMap<const int, const short*>" << "QMap<const int,const short*>";
       
   744     QTest::newRow("template9") << "QPair<const QPair<int, int const *> , QPair<QHash<int, const char*>  >  >" << "QPair<const QPair<int,const int*>,QPair<QHash<int,const char*> > >";
   741     QTest::newRow("value1") << "const QString &" << "QString";
   745     QTest::newRow("value1") << "const QString &" << "QString";
   742     QTest::newRow("value2") << "QString const &" << "QString";
   746     QTest::newRow("value2") << "QString const &" << "QString";
   743     QTest::newRow("constInName1") << "constconst" << "constconst";
   747     QTest::newRow("constInName1") << "constconst" << "constconst";
   744     QTest::newRow("constInName2") << "constconst*" << "constconst*";
   748     QTest::newRow("constInName2") << "constconst*" << "constconst*";
   745     QTest::newRow("constInName3") << "const constconst&" << "constconst";
   749     QTest::newRow("constInName3") << "const constconst&" << "constconst";
   884     QCOMPARE(index, 0);
   888     QCOMPARE(index, 0);
   885     QVERIFY(index <= b.metaObject()->classInfoOffset());
   889     QVERIFY(index <= b.metaObject()->classInfoOffset());
   886     QCOMPARE(QLatin1String(b.metaObject()->classInfo(index).value()), QLatin1String("Christopher Pike"));
   890     QCOMPARE(QLatin1String(b.metaObject()->classInfo(index).value()), QLatin1String("Christopher Pike"));
   887 }
   891 }
   888 
   892 
       
   893 void tst_QMetaObject::metaMethod()
       
   894 {
       
   895     QString str("foo");
       
   896     QString ret("bar");
       
   897     QMetaMethod method;
       
   898     QVERIFY(!method.invoke(this));
       
   899     QVERIFY(!method.invoke(this, Q_ARG(QString, str)));
       
   900     QVERIFY(!method.invoke(this, Q_RETURN_ARG(QString, ret), Q_ARG(QString, str)));
       
   901     QCOMPARE(str, QString("foo"));
       
   902     QCOMPARE(ret, QString("bar"));
       
   903 
       
   904 
       
   905     QtTestObject obj;
       
   906     QString t1("1"); QString t2("2"); QString t3("3"); QString t4("4"); QString t5("5");
       
   907     QString t6("6"); QString t7("7"); QString t8("8"); QString t9("9"); QString t10("X");
       
   908 
       
   909     int index = QtTestObject::staticMetaObject.indexOfMethod("sl5(QString,QString,QString,QString,QString)");
       
   910     QVERIFY(index > 0);
       
   911     method = QtTestObject::staticMetaObject.method(index);
       
   912     //wrong args
       
   913     QVERIFY(!method.invoke(&obj, Q_ARG(QString, "1"), Q_ARG(QString, "2"), Q_ARG(QString, "3"), Q_ARG(QString, "4")));
       
   914     //QVERIFY(!method.invoke(&obj, Q_ARG(QString, "1"), Q_ARG(QString, "2"), Q_ARG(QString, "3"), Q_ARG(QString, "4"), Q_ARG(QString, "5"), Q_ARG(QString, "6")));
       
   915     //QVERIFY(!method.invoke(&obj, Q_ARG(QString, "1"), Q_ARG(QString, "2"), Q_ARG(QString, "3"), Q_ARG(QString, "4"), Q_ARG(int, 5)));
       
   916     QVERIFY(!method.invoke(&obj, Q_RETURN_ARG(QString, ret), Q_ARG(QString, "1"), Q_ARG(QString, "2"), Q_ARG(QString, "3"), Q_ARG(QString, "4"), Q_ARG(QString, "5")));
       
   917 
       
   918     //wrong object
       
   919     //QVERIFY(!method.invoke(this, Q_ARG(QString, "1"), Q_ARG(QString, "2"), Q_ARG(QString, "3"), Q_ARG(QString, "4"), Q_ARG(QString, "5")));
       
   920     QVERIFY(!method.invoke(0, Q_ARG(QString, "1"), Q_ARG(QString, "2"), Q_ARG(QString, "3"), Q_ARG(QString, "4"), Q_ARG(QString, "5")));
       
   921     QCOMPARE(ret, QString("bar"));
       
   922     QCOMPARE(obj.slotResult, QString());
       
   923 
       
   924     QVERIFY(method.invoke(&obj, Q_ARG(QString, "1"), Q_ARG(QString, "2"), Q_ARG(QString, "3"), Q_ARG(QString, "4"), Q_ARG(QString, "5")));
       
   925     QCOMPARE(obj.slotResult, QString("sl5:12345"));
       
   926 
       
   927     index = QtTestObject::staticMetaObject.indexOfMethod("sl13(QList<QString>)");
       
   928     QVERIFY(index > 0);
       
   929     QMetaMethod sl13 = QtTestObject::staticMetaObject.method(index);
       
   930     QList<QString> returnValue, argument;
       
   931     argument << QString("one") << QString("two") << QString("three");
       
   932     //wrong object
       
   933     //QVERIFY(!sl13.invoke(this, Q_RETURN_ARG(QList<QString>, returnValue), Q_ARG(QList<QString>, argument)));
       
   934     QVERIFY(!sl13.invoke(0,  Q_RETURN_ARG(QList<QString>, returnValue), Q_ARG(QList<QString>, argument)));
       
   935     QCOMPARE(returnValue, QList<QString>());
       
   936 
       
   937     QVERIFY(sl13.invoke(&obj, Q_RETURN_ARG(QList<QString>, returnValue), Q_ARG(QList<QString>, argument)));
       
   938     QCOMPARE(returnValue, argument);
       
   939     QCOMPARE(obj.slotResult, QString("sl13"));
       
   940 }
       
   941 
   889 QTEST_MAIN(tst_QMetaObject)
   942 QTEST_MAIN(tst_QMetaObject)
   890 #include "tst_qmetaobject.moc"
   943 #include "tst_qmetaobject.moc"