based

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

find_if_unguarded_test.cpp (1902B)


1 #include <array> 2 3 #include <catch2/catch_test_macros.hpp> 4 5 #include "based/algorithm.hpp" 6 7 struct predicate 8 { 9 int goal; 10 11 explicit predicate(int init) 12 : goal(init) 13 { 14 } 15 16 auto operator()(int n) const { return n == goal; } 17 }; 18 19 TEST_CASE("find_if_unguarded(one)", "[algorithm/find_if_unguarded]") 20 { 21 const std::array arr = {0}; 22 23 const auto* itr = based::find_if_unguarded(std::begin(arr), predicate {0}); 24 const auto idx = std::distance(std::cbegin(arr), itr); 25 REQUIRE(idx == 0); 26 } 27 28 TEST_CASE("find_if_unguarded(two)", "[algorithm/find_if_unguarded]") 29 { 30 const std::array arr = {0, 1}; 31 32 const auto* itr = based::find_if_unguarded(std::begin(arr), predicate {1}); 33 const auto idx = std::distance(std::cbegin(arr), itr); 34 REQUIRE(idx == 1); 35 } 36 37 TEST_CASE("find_if_unguarded(multiple)", "[algorithm/find_if_unguarded]") 38 { 39 const std::array arr = {0, 0, 0, 0}; 40 41 const auto* itr = based::find_if_unguarded(std::begin(arr), predicate {0}); 42 const auto idx = std::distance(std::cbegin(arr), itr); 43 REQUIRE(idx == 0); 44 } 45 46 TEST_CASE("find_if_not_unguarded(one)", "[algorithm/find_if_not_unguarded]") 47 { 48 const std::array arr = {0}; 49 50 const auto* itr = 51 based::find_if_not_unguarded(std::begin(arr), predicate {1}); 52 const auto idx = std::distance(std::cbegin(arr), itr); 53 REQUIRE(idx == 0); 54 } 55 56 TEST_CASE("find_if_not_unguarded(two)", "[algorithm/find_if_not_unguarded]") 57 { 58 const std::array arr = {0, 1}; 59 60 const auto* itr = 61 based::find_if_not_unguarded(std::begin(arr), predicate {0}); 62 const auto idx = std::distance(std::cbegin(arr), itr); 63 REQUIRE(idx == 1); 64 } 65 66 TEST_CASE("find_if_not_unguarded(multiple)", 67 "[algorithm/find_if_not_unguarded]") 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 }