Skip to content

Commit 4b2b1ed

Browse files
committed
Extended test cases with empty spans
1 parent c076be7 commit 4b2b1ed

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

DataFormats/Common/test/test_catch2_MultiSpan.cpp

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,32 @@ TEST_CASE("MultiSpan basic indexing", "[MultiSpan]") {
1111
edm::MultiSpan<int> emptyMultiSpan;
1212
edm::MultiSpan<int> ms;
1313

14+
edm::MultiSpan<int> ms1; // MultiSpan with empty span as first span
15+
edm::MultiSpan<int> ms2; // MultiSpan with several empty spans
16+
edm::MultiSpan<int> ms3; // MultiSpan with empty span as last span
17+
1418
std::vector<int> a = {1, 2, 3};
1519
std::vector<int> b = {4, 5};
20+
std::vector<int> c;
1621

1722
ms.add(a);
1823
ms.add(b);
1924

25+
ms1.add(c);
26+
ms1.add(b);
27+
ms1.add(a);
28+
29+
ms2.add(b);
30+
ms2.add(c);
31+
ms2.add(c);
32+
ms2.add(c);
33+
ms2.add(b);
34+
ms2.add(a);
35+
ms2.add(c);
36+
37+
ms3.add(a);
38+
ms3.add(c);
39+
2040
using ElementType = decltype(ms[0]);
2141
// Check that the const-correctness of the MultiSpan
2242
static_assert(!std::is_assignable<ElementType, int>::value,
@@ -100,4 +120,59 @@ TEST_CASE("MultiSpan basic indexing", "[MultiSpan]") {
100120
REQUIRE(ms[3] == out[3]);
101121
REQUIRE(ms[4] == out[4]);
102122
}
123+
124+
SECTION("Check MultiSpan with empty span as first span") {
125+
REQUIRE(ms1.size() == 5);
126+
127+
REQUIRE(ms1[0] == b[0]);
128+
REQUIRE(ms1[1] == b[1]);
129+
REQUIRE(ms1[2] == a[0]);
130+
REQUIRE(ms1[3] == a[1]);
131+
REQUIRE(ms1[4] == a[2]);
132+
133+
REQUIRE(ms1.globalIndex(1, 0) == 0);
134+
REQUIRE(ms1.globalIndex(2, 1) == 3);
135+
136+
std::vector<int> collected;
137+
for (auto val : ms1) {
138+
collected.push_back(val);
139+
}
140+
REQUIRE(collected == std::vector<int>{b[0], b[1], a[0], a[1], a[2]});
141+
}
142+
143+
SECTION("Check MultiSpan with serveral empty spans") {
144+
REQUIRE(ms2.size() == 7);
145+
146+
REQUIRE(ms2[0] == b[0]);
147+
REQUIRE(ms2[1] == b[1]);
148+
REQUIRE(ms2[2] == b[0]);
149+
REQUIRE(ms2[3] == b[1]);
150+
REQUIRE(ms2[4] == a[0]);
151+
REQUIRE(ms2[5] == a[1]);
152+
REQUIRE(ms2[6] == a[2]);
153+
154+
REQUIRE(ms2.globalIndex(0, 0) == 0);
155+
REQUIRE(ms2.globalIndex(4, 1) == 3);
156+
REQUIRE(ms2.globalIndex(5, 1) == 5);
157+
158+
std::vector<int> collected;
159+
for (auto val : ms2) {
160+
collected.push_back(val);
161+
}
162+
REQUIRE(collected == std::vector<int>{b[0], b[1], b[0], b[1], a[0], a[1], a[2]});
163+
}
164+
165+
SECTION("Check MultiSpan with serveral empty spans") {
166+
REQUIRE(ms3.size() == 3);
167+
168+
REQUIRE(ms3[0] == a[0]);
169+
REQUIRE(ms3[1] == a[1]);
170+
REQUIRE(ms3[2] == a[2]);
171+
172+
std::vector<int> collected;
173+
for (auto val : ms3) {
174+
collected.push_back(val);
175+
}
176+
REQUIRE(collected == std::vector<int>{a[0], a[1], a[2]});
177+
}
103178
}

0 commit comments

Comments
 (0)