File indexing completed on 2025-06-17 01:30:10
0001 #include "catch.hpp"
0002
0003 #include "DataFormats/Common/interface/StdArray.h"
0004
0005 TEST_CASE("StdArray", "[StdArray]") {
0006 SECTION("Empty array") {
0007 edm::StdArray<int, 0> array;
0008 REQUIRE(array.empty());
0009 REQUIRE(array.begin() == array.end());
0010 REQUIRE(array.rbegin() == array.rend());
0011 for ([[maybe_unused]] auto element : array) {
0012 REQUIRE(false);
0013 }
0014 REQUIRE(std::data(array) == nullptr);
0015 REQUIRE(std::size(array) == 0);
0016 }
0017
0018 SECTION("Default constructor") {
0019 edm::StdArray<int, 4> array;
0020 REQUIRE(not array.empty());
0021 REQUIRE(array.size() == 4);
0022 REQUIRE(std::data(array) != nullptr);
0023 REQUIRE(std::size(array) != 0);
0024 }
0025
0026 SECTION("Aggregate constructor") {
0027 edm::StdArray<int, 4> array{{0, 1, 2, 3}};
0028 REQUIRE(not array.empty());
0029 REQUIRE(array.size() == 4);
0030 REQUIRE(array.front() == 0);
0031 REQUIRE(array.back() == 3);
0032 for (int i = 0; i < 4; ++i) {
0033 REQUIRE(array.at(i) == i);
0034 REQUIRE(array[i] == i);
0035 }
0036 REQUIRE(std::data(array) != nullptr);
0037 REQUIRE(std::size(array) != 0);
0038 }
0039
0040 SECTION("Copy constructor") {
0041 edm::StdArray<int, 4> array{{0, 1, 2, 3}};
0042 edm::StdArray<int, 4> other = array;
0043 for (int i = 0; i < 4; ++i) {
0044 REQUIRE(other[i] == i);
0045 }
0046 }
0047
0048 SECTION("Move constructor") {
0049 edm::StdArray<int, 4> array{{0, 1, 2, 3}};
0050 edm::StdArray<int, 4> other = std::move(array);
0051 for (int i = 0; i < 4; ++i) {
0052 REQUIRE(other[i] == i);
0053 }
0054 }
0055
0056 SECTION("Copy assignment") {
0057 edm::StdArray<int, 4> array{{0, 1, 2, 3}};
0058 edm::StdArray<int, 4> other;
0059 other = array;
0060 for (int i = 0; i < 4; ++i) {
0061 REQUIRE(other[i] == i);
0062 }
0063 }
0064
0065 SECTION("Move assignment") {
0066 edm::StdArray<int, 4> array{{0, 1, 2, 3}};
0067 edm::StdArray<int, 4> other;
0068 other = std::move(array);
0069 for (int i = 0; i < 4; ++i) {
0070 REQUIRE(other[i] == i);
0071 }
0072 }
0073
0074 SECTION("Assignment from std::array") {
0075 edm::StdArray<int, 4> array;
0076 std::array<int, 4> other{{0, 1, 2, 3}};
0077 array = other;
0078 for (int i = 0; i < 4; ++i) {
0079 REQUIRE(array[i] == i);
0080 }
0081 }
0082
0083 SECTION("Assignment to std::array") {
0084 edm::StdArray<int, 4> array{{0, 1, 2, 3}};
0085 std::array<int, 4> other = array;
0086 for (int i = 0; i < 4; ++i) {
0087 REQUIRE(other[i] == i);
0088 }
0089 }
0090 }