| 34 | using migraphx::unfold; |
| 35 | |
| 36 | TEST_CASE(test_basic_sequence) |
| 37 | { |
| 38 | auto f = [](int x) { return x; }; |
| 39 | auto g = [](int x) -> std::optional<int> { |
| 40 | return (x < 5) ? std::optional{x + 1} : std::nullopt; |
| 41 | }; |
| 42 | auto rng = unfold(1, f, g); |
| 43 | |
| 44 | std::vector<int> got; |
| 45 | std::copy(rng.begin(), rng.end(), std::back_inserter(got)); |
| 46 | |
| 47 | EXPECT(got.size() == 5); |
| 48 | EXPECT(got == std::vector<int>{1, 2, 3, 4, 5}); |
| 49 | } |
| 50 | |
| 51 | TEST_CASE(test_empty_sequence) |
| 52 | { |