based

Opinionated utility library
git clone git://git.dimitrijedobrota.com/based.git
Log | Files | Refs | README | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING

reduce_test.cpp (1178B)


1 #include <array> 2 #include <vector> 3 4 #include <catch2/catch_test_macros.hpp> 5 6 #include "based/algorithm.hpp" 7 8 struct op 9 { 10 auto operator()(const auto& a, const auto& b) { return a + b; } 11 }; 12 13 struct fun 14 { 15 auto operator()(based::Iterator auto it) { return *it; } 16 }; 17 18 TEST_CASE("reduce(empty)", "[algorithm/reduce]") 19 { 20 const std::array<int, 0> arr = {}; 21 22 const auto count = 23 based::reduce(std::cbegin(arr), std::cend(arr), op {}, fun {}, 0); 24 25 REQUIRE(count == 0); 26 } 27 28 TEST_CASE("reduce(sequence)", "[algorithm/reduce]") 29 { 30 const std::array arr = {0, 1, 2, 3, 4, 5}; 31 32 const auto count = 33 based::reduce(std::cbegin(arr), std::cend(arr), op {}, fun {}, 0); 34 35 REQUIRE(count == 15); 36 } 37 38 TEST_CASE("reduce_nonzero(empty)", "[algorithm/reduce_nonzero]") 39 { 40 const std::array<int, 0> arr = {}; 41 42 const auto count = 43 based::reduce_nonzero(std::cbegin(arr), std::cend(arr), op {}, fun {}, 0); 44 45 REQUIRE(count == 0); 46 } 47 48 TEST_CASE("reduce_nonzero(sequence)", "[algorithm/reduce_nonzero]") 49 { 50 const std::array arr = {0, 1, 2, 3, 4, 5}; 51 52 const auto count = 53 based::reduce_nonzero(std::cbegin(arr), std::cend(arr), op {}, fun {}, 0); 54 55 REQUIRE(count == 15); 56 }