summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-09-03 13:41:39 +0200
committerUlf Hermann <ulf.hermann@qt.io>2020-09-12 09:12:26 +0200
commitef93fdeb098f78a0afe1df72c53ba26bf7a11c60 (patch)
tree4862c44b7013f5965ba6c888d1059d24dfb5d87a /tests/auto
parent73fe229eb434236402ec1685b1f17f96417001b9 (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')
-rw-r--r--tests/auto/corelib/kernel/qmetacontainer/tst_qmetacontainer.cpp8
-rw-r--r--tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp23
2 files changed, 22 insertions, 9 deletions
diff --git a/tests/auto/corelib/kernel/qmetacontainer/tst_qmetacontainer.cpp b/tests/auto/corelib/kernel/qmetacontainer/tst_qmetacontainer.cpp
index 69f8cf0169..c4892de2cc 100644
--- a/tests/auto/corelib/kernel/qmetacontainer/tst_qmetacontainer.cpp
+++ b/tests/auto/corelib/kernel/qmetacontainer/tst_qmetacontainer.cpp
@@ -215,7 +215,7 @@ void tst_QMetaContainer::testSequence_data()
QTest::addColumn<bool>("hasRandomAccessIterator");
QTest::addColumn<bool>("canInsertAtIterator");
QTest::addColumn<bool>("canEraseAtIterator");
- QTest::addColumn<bool>("isOrdered");
+ QTest::addColumn<bool>("isSortable");
QTest::addRow("QVector")
<< static_cast<void *>(&qvector)
@@ -256,7 +256,7 @@ void tst_QMetaContainer::testSequence()
QFETCH(bool, hasRandomAccessIterator);
QFETCH(bool, canInsertAtIterator);
QFETCH(bool, canEraseAtIterator);
- QFETCH(bool, isOrdered);
+ QFETCH(bool, isSortable);
QVERIFY(metaSequence.canAddValue());
QCOMPARE(metaSequence.hasSize(), hasSize);
@@ -267,7 +267,7 @@ void tst_QMetaContainer::testSequence()
QCOMPARE(metaSequence.hasRandomAccessIterator(), hasRandomAccessIterator);
QCOMPARE(metaSequence.canInsertValueAtIterator(), canInsertAtIterator);
QCOMPARE(metaSequence.canEraseValueAtIterator(), canEraseAtIterator);
- QCOMPARE(metaSequence.isOrdered(), isOrdered);
+ QCOMPARE(metaSequence.isSortable(), isSortable);
QVariant var1(metaType);
QVariant var2(metaType);
@@ -434,7 +434,7 @@ void tst_QMetaContainer::testSequence()
const qsizetype newSize = metaSequence.diffIterator(end, it);
- if (metaSequence.isOrdered()) {
+ if (metaSequence.isSortable()) {
QCOMPARE(newSize, size + 3);
QVariant var4(metaType);
metaSequence.valueAtIterator(it, var4.data());
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);
}
}