// // filter_test.cxx // stream-test // // Created by Sam Jaffe on 4/5/23. // #include "stream/view/filter.h" #include "stream_helpers.h" #include "stream_matchers.h" TEST(FilterView, DoesNotPropagatesSize) { Range, Sentinel, Sized> input{0, 1, 2, 3, 4}; auto range = input | views::filter([](int) { return true; }); static_assert(!stream::detail::has_size_v); } TEST(FilterView, DoesNotPropagatesEmpty) { Range, Sentinel, Sized> input{0, 1, 2, 3, 4}; auto range = input | views::filter([](int) { return true; }); static_assert(stream::detail::has_empty_v); } TEST(FilterView, NoOpFilterReturnOriginal) { std::vector const input{1, 2, 3, 4, 5}; EXPECT_THAT(input | views::filter([](int) { return true; }), RangesEq(input)); } TEST(FilterView, CanFilterOutElements) { std::vector const input{1, 2, 3, 4, 5}; EXPECT_THAT(input | views::filter([](int i) { return i % 2 == 0; }), RangesEq(std::vector{2, 4})); }