1d2238194SKrzysztof Grobelny #include "helpers.hpp"
2e2362796SWludzik, Jozef #include "utils/transform.hpp"
3e2362796SWludzik, Jozef 
4e2362796SWludzik, Jozef #include <set>
5e2362796SWludzik, Jozef #include <vector>
6e2362796SWludzik, Jozef 
7e2362796SWludzik, Jozef #include <gmock/gmock.h>
8e2362796SWludzik, Jozef 
9e2362796SWludzik, Jozef using namespace testing;
10e2362796SWludzik, Jozef 
TEST(TestTransform,transformsVector)11e2362796SWludzik, Jozef TEST(TestTransform, transformsVector)
12e2362796SWludzik, Jozef {
13e2362796SWludzik, Jozef     std::vector<int> input = {1, 2, 3};
14e2362796SWludzik, Jozef     std::vector<std::string> output =
15e2362796SWludzik, Jozef         utils::transform(input, [](int v) { return std::to_string(v); });
1660fee077SKrzysztof Grobelny     EXPECT_TRUE(utils::detail::has_member_reserve<decltype(input)>);
1760fee077SKrzysztof Grobelny     EXPECT_TRUE(utils::detail::has_member_reserve<decltype(output)>);
18e2362796SWludzik, Jozef     ASSERT_THAT(output, ElementsAre("1", "2", "3"));
19e2362796SWludzik, Jozef }
20e2362796SWludzik, Jozef 
TEST(TestTransform,transformsSet)21e2362796SWludzik, Jozef TEST(TestTransform, transformsSet)
22e2362796SWludzik, Jozef {
23e2362796SWludzik, Jozef     std::set<int> input = {1, 2, 3};
24e2362796SWludzik, Jozef     std::set<std::string> output =
25e2362796SWludzik, Jozef         utils::transform(input, [](int v) { return std::to_string(v); });
2660fee077SKrzysztof Grobelny     EXPECT_FALSE(utils::detail::has_member_reserve<decltype(input)>);
2760fee077SKrzysztof Grobelny     EXPECT_FALSE(utils::detail::has_member_reserve<decltype(output)>);
2860fee077SKrzysztof Grobelny     ASSERT_THAT(output, ElementsAre("1", "2", "3"));
2960fee077SKrzysztof Grobelny }
3060fee077SKrzysztof Grobelny 
TEST(TestTransform,transformsArrayToVector)3160fee077SKrzysztof Grobelny TEST(TestTransform, transformsArrayToVector)
3260fee077SKrzysztof Grobelny {
3360fee077SKrzysztof Grobelny     std::array<int, 3> input = {1, 2, 3};
34*fdb06a14SSzymon Dompke     std::vector<std::string> output = utils::transform<std::vector>(
3560fee077SKrzysztof Grobelny         input, [](int v) { return std::to_string(v); });
3660fee077SKrzysztof Grobelny     EXPECT_FALSE(utils::detail::has_member_reserve<decltype(input)>);
3760fee077SKrzysztof Grobelny     EXPECT_TRUE(utils::detail::has_member_reserve<decltype(output)>);
38e2362796SWludzik, Jozef     ASSERT_THAT(output, ElementsAre("1", "2", "3"));
39e2362796SWludzik, Jozef }
40