basedOpinionated utility library |
git clone git://git.dimitrijedobrota.com/based.git |
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING |
commit | 2924ad6155a029964bec66a410983f838e1b38d6 |
parent | fa32c0655ebccdccc6a4e47a88618f87d3ae14fb |
author | Dimitrije Dobrota < mail@dimitrijedobrota.com > |
date | Tue, 1 Apr 2025 10:49:26 +0200 |
min_element and max_element tests
M | test/CMakeLists.txt | | | ++ |
A | test/source/max_element_test.cpp | | | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | test/source/min_element_test.cpp | | | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
3 files changed, 186 insertions(+), 0 deletions(-)
diff --git a/ test/CMakeLists.txt b/ test/CMakeLists.txt
@@ -23,7 +23,9 @@
endfunction()
# ---- Algorithm ----
add_test(min_test)
add_test(min_element_test)
add_test(max_test)
add_test(max_element_test)
# ---- End-of-file commands ----
diff --git a/ test/source/max_element_test.cpp b/ test/source/max_element_test.cpp
@@ -0,0 +1,92 @@
#include <array>
#include <catch2/catch_test_macros.hpp>
#include "based/algorithm.hpp"
TEST_CASE("max_element(empty)", "[based/algorithm/max_element]")
{
std::array<int, 0> arr = {};
const auto* itr = based::max_element(std::begin(arr), std::end(arr));
REQUIRE(itr == std::end(arr));
}
TEST_CASE("max_element(1)", "[based/algorithm/max_element]")
{
std::array arr = {0};
const auto* itr = based::max_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 0);
}
TEST_CASE("max_element(2) = first", "[based/algorithm/max_element]")
{
std::array arr = {1, 0};
const auto* itr = based::max_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 0);
}
TEST_CASE("max_element(2) = second", "[based/algorithm/max_element]")
{
std::array arr = {0, 1};
const auto* itr = based::max_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 1);
}
TEST_CASE("max_element(2) = stable", "[based/algorithm/max_element]")
{
std::array arr = {0, 0};
const auto* itr = based::max_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 1);
}
TEST_CASE("max_element(3) = first", "[based/algorithm/max_element]")
{
std::array arr = {2, 1, 0};
const auto* itr = based::max_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 0);
}
TEST_CASE("max_element(3) = second", "[based/algorithm/max_element]")
{
std::array arr = {1, 2, 0};
const auto* itr = based::max_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 1);
}
TEST_CASE("max_element(3) = third", "[based/algorithm/max_element]")
{
std::array arr = {0, 1, 2};
const auto* itr = based::max_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 2);
}
TEST_CASE("max_element(3) = stable(1, 2)", "[based/algorithm/max_element]")
{
std::array arr = {1, 1, 0};
const auto* itr = based::max_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 1);
}
TEST_CASE("max_element(3) = stable(1, 3)", "[based/algorithm/max_element]")
{
std::array arr = {1, 0, 1};
const auto* itr = based::max_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 2);
}
TEST_CASE("max_element(3) = stable(2, 3)", "[based/algorithm/max_element]")
{
std::array arr = {0, 1, 1};
const auto* itr = based::max_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 2);
}
diff --git a/ test/source/min_element_test.cpp b/ test/source/min_element_test.cpp
@@ -0,0 +1,92 @@
#include <array>
#include <catch2/catch_test_macros.hpp>
#include "based/algorithm.hpp"
TEST_CASE("min_element(empty)", "[based/algorithm/min_element]")
{
std::array<int, 0> arr = {};
const auto* itr = based::min_element(std::begin(arr), std::end(arr));
REQUIRE(itr == std::end(arr));
}
TEST_CASE("min_element(1)", "[based/algorithm/min_element]")
{
std::array arr = {0};
const auto* itr = based::min_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 0);
}
TEST_CASE("min_element(2) = first", "[based/algorithm/min_element]")
{
std::array arr = {0, 1};
const auto* itr = based::min_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 0);
}
TEST_CASE("min_element(2) = second", "[based/algorithm/min_element]")
{
std::array arr = {1, 0};
const auto* itr = based::min_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 1);
}
TEST_CASE("min_element(2) = stable", "[based/algorithm/min_element]")
{
std::array arr = {0, 0};
const auto* itr = based::min_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 0);
}
TEST_CASE("min_element(3) = first", "[based/algorithm/min_element]")
{
std::array arr = {0, 1, 2};
const auto* itr = based::min_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 0);
}
TEST_CASE("min_element(3) = second", "[based/algorithm/min_element]")
{
std::array arr = {1, 0, 2};
const auto* itr = based::min_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 1);
}
TEST_CASE("min_element(3) = third", "[based/algorithm/min_element]")
{
std::array arr = {2, 1, 0};
const auto* itr = based::min_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 2);
}
TEST_CASE("min_element(3) = stable(1, 2)", "[based/algorithm/min_element]")
{
std::array arr = {0, 0, 1};
const auto* itr = based::min_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 0);
}
TEST_CASE("min_element(3) = stable(1, 3)", "[based/algorithm/min_element]")
{
std::array arr = {0, 1, 0};
const auto* itr = based::min_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 0);
}
TEST_CASE("min_element(3) = stable(2, 3)", "[based/algorithm/min_element]")
{
std::array arr = {1, 0, 0};
const auto* itr = based::min_element(std::begin(arr), std::end(arr));
const auto idx = std::distance(std::cbegin(arr), itr);
REQUIRE(idx == 1);
}