diff options
author | Jędrzej Nowacki <jedrzej.nowacki@digia.com> | 2014-02-13 16:59:28 +0100 |
---|---|---|
committer | Jędrzej Nowacki <jedrzej.nowacki@digia.com> | 2014-08-28 10:13:04 +0200 |
commit | 918038ad57840f980cf65464d6f1fc4703909629 (patch) | |
tree | 01b8d0f96e6ffe0ffacf51ea45a9103956f110d4 /tests/auto/corelib | |
parent | e311f7ac8bf3b75ba171823701dcdd0e6ff404d8 (diff) |
Mark QByteArrayList as metatype built-in type.
As a side effects it also adds core templates types to the tests
Change-Id: I0e3338e0bffdf21982aa83d404c83288e54411f4
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Diffstat (limited to 'tests/auto/corelib')
-rw-r--r-- | tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp | 27 | ||||
-rw-r--r-- | tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp | 57 |
2 files changed, 61 insertions, 23 deletions
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp index 9a86dc03e5..dbdd0ef28a 100644 --- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp +++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp @@ -398,7 +398,8 @@ void tst_QMetaType::typeName() QT_FOR_EACH_STATIC_CORE_POINTER(F) \ #define FOR_EACH_COMPLEX_CORE_METATYPE(F) \ - QT_FOR_EACH_STATIC_CORE_CLASS(F) + QT_FOR_EACH_STATIC_CORE_CLASS(F) \ + QT_FOR_EACH_STATIC_CORE_TEMPLATE(F) #define FOR_EACH_CORE_METATYPE(F) \ FOR_EACH_PRIMITIVE_METATYPE(F) \ @@ -489,6 +490,18 @@ template<> struct TestValueFactory<QMetaType::Double> { template<> struct TestValueFactory<QMetaType::QByteArray> { static QByteArray *create() { return new QByteArray(QByteArray("QByteArray")); } }; +template<> struct TestValueFactory<QMetaType::QByteArrayList> { + static QByteArrayList *create() { return new QByteArrayList(QByteArrayList() << "Q" << "Byte" << "Array" << "List"); } +}; +template<> struct TestValueFactory<QMetaType::QVariantMap> { + static QVariantMap *create() { return new QVariantMap(); } +}; +template<> struct TestValueFactory<QMetaType::QVariantHash> { + static QVariantHash *create() { return new QVariantHash(); } +}; +template<> struct TestValueFactory<QMetaType::QVariantList> { + static QVariantList *create() { return new QVariantList(QVariantList() << 123 << "Q" << "Variant" << "List"); } +}; template<> struct TestValueFactory<QMetaType::QChar> { static QChar *create() { return new QChar(QChar('q')); } }; @@ -1371,12 +1384,12 @@ void tst_QMetaType::automaticTemplateRegistration() } { - QList<QByteArray> bytearrayList; - bytearrayList << QByteArray("foo"); - QVERIFY(QVariant::fromValue(bytearrayList).value<QList<QByteArray> >().first() == QByteArray("foo")); - QVector<QList<QByteArray> > vectorList; - vectorList << bytearrayList; - QVERIFY(QVariant::fromValue(vectorList).value<QVector<QList<QByteArray> > >().first().first() == QByteArray("foo")); + QList<unsigned> unsignedList; + unsignedList << 123; + QVERIFY(QVariant::fromValue(unsignedList).value<QList<unsigned> >().first() == 123); + QVector<QList<unsigned> > vectorList; + vectorList << unsignedList; + QVERIFY(QVariant::fromValue(vectorList).value<QVector<QList<unsigned> > >().first().first() == 123); } QCOMPARE(::qMetaTypeId<QVariantList>(), (int)QMetaType::QVariantList); diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp index 660d0f804e..f78f993645 100644 --- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp +++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp @@ -3646,6 +3646,24 @@ struct ContainerAPI<Container, QString> } }; +template<typename Container> +struct ContainerAPI<Container, QByteArray> +{ + static void insert(Container &container, int value) + { + container.push_back(QByteArray::number(value)); + } + + static bool compare(const QVariant &variant, QByteArray value) + { + return variant.value<QByteArray>() == value; + } + static bool compare(QVariant variant, const QVariant &value) + { + return variant == value; + } +}; + // We have no built-in defines to check the stdlib features. // #define TEST_FORWARD_LIST @@ -3762,12 +3780,12 @@ void tst_QVariant::iterateContainerElements() { #ifdef Q_COMPILER_RANGE_FOR -#define TEST_RANGE_FOR(CONTAINER, VALUE_TYPE) \ +#define TEST_RANGE_FOR(CONTAINER) \ numSeen = 0; \ containerIter = intList.begin(); \ for (QVariant v : listIter) { \ - QVERIFY(ContainerAPI<CONTAINER<VALUE_TYPE > >::compare(v, *containerIter)); \ - QVERIFY(ContainerAPI<CONTAINER<VALUE_TYPE > >::compare(v, varList.at(numSeen))); \ + QVERIFY(ContainerAPI<CONTAINER >::compare(v, *containerIter)); \ + QVERIFY(ContainerAPI<CONTAINER >::compare(v, varList.at(numSeen))); \ ++containerIter; \ ++numSeen; \ } \ @@ -3775,17 +3793,17 @@ void tst_QVariant::iterateContainerElements() #else -#define TEST_RANGE_FOR(CONTAINER, VALUE_TYPE) +#define TEST_RANGE_FOR(CONTAINER) #endif -#define TEST_SEQUENTIAL_ITERATION(CONTAINER, VALUE_TYPE) \ +#define TEST_SEQUENTIAL_ITERATION_ON_FULL_NAME(CONTAINER) \ { \ int numSeen = 0; \ - CONTAINER<VALUE_TYPE > intList; \ - ContainerAPI<CONTAINER<VALUE_TYPE > >::insert(intList, 1); \ - ContainerAPI<CONTAINER<VALUE_TYPE > >::insert(intList, 2); \ - ContainerAPI<CONTAINER<VALUE_TYPE > >::insert(intList, 3); \ + CONTAINER intList; \ + ContainerAPI<CONTAINER >::insert(intList, 1); \ + ContainerAPI<CONTAINER >::insert(intList, 2); \ + ContainerAPI<CONTAINER >::insert(intList, 3); \ \ QVariant listVariant = QVariant::fromValue(intList); \ QVERIFY(listVariant.canConvert<QVariantList>()); \ @@ -3794,12 +3812,12 @@ void tst_QVariant::iterateContainerElements() QSequentialIterable listIter = listVariant.value<QSequentialIterable>(); \ QCOMPARE(varList.size(), listIter.size()); \ \ - CONTAINER<VALUE_TYPE >::iterator containerIter = intList.begin(); \ - const CONTAINER<VALUE_TYPE >::iterator containerEnd = intList.end(); \ + CONTAINER::iterator containerIter = intList.begin(); \ + const CONTAINER::iterator containerEnd = intList.end(); \ for (int i = 0; i < listIter.size(); ++i, ++containerIter, ++numSeen) \ { \ - QVERIFY(ContainerAPI<CONTAINER<VALUE_TYPE > >::compare(listIter.at(i), *containerIter)); \ - QVERIFY(ContainerAPI<CONTAINER<VALUE_TYPE > >::compare(listIter.at(i), varList.at(i))); \ + QVERIFY(ContainerAPI<CONTAINER >::compare(listIter.at(i), *containerIter)); \ + QVERIFY(ContainerAPI<CONTAINER >::compare(listIter.at(i), varList.at(i))); \ } \ QCOMPARE(numSeen, (int)std::distance(intList.begin(), intList.end())); \ QCOMPARE(containerIter, containerEnd); \ @@ -3807,15 +3825,19 @@ void tst_QVariant::iterateContainerElements() containerIter = intList.begin(); \ numSeen = 0; \ Q_FOREACH (const QVariant &v, listIter) { \ - QVERIFY(ContainerAPI<CONTAINER<VALUE_TYPE > >::compare(v, *containerIter)); \ - QVERIFY(ContainerAPI<CONTAINER<VALUE_TYPE > >::compare(v, varList.at(numSeen))); \ + QVERIFY(ContainerAPI<CONTAINER >::compare(v, *containerIter)); \ + QVERIFY(ContainerAPI<CONTAINER >::compare(v, varList.at(numSeen))); \ ++containerIter; \ ++numSeen; \ } \ QCOMPARE(numSeen, (int)std::distance(intList.begin(), intList.end())); \ - TEST_RANGE_FOR(CONTAINER, VALUE_TYPE) \ + TEST_RANGE_FOR(CONTAINER) \ } +#define TEST_SEQUENTIAL_ITERATION(CONTAINER, VALUE_TYPE) \ + TEST_SEQUENTIAL_ITERATION_ON_FULL_NAME(CONTAINER<VALUE_TYPE > ) + + TEST_SEQUENTIAL_ITERATION(QVector, int) TEST_SEQUENTIAL_ITERATION(QVector, QVariant) TEST_SEQUENTIAL_ITERATION(QVector, QString) @@ -3825,6 +3847,7 @@ void tst_QVariant::iterateContainerElements() TEST_SEQUENTIAL_ITERATION(QList, int) TEST_SEQUENTIAL_ITERATION(QList, QVariant) TEST_SEQUENTIAL_ITERATION(QList, QString) + TEST_SEQUENTIAL_ITERATION(QList, QByteArray) TEST_SEQUENTIAL_ITERATION(QStack, int) TEST_SEQUENTIAL_ITERATION(QStack, QVariant) TEST_SEQUENTIAL_ITERATION(QStack, QString) @@ -3834,6 +3857,8 @@ void tst_QVariant::iterateContainerElements() TEST_SEQUENTIAL_ITERATION(std::list, int) TEST_SEQUENTIAL_ITERATION(std::list, QVariant) TEST_SEQUENTIAL_ITERATION(std::list, QString) + TEST_SEQUENTIAL_ITERATION_ON_FULL_NAME(QStringList) + TEST_SEQUENTIAL_ITERATION_ON_FULL_NAME(QByteArrayList) #ifdef TEST_FORWARD_LIST TEST_SEQUENTIAL_ITERATION(std::forward_list, int) |