From f62b24c4755b7488661df87039d66a77183ebb9d Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 15 Dec 2017 13:52:47 +0100 Subject: Utils::transform: Support containers without reserve() Support containers without reserve() as result container, for example std::set/deque/list Change-Id: Ia96b834c67d5ee74bfb9de2cf6b86639f6b3d5d7 Reviewed-by: Tobias Hunger --- tests/auto/algorithm/tst_algorithm.cpp | 36 ++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/auto/algorithm/tst_algorithm.cpp b/tests/auto/algorithm/tst_algorithm.cpp index 70088d8a20d..b5ce21c775b 100644 --- a/tests/auto/algorithm/tst_algorithm.cpp +++ b/tests/auto/algorithm/tst_algorithm.cpp @@ -27,6 +27,7 @@ #include #include +#include #include #include #include @@ -339,6 +340,25 @@ void tst_Algorithm::transform() return s.getMember(); }); } + // target containers without reserve(...) + { + // std::vector -> std::deque + const std::vector v({1, 2, 3, 4}); + const std::deque trans = Utils::transform(v, [](int i) { return i + 1; }); + QCOMPARE(trans, std::deque({2, 3, 4, 5})); + } + { + // std::vector -> std::list + const std::vector v({1, 2, 3, 4}); + const std::list trans = Utils::transform(v, [](int i) { return i + 1; }); + QCOMPARE(trans, std::list({2, 3, 4, 5})); + } + { + // std::vector -> std::set + const std::vector v({1, 2, 3, 4}); + const std::set trans = Utils::transform>(v, [](int i) { return i + 1; }); + QCOMPARE(trans, std::set({2, 3, 4, 5})); + } } void tst_Algorithm::sort() @@ -473,9 +493,10 @@ void tst_Algorithm::toRawPointer() // different result container const std::vector x2 = Utils::toRawPointer(v); const QVector x3 = Utils::toRawPointer(v); + const std::list x4 = Utils::toRawPointer(v); // different fully specified result container - const std::vector x4 = Utils::toRawPointer>(v); - const QVector x5 = Utils::toRawPointer>(v); + const std::vector x5 = Utils::toRawPointer>(v); + const QVector x6 = Utils::toRawPointer>(v); } void tst_Algorithm::toReferences() @@ -496,6 +517,11 @@ void tst_Algorithm::toReferences() std::vector v; const QList> x = Utils::toReferences(v); } + { + // std::vector -> std::list + std::vector v; + const std::list> x = Utils::toReferences(v); + } // toConstReference { // std::vector -> std::vector @@ -513,6 +539,12 @@ void tst_Algorithm::toReferences() const std::vector v; const QList> x = Utils::toConstReferences(v); } + { + // std::vector -> std::list + const std::vector v; + const std::list> x + = Utils::toConstReferences(v); + } } QTEST_MAIN(tst_Algorithm) -- cgit v1.2.3