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 
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); });
16*60fee077SKrzysztof Grobelny     EXPECT_TRUE(utils::detail::has_member_reserve<decltype(input)>);
17*60fee077SKrzysztof Grobelny     EXPECT_TRUE(utils::detail::has_member_reserve<decltype(output)>);
18e2362796SWludzik, Jozef     ASSERT_THAT(output, ElementsAre("1", "2", "3"));
19e2362796SWludzik, Jozef }
20e2362796SWludzik, Jozef 
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); });
26*60fee077SKrzysztof Grobelny     EXPECT_FALSE(utils::detail::has_member_reserve<decltype(input)>);
27*60fee077SKrzysztof Grobelny     EXPECT_FALSE(utils::detail::has_member_reserve<decltype(output)>);
28*60fee077SKrzysztof Grobelny     ASSERT_THAT(output, ElementsAre("1", "2", "3"));
29*60fee077SKrzysztof Grobelny }
30*60fee077SKrzysztof Grobelny 
31*60fee077SKrzysztof Grobelny TEST(TestTransform, transformsArrayToVector)
32*60fee077SKrzysztof Grobelny {
33*60fee077SKrzysztof Grobelny     std::array<int, 3> input = {1, 2, 3};
34*60fee077SKrzysztof Grobelny     std::vector<std::string> output =
35*60fee077SKrzysztof Grobelny         utils::transform<std::vector<std::string>>(
36*60fee077SKrzysztof Grobelny             input, [](int v) { return std::to_string(v); });
37*60fee077SKrzysztof Grobelny     EXPECT_FALSE(utils::detail::has_member_reserve<decltype(input)>);
38*60fee077SKrzysztof Grobelny     EXPECT_TRUE(utils::detail::has_member_reserve<decltype(output)>);
39e2362796SWludzik, Jozef     ASSERT_THAT(output, ElementsAre("1", "2", "3"));
40e2362796SWludzik, Jozef }
41