based

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

max_element_test.cpp (2837B)


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