basedOpinionated utility library |
git clone git://git.dimitrijedobrota.com/based.git |
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING |
find_if_unguarded_test.cpp (1898B)
0 #include <array> 1 2 #include <catch2/catch_test_macros.hpp> 3 4 #include "based/algorithm.hpp" 5 6 struct predicate 7 { 8 int goal; 9 10 explicit predicate(int init) 11 : goal(init) 12 { 13 } 14 15 auto operator()(int n) const { return n == goal; } 16 }; 17 18 TEST_CASE("find_if_unguarded(one)", "[algorithm/find_if_unguarded]") 19 { 20 const std::array arr = {0}; 21 22 const auto* itr = based::find_if_unguarded(std::begin(arr), predicate {0}); 23 const auto idx = std::distance(std::cbegin(arr), itr); 24 REQUIRE(idx == 0); 25 } 26 27 TEST_CASE("find_if_unguarded(two)", "[algorithm/find_if_unguarded]") 28 { 29 const std::array arr = {0, 1}; 30 31 const auto* itr = based::find_if_unguarded(std::begin(arr), predicate {1}); 32 const auto idx = std::distance(std::cbegin(arr), itr); 33 REQUIRE(idx == 1); 34 } 35 36 TEST_CASE("find_if_unguarded(multiple)", "[algorithm/find_if_unguarded]") 37 { 38 const std::array arr = {0, 0, 0, 0}; 39 40 const auto* itr = based::find_if_unguarded(std::begin(arr), predicate {0}); 41 const auto idx = std::distance(std::cbegin(arr), itr); 42 REQUIRE(idx == 0); 43 } 44 45 TEST_CASE("find_if_not_unguarded(one)", "[algorithm/find_if_not_unguarded]") 46 { 47 const std::array arr = {0}; 48 49 const auto* itr = 50 based::find_if_not_unguarded(std::begin(arr), predicate {1}); 51 const auto idx = std::distance(std::cbegin(arr), itr); 52 REQUIRE(idx == 0); 53 } 54 55 TEST_CASE("find_if_not_unguarded(two)", "[algorithm/find_if_not_unguarded]") 56 { 57 const std::array arr = {0, 1}; 58 59 const auto* itr = 60 based::find_if_not_unguarded(std::begin(arr), predicate {0}); 61 const auto idx = std::distance(std::cbegin(arr), itr); 62 REQUIRE(idx == 1); 63 } 64 65 TEST_CASE( 66 "find_if_not_unguarded(multiple)", "[algorithm/find_if_not_unguarded]" 67 ) 68 { 69 const std::array arr = {1, 1, 0, 1}; 70 71 const auto* itr = 72 based::find_if_not_unguarded(std::begin(arr), predicate {1}); 73 const auto idx = std::distance(std::cbegin(arr), itr); 74 REQUIRE(idx == 2); 75 }