diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-09-03 13:41:39 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-09-12 09:12:26 +0200 |
commit | ef93fdeb098f78a0afe1df72c53ba26bf7a11c60 (patch) | |
tree | 4862c44b7013f5965ba6c888d1059d24dfb5d87a /tests/auto/corelib/kernel/qvariant | |
parent | 73fe229eb434236402ec1685b1f17f96417001b9 (diff) |
Provide methods for adding values to a sequential iterable
Provide functionality to add and remove values, so that you can use a
sequential iterable as stack or queue if the underlying container
supports this. To this end, provide a way to specify whether the
value should be added or removed at the beginning or the end of the
iterable.
Change-Id: If63d302f3ca085e56d601116ce4dfaa6b94a0c4f
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'tests/auto/corelib/kernel/qvariant')
-rw-r--r-- | tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp index d606f449cf..b0e622e440 100644 --- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp +++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp @@ -4539,7 +4539,8 @@ void tst_QVariant::shouldDeleteVariantDataWorksForSequential() [](const void *, QtMetaContainerPrivate::QMetaSequenceInterface::Position) -> void* { return nullptr; }; - metaSequence.addValueFn = [](void *, const void *) {}; + metaSequence.addValueFn = [](void *, const void *, + QtMetaContainerPrivate::QMetaSequenceInterface::Position) {}; metaSequence.advanceConstIteratorFn = [](void *, qsizetype) {}; metaSequence.destroyConstIteratorFn = [](const void *){}; metaSequence.compareConstIteratorFn = [](const void *, const void *) { @@ -4697,10 +4698,19 @@ void tst_QVariant::sequentialIterableAppend() QVERIFY(variant.canConvert<QSequentialIterable>()); auto asIterable = variant.value<QSequentialIterable>(); const int i = 3, j = 4; - void *mutableIterable = const_cast<void *>(asIterable.constIterable()); - asIterable.metaSequence().addValue(mutableIterable, &i); - asIterable.metaSequence().addValue(mutableIterable, &j); + void *mutableIterable = asIterable.mutableIterable(); + asIterable.metaSequence().addValueAtEnd(mutableIterable, &i); + asIterable.metaSequence().addValueAtEnd(mutableIterable, &j); QCOMPARE(variant.value<QList<int>>(), QList<int> ({ 1, 2, 3, 4 })); + + asIterable.metaSequence().addValueAtBegin(mutableIterable, &i); + asIterable.metaSequence().addValueAtBegin(mutableIterable, &j); + QCOMPARE(variant.value<QList<int>>(), QList<int> ({ 4, 3, 1, 2, 3, 4 })); + + asIterable.metaSequence().removeValueAtBegin(mutableIterable); + QCOMPARE(variant.value<QList<int>>(), QList<int> ({ 3, 1, 2, 3, 4 })); + asIterable.metaSequence().removeValueAtEnd(mutableIterable); + QCOMPARE(variant.value<QList<int>>(), QList<int> ({ 3, 1, 2, 3 })); } { QSet<QByteArray> container { QByteArray{"hello"}, QByteArray{"world"} }; @@ -4709,11 +4719,14 @@ void tst_QVariant::sequentialIterableAppend() auto asIterable = variant.value<QSequentialIterable>(); QByteArray qba1 {"goodbye"}; QByteArray qba2 { "moon" }; - void *mutableIterable = const_cast<void *>(asIterable.constIterable()); + void *mutableIterable = asIterable.mutableIterable(); asIterable.metaSequence().addValue(mutableIterable, &qba1); asIterable.metaSequence().addValue(mutableIterable, &qba2); QSet<QByteArray> reference { "hello", "world", "goodbye", "moon" }; QCOMPARE(variant.value<QSet<QByteArray>>(), reference); + asIterable.metaSequence().addValue(mutableIterable, &qba1); + asIterable.metaSequence().addValue(mutableIterable, &qba2); + QCOMPARE(variant.value<QSet<QByteArray>>(), reference); } } |