to_container_test.cxx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. //
  2. // to_container_test.cxx
  3. // stream-test
  4. //
  5. // Created by Sam Jaffe on 4/5/23.
  6. //
  7. #include "stream/to_container.h"
  8. #include "stream_helpers.h"
  9. #include "stream_matchers.h"
  10. using testing::ElementsAre;
  11. using testing::Pair;
  12. using testing::StaticAssertTypeEq;
  13. TEST(ToContainer, ConvertsToSet) {
  14. std::vector<int> const input{0, 1, 2, 1, 2};
  15. auto output = input | ranges::to_set();
  16. StaticAssertTypeEq<decltype(output), std::set<int>>();
  17. EXPECT_THAT(output, ElementsAre(0, 1, 2));
  18. }
  19. TEST(ToContainer, ConvertsToVector) {
  20. std::set<int> const input{0, 1, 2};
  21. auto output = input | ranges::to_vector();
  22. StaticAssertTypeEq<decltype(output), std::vector<int>>();
  23. EXPECT_THAT(output, ElementsAre(0, 1, 2));
  24. }
  25. TEST(ToContainer, CanConvertPairContainerToAssoc) {
  26. std::vector<std::pair<int, std::string>> const input{{0, "hello"},
  27. {1, "goodbye"}};
  28. auto output = input | ranges::to_map();
  29. StaticAssertTypeEq<decltype(output), std::map<int, std::string>>();
  30. EXPECT_THAT(output, ElementsAre(Pair(0, "hello"), Pair(1, "goodbye")));
  31. }
  32. TEST(ToContainer, CanConvertAssocToPairContainer) {
  33. std::map<int, std::string> const input{{0, "hello"}, {1, "goodbye"}};
  34. auto output = input | ranges::to_vector();
  35. StaticAssertTypeEq<decltype(output),
  36. std::vector<std::pair<int const, std::string>>>();
  37. EXPECT_THAT(output, ElementsAre(Pair(0, "hello"), Pair(1, "goodbye")));
  38. }