aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2017-11-28 17:58:24 +0100
committerEike Ziller <eike.ziller@qt.io>2017-12-20 09:58:17 +0000
commit91e40e12dbb94283cd804405411effc7f9903ed4 (patch)
tree8ae65bf61bb2ef081b3591584ec8677321aae9d4 /tests
parent60fb35a23c7827ab9448edbb62a3dd4dabd04550 (diff)
Utils: Converter to raw pointer and references
Sometimes you want to get raw pointer container from smart pointer container and reference container from value container. Change-Id: Ia018d572ac0a7bf742f3937dc38ee30670a3ca73 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/algorithm/tst_algorithm.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/auto/algorithm/tst_algorithm.cpp b/tests/auto/algorithm/tst_algorithm.cpp
index e55aceac41..70088d8a20 100644
--- a/tests/auto/algorithm/tst_algorithm.cpp
+++ b/tests/auto/algorithm/tst_algorithm.cpp
@@ -46,6 +46,8 @@ private slots:
void contains();
void findOr();
void findOrDefault();
+ void toRawPointer();
+ void toReferences();
};
@@ -462,6 +464,57 @@ void tst_Algorithm::findOrDefault()
QCOMPARE(Utils::findOrDefault(v4, &Struct::isEven), std::shared_ptr<Struct>());
}
+void tst_Algorithm::toRawPointer()
+{
+ const std::vector<std::unique_ptr<Struct>> v;
+
+ // same result container
+ const std::vector<Struct *> x1 = Utils::toRawPointer(v);
+ // different result container
+ const std::vector<Struct *> x2 = Utils::toRawPointer<std::vector>(v);
+ const QVector<Struct *> x3 = Utils::toRawPointer<QVector>(v);
+ // different fully specified result container
+ const std::vector<BaseStruct *> x4 = Utils::toRawPointer<std::vector<BaseStruct *>>(v);
+ const QVector<BaseStruct *> x5 = Utils::toRawPointer<QVector<BaseStruct *>>(v);
+}
+
+void tst_Algorithm::toReferences()
+{
+ // toReference
+ {
+ // std::vector -> std::vector
+ std::vector<Struct> v;
+ const std::vector<std::reference_wrapper<Struct>> x = Utils::toReferences(v);
+ }
+ {
+ // QList -> std::vector
+ QList<Struct> v;
+ const std::vector<std::reference_wrapper<Struct>> x = Utils::toReferences<std::vector>(v);
+ }
+ {
+ // std::vector -> QList
+ std::vector<Struct> v;
+ const QList<std::reference_wrapper<Struct>> x = Utils::toReferences<QList>(v);
+ }
+ // toConstReference
+ {
+ // std::vector -> std::vector
+ const std::vector<Struct> v;
+ const std::vector<std::reference_wrapper<const Struct>> x = Utils::toConstReferences(v);
+ }
+ {
+ // QList -> std::vector
+ const QList<Struct> v;
+ const std::vector<std::reference_wrapper<const Struct>> x
+ = Utils::toConstReferences<std::vector>(v);
+ }
+ {
+ // std::vector -> QList
+ const std::vector<Struct> v;
+ const QList<std::reference_wrapper<const Struct>> x = Utils::toConstReferences<QList>(v);
+ }
+}
+
QTEST_MAIN(tst_Algorithm)
#include "tst_algorithm.moc"