diff options
author | Stephen Kelly <stephen.kelly@kdab.com> | 2013-04-05 13:26:35 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-05-08 06:02:53 +0200 |
commit | 620f788f8690b10ef101f883d4cdacd2a277f948 (patch) | |
tree | 0fa8f9a6ff732fbba307837f3fb27045677a97a2 /tests/auto/corelib/kernel/qvariant | |
parent | 01fb843af88d949cd38b494a60bb64b730a045d2 (diff) |
Add QVariantList extraction from a QVariant with a sequential container.
Change-Id: Id9fac7bf47ed3fbb385222b25941215ac24b8b88
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Diffstat (limited to 'tests/auto/corelib/kernel/qvariant')
-rw-r--r-- | tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp index 29d5725d76..3f5a05eb5d 100644 --- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp +++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp @@ -3364,6 +3364,24 @@ struct ContainerAPI { return variant.value<typename Container::value_type>() == value; } + static bool compare(QVariant variant, const QVariant &value) + { + return variant == value; + } +}; + +template<typename Container> +struct ContainerAPI<Container, QVariant> +{ + static void insert(Container &container, int value) + { + container.push_back(QVariant::fromValue(value)); + } + + static bool compare(QVariant variant, const QVariant &value) + { + return variant == value; + } }; template<typename Container> @@ -3378,6 +3396,10 @@ struct ContainerAPI<Container, QString> { return variant.value<QString>() == value; } + static bool compare(QVariant variant, const QVariant &value) + { + return variant == value; + } }; // We have no built-in defines to check the stdlib features. @@ -3400,7 +3422,26 @@ struct ContainerAPI<std::forward_list<Value_Type> > { return variant.value<Value_Type>() == value; } + static bool compare(QVariant variant, const QVariant &value) + { + return variant == value; + } +}; + +template<> +struct ContainerAPI<std::forward_list<QVariant> > +{ + static void insert(std::forward_list<QVariant> &container, int value) + { + container.push_front(QVariant::fromValue(value)); + } + + static bool compare(QVariant variant, const QVariant &value) + { + return variant == value; + } }; + template<> struct ContainerAPI<std::forward_list<QString> > { @@ -3412,6 +3453,10 @@ struct ContainerAPI<std::forward_list<QString> > { return variant.value<QString>() == value; } + static bool compare(QVariant variant, const QVariant &value) + { + return variant == value; + } }; #endif @@ -3424,6 +3469,7 @@ void tst_QVariant::iterateContainerElements() 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))); \ ++containerIter; \ ++numSeen; \ } \ @@ -3445,13 +3491,17 @@ void tst_QVariant::iterateContainerElements() \ QVariant listVariant = QVariant::fromValue(intList); \ QVERIFY(listVariant.canConvert<QVariantList>()); \ + QVariantList varList = listVariant.value<QVariantList>(); \ + QCOMPARE(varList.size(), (int)std::distance(intList.begin(), intList.end())); \ 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(); \ 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))); \ } \ QCOMPARE(numSeen, (int)std::distance(intList.begin(), intList.end())); \ QCOMPARE(containerIter, containerEnd); \ @@ -3460,6 +3510,7 @@ void tst_QVariant::iterateContainerElements() 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))); \ ++containerIter; \ ++numSeen; \ } \ |