summaryrefslogtreecommitdiff
path: root/tests/auto/algorithm/tst_algorithm.cpp
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2017-11-29 15:50:11 +0100
committerTobias Hunger <tobias.hunger@qt.io>2017-12-01 14:11:28 +0000
commitb81d788793c4845782487cdd58eae3de82489261 (patch)
treee1190b9fba66b5ef832dfa07cca36fe548b1b56b /tests/auto/algorithm/tst_algorithm.cpp
parentb712b1bc7cc3bddca0780d2e8b8d3611ab134376 (diff)
downloadqt-creator-b81d788793c4845782487cdd58eae3de82489261.tar.gz
Utils: Support more containers with Utils::transform
Support std::vector and similar classes as input and output. Change-Id: I1d202d54c18e868ce0e71e4c2b6288565710baa8 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.cpp73
1 files changed, 73 insertions, 0 deletions
diff --git a/tests/auto/algorithm/tst_algorithm.cpp b/tests/auto/algorithm/tst_algorithm.cpp
index 9fd35b5a16..1f54294c2d 100644
--- a/tests/auto/algorithm/tst_algorithm.cpp
+++ b/tests/auto/algorithm/tst_algorithm.cpp
@@ -26,6 +26,7 @@
#include <QtTest>
#include <array>
+#include <deque>
#include <memory>
#include <valarray>
@@ -162,6 +163,78 @@ void tst_Algorithm::transform()
const QList<int> trans = Utils::transform(list, &Struct::member);
QCOMPARE(trans, QList<int>({4, 3, 2, 1, 2}));
}
+ {
+ // QList -> std::vector
+ const QList<int> v({1, 2, 3, 4});
+ const std::vector<int> trans = Utils::transform<std::vector>(v, [](int i) { return i + 1; });
+ QCOMPARE(trans, std::vector<int>({2, 3, 4, 5}));
+ }
+ {
+ // QList -> std::vector
+ const QList<Struct> v({1, 2, 3, 4});
+ const std::vector<int> trans = Utils::transform<std::vector>(v, &Struct::getMember);
+ QCOMPARE(trans, std::vector<int>({1, 2, 3, 4}));
+ }
+ {
+ // QList -> std::vector
+ const QList<Struct> v({1, 2, 3, 4});
+ const std::vector<int> trans = Utils::transform<std::vector>(v, &Struct::member);
+ QCOMPARE(trans, std::vector<int>({1, 2, 3, 4}));
+ }
+ {
+ // std::vector -> QList
+ const std::vector<int> v({1, 2, 3, 4});
+ const QList<int> trans = Utils::transform<QList>(v, [](int i) { return i + 1; });
+ QCOMPARE(trans, QList<int>({2, 3, 4, 5}));
+ }
+ {
+ // std::vector -> QList
+ const std::vector<Struct> v({1, 2, 3, 4});
+ const QList<int> trans = Utils::transform<QList>(v, &Struct::getMember);
+ QCOMPARE(trans, QList<int>({1, 2, 3, 4}));
+ }
+ {
+ // std::vector -> QList
+ const std::vector<Struct> v({1, 2, 3, 4});
+ const QList<int> trans = Utils::transform<QList>(v, &Struct::member);
+ QCOMPARE(trans, QList<int>({1, 2, 3, 4}));
+ }
+ {
+ // std::deque -> std::vector
+ const std::deque<int> v({1, 2, 3, 4});
+ const std::vector<int> trans = Utils::transform<std::vector>(v, [](int i) { return i + 1; });
+ QCOMPARE(trans, std::vector<int>({2, 3, 4, 5}));
+ }
+ {
+ // std::deque -> std::vector
+ const std::deque<Struct> v({1, 2, 3, 4});
+ const std::vector<int> trans = Utils::transform<std::vector>(v, &Struct::getMember);
+ QCOMPARE(trans, std::vector<int>({1, 2, 3, 4}));
+ }
+ {
+ // std::deque -> std::vector
+ const std::deque<Struct> v({1, 2, 3, 4});
+ const std::vector<int> trans = Utils::transform<std::vector>(v, &Struct::member);
+ QCOMPARE(trans, std::vector<int>({1, 2, 3, 4}));
+ }
+ {
+ // std::vector -> std::vector
+ const std::vector<int> v({1, 2, 3, 4});
+ const std::vector<int> trans = Utils::transform(v, [](int i) { return i + 1; });
+ QCOMPARE(trans, std::vector<int>({2, 3, 4, 5}));
+ }
+ {
+ // std::vector -> std::vector
+ const std::vector<Struct> v({1, 2, 3, 4});
+ const std::vector<int> trans = Utils::transform(v, &Struct::getMember);
+ QCOMPARE(trans, std::vector<int>({1, 2, 3, 4}));
+ }
+ {
+ // std::vector -> std::vector
+ const std::vector<Struct> v({1, 2, 3, 4});
+ const std::vector<int> trans = Utils::transform(v, &Struct::member);
+ QCOMPARE(trans, std::vector<int>({1, 2, 3, 4}));
+ }
}
void tst_Algorithm::sort()