based

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

max_element_test.cpp (2837B)


0 #include <array> 1 2 #include <catch2/catch_test_macros.hpp> 3 4 #include "based/algorithm.hpp" 5 6 TEST_CASE("max_element(empty)", "[algorithm/max_element]") 7 { 8 const std::array<int, 0> arr = {}; 9 const auto* itr = based::max_element(std::begin(arr), std::end(arr)); 10 REQUIRE(itr == std::end(arr)); 11 } 12 13 TEST_CASE("max_element(1)", "[algorithm/max_element]") 14 { 15 const std::array arr = {0}; 16 const auto* itr = based::max_element(std::begin(arr), std::end(arr)); 17 const auto idx = std::distance(std::cbegin(arr), itr); 18 REQUIRE(idx == 0); 19 } 20 21 TEST_CASE("max_element(2) = first", "[algorithm/max_element]") 22 { 23 const std::array arr = {1, 0}; 24 const auto* itr = based::max_element(std::begin(arr), std::end(arr)); 25 const auto idx = std::distance(std::cbegin(arr), itr); 26 REQUIRE(idx == 0); 27 } 28 29 TEST_CASE("max_element(2) = second", "[algorithm/max_element]") 30 { 31 const std::array arr = {0, 1}; 32 const auto* itr = based::max_element(std::begin(arr), std::end(arr)); 33 const auto idx = std::distance(std::cbegin(arr), itr); 34 REQUIRE(idx == 1); 35 } 36 37 TEST_CASE("max_element(2) = stable", "[algorithm/max_element]") 38 { 39 const std::array arr = {0, 0}; 40 const auto* itr = based::max_element(std::begin(arr), std::end(arr)); 41 const auto idx = std::distance(std::cbegin(arr), itr); 42 REQUIRE(idx == 1); 43 } 44 45 TEST_CASE("max_element(3) = first", "[algorithm/max_element]") 46 { 47 const std::array arr = {2, 1, 0}; 48 const auto* itr = based::max_element(std::begin(arr), std::end(arr)); 49 const auto idx = std::distance(std::cbegin(arr), itr); 50 REQUIRE(idx == 0); 51 } 52 53 TEST_CASE("max_element(3) = second", "[algorithm/max_element]") 54 { 55 const std::array arr = {1, 2, 0}; 56 const auto* itr = based::max_element(std::begin(arr), std::end(arr)); 57 const auto idx = std::distance(std::cbegin(arr), itr); 58 REQUIRE(idx == 1); 59 } 60 61 TEST_CASE("max_element(3) = third", "[algorithm/max_element]") 62 { 63 const std::array arr = {0, 1, 2}; 64 const auto* itr = based::max_element(std::begin(arr), std::end(arr)); 65 const auto idx = std::distance(std::cbegin(arr), itr); 66 REQUIRE(idx == 2); 67 } 68 69 TEST_CASE("max_element(3) = stable(1, 2)", "[algorithm/max_element]") 70 { 71 const std::array arr = {1, 1, 0}; 72 const auto* itr = based::max_element(std::begin(arr), std::end(arr)); 73 const auto idx = std::distance(std::cbegin(arr), itr); 74 REQUIRE(idx == 1); 75 } 76 77 TEST_CASE("max_element(3) = stable(1, 3)", "[algorithm/max_element]") 78 { 79 const std::array arr = {1, 0, 1}; 80 const auto* itr = based::max_element(std::begin(arr), std::end(arr)); 81 const auto idx = std::distance(std::cbegin(arr), itr); 82 REQUIRE(idx == 2); 83 } 84 85 TEST_CASE("max_element(3) = stable(2, 3)", "[algorithm/max_element]") 86 { 87 const std::array arr = {0, 1, 1}; 88 const auto* itr = based::max_element(std::begin(arr), std::end(arr)); 89 const auto idx = std::distance(std::cbegin(arr), itr); 90 REQUIRE(idx == 2); 91 }