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