based

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

find_test.cpp (3442B)


1 #include <array> 2 3 #include <catch2/catch_test_macros.hpp> 4 5 #include "based/algorithm.hpp" 6 7 TEST_CASE("find(empty)", "[algorithm/find]") 8 { 9 const std::array<int, 0> arr = {}; 10 const auto* it = based::find(std::begin(arr), std::end(arr), 0); 11 12 REQUIRE(it == std::end(arr)); 13 } 14 15 TEST_CASE("find(one) = found", "[algorithm/find]") 16 { 17 const std::array arr = {0}; 18 19 SECTION("found") 20 { 21 const auto* itr = based::find(std::begin(arr), std::end(arr), 0); 22 const auto idx = std::distance(std::cbegin(arr), itr); 23 REQUIRE(idx == 0); 24 } 25 26 SECTION("not found") 27 { 28 const auto* itr = based::find(std::begin(arr), std::end(arr), 1); 29 const auto idx = std::distance(std::cbegin(arr), itr); 30 REQUIRE(idx == 1); 31 } 32 } 33 34 TEST_CASE("find(two) = found", "[algorithm/find]") 35 { 36 const std::array arr = {0, 1}; 37 38 SECTION("found 1") 39 { 40 const auto* itr = based::find(std::begin(arr), std::end(arr), 0); 41 const auto idx = std::distance(std::cbegin(arr), itr); 42 REQUIRE(idx == 0); 43 } 44 45 SECTION("found 2") 46 { 47 const auto* itr = based::find(std::begin(arr), std::end(arr), 1); 48 const auto idx = std::distance(std::cbegin(arr), itr); 49 REQUIRE(idx == 1); 50 } 51 52 SECTION("not found") 53 { 54 const auto* itr = based::find(std::begin(arr), std::end(arr), 2); 55 const auto idx = std::distance(std::cbegin(arr), itr); 56 REQUIRE(idx == 2); 57 } 58 } 59 60 TEST_CASE("find(multiple) = found", "[algorithm/find]") 61 { 62 const std::array arr = {0, 0, 0, 0}; 63 64 SECTION("found") 65 { 66 const auto* itr = based::find(std::begin(arr), std::end(arr), 0); 67 const auto idx = std::distance(std::cbegin(arr), itr); 68 REQUIRE(idx == 0); 69 } 70 71 SECTION("not found") 72 { 73 const auto* itr = based::find(std::begin(arr), std::end(arr), 1); 74 const auto idx = std::distance(std::cbegin(arr), itr); 75 REQUIRE(idx == 4); 76 } 77 } 78 79 TEST_CASE("find_not(empty)", "[algorithm/find_not]") 80 { 81 const std::array<int, 0> arr = {}; 82 const auto* it = based::find_not(std::begin(arr), std::end(arr), 0); 83 84 REQUIRE(it == std::end(arr)); 85 } 86 87 TEST_CASE("find_not(one) = found", "[algorithm/find_not]") 88 { 89 const std::array arr = {0}; 90 91 SECTION("found") 92 { 93 const auto* itr = based::find_not(std::begin(arr), std::end(arr), 1); 94 const auto idx = std::distance(std::cbegin(arr), itr); 95 REQUIRE(idx == 0); 96 } 97 98 SECTION("not found") 99 { 100 const auto* itr = based::find_not(std::begin(arr), std::end(arr), 0); 101 const auto idx = std::distance(std::cbegin(arr), itr); 102 REQUIRE(idx == 1); 103 } 104 } 105 106 TEST_CASE("find_not(two) = found", "[algorithm/find_not]") 107 { 108 const std::array arr = {0, 1}; 109 110 SECTION("found 1") 111 { 112 const auto* itr = based::find_not(std::begin(arr), std::end(arr), 1); 113 const auto idx = std::distance(std::cbegin(arr), itr); 114 REQUIRE(idx == 0); 115 } 116 117 SECTION("found 2") 118 { 119 const auto* itr = based::find_not(std::begin(arr), std::end(arr), 0); 120 const auto idx = std::distance(std::cbegin(arr), itr); 121 REQUIRE(idx == 1); 122 } 123 } 124 125 TEST_CASE("find_not(multiple) = found", "[algorithm/find_not]") 126 { 127 const std::array arr = {0, 0, 0, 0}; 128 129 SECTION("found") 130 { 131 const auto* itr = based::find_not(std::begin(arr), std::end(arr), 1); 132 const auto idx = std::distance(std::cbegin(arr), itr); 133 REQUIRE(idx == 0); 134 } 135 136 SECTION("not found") 137 { 138 const auto* itr = based::find_not(std::begin(arr), std::end(arr), 0); 139 const auto idx = std::distance(std::cbegin(arr), itr); 140 REQUIRE(idx == 4); 141 } 142 }