Skip to content

Commit f3c6002

Browse files
committed
test: comparisons for inplace_vectors differing only in capacity
rename test move cross_capacity tests to compare.test.cpp
1 parent 0ca50a6 commit f3c6002

1 file changed

Lines changed: 31 additions & 10 deletions

File tree

tests/beman/inplace_vector/compare.test.cpp

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,23 @@ template <class T>
1616
concept lessthan_comparable =
1717
beman::inplace_vector::details::lessthan_comparable<T>;
1818

19-
template <typename T> struct vec_list {
20-
T empty;
19+
template <typename T, typename U = T> struct vec_list {
20+
U empty;
2121
T base; // base
22-
T copy; // identical to base
23-
T greater; // greater number of elements
24-
T lesser; // lesser number of elements
25-
T bigger; // bigger value of the elements
26-
T smaller; // smaller value of the elements
27-
T greater_smaller; // greater number of elements but smaller values
28-
T lesser_bigger; // lesser number of elements but bigger values
22+
U copy; // identical to base
23+
U greater; // greater number of elements
24+
U lesser; // lesser number of elements
25+
U bigger; // bigger value of the elements
26+
U smaller; // smaller value of the elements
27+
U greater_smaller; // greater number of elements but smaller values
28+
U lesser_bigger; // lesser number of elements but bigger values
2929
};
3030

31-
template <typename T> static void runtests(vec_list<T> &list) {
31+
template <typename T, typename U = T>
32+
static void runtests(vec_list<T, U> &list) {
3233

3334
static_assert(std::three_way_comparable<T> || lessthan_comparable<T>);
35+
static_assert(std::three_way_comparable<U> || lessthan_comparable<U>);
3436

3537
// if T::value_type is threewaycomparable with ordering X then T must also
3638
// be comparable with ordering X
@@ -325,3 +327,22 @@ TEST(Compare, threeway_uncomparable) {
325327
static_assert(!std::three_way_comparable<inplace_vector<uncomparable3, 4>>);
326328
static_assert(!has_threeway<inplace_vector<uncomparable3, 4>>);
327329
}
330+
331+
// In accordance with P3698R0, we compare vectors with identical elements but
332+
// different capacities
333+
334+
TEST(Compare, threeway_cross_capacity_smaller) {
335+
vec_list<inplace_vector<int, 4>, inplace_vector<int, 5>> list{
336+
.empty{},
337+
.base{1, 2, 3},
338+
.copy{1, 2, 3},
339+
.greater{4, 5, 6},
340+
.lesser{0, 0, 0},
341+
.bigger{1, 2, 3, 0},
342+
.smaller{1, 2},
343+
.greater_smaller{2, 2},
344+
.lesser_bigger{0, 2, 3, 4},
345+
};
346+
347+
runtests(list);
348+
}

0 commit comments

Comments
 (0)