Back to home page

Project CMSSW displayed by LXR

 
 

    


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 }