diff options
author | Marco Bubke <marco.bubke@qt.io> | 2017-11-28 17:58:24 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2017-12-20 09:58:17 +0000 |
commit | 91e40e12dbb94283cd804405411effc7f9903ed4 (patch) | |
tree | 8ae65bf61bb2ef081b3591584ec8677321aae9d4 /tests/auto/algorithm/tst_algorithm.cpp | |
parent | 60fb35a23c7827ab9448edbb62a3dd4dabd04550 (diff) | |
download | qt-creator-91e40e12dbb94283cd804405411effc7f9903ed4.tar.gz |
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/auto/algorithm/tst_algorithm.cpp')
-rw-r--r-- | tests/auto/algorithm/tst_algorithm.cpp | 53 |
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" |