Skip to content

Commit 329a2f2

Browse files
committed
fix non google-test tests
1 parent 8c81f1c commit 329a2f2

File tree

2 files changed

+47
-8
lines changed

2 files changed

+47
-8
lines changed

tests/beman/inplace_vector/inplace_vector.test.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,22 @@ using namespace beman;
66

77
template <typename T> constexpr void test() {
88
using vec = inplace_vector<T, 42>;
9+
#if !BEMAN_INPLACE_VECTOR_FREESTANDING_DELETED()
910
vec range{T(1), T(1337), T(42), T(12), T(0), T(-1)};
1011
const vec const_range{T(0), T(42), T(1337), T(42), T(5), T(-42)};
12+
#else
13+
vec range;
14+
for (auto &ele : {T(1), T(1337), T(42), T(12), T(0), T(-1)}) {
15+
range.unchecked_push_back(ele);
16+
}
17+
18+
vec const_range_builder;
19+
for (auto &ele : {T(0), T(42), T(1337), T(42), T(5), T(-42)}) {
20+
const_range_builder.unchecked_push_back(ele);
21+
}
22+
23+
const vec const_range = const_range_builder;
24+
#endif
1125

1226
auto &&bracket = range[3];
1327
static_assert(std::is_same<decltype(bracket), typename vec::reference>::value,

tests/beman/inplace_vector/ref_impl.test.cpp

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ template <typename T, int N> struct vec {
180180
vec(std::initializer_list<T> /*il*/) {}
181181
};
182182

183+
#if !BEMAN_INPLACE_VECTOR_FREESTANDING_DELETED()
183184
template <typename T, std::size_t N> constexpr void test_il_constructor() {
184185
auto v = [] {
185186
switch (N) {
@@ -240,6 +241,7 @@ template <typename T, std::size_t N> constexpr void test_il_assignment() {
240241
std::bad_alloc);
241242
}
242243
}
244+
#endif
243245

244246
template <typename T, std::size_t N> constexpr void test_default_constructor() {
245247
vector<T, N> v;
@@ -252,13 +254,20 @@ template <typename T, std::size_t N>
252254
constexpr void
253255
test_default_constructor_bounds_and_contiguous_iterators(std::size_t sz) {
254256
CHECK(sz <= N);
257+
#if !BEMAN_INPLACE_VECTOR_FREESTANDING_DELETED()
255258
vector<T, N> v(sz);
256259
CHECK(v.size() == sz);
257260
CHECK(v.max_size() == N);
258261
CHECK(v.capacity() == N);
259262
for (std::size_t i = 0; i != sz; ++i) {
260263
CHECK(v[i] == T{});
261264
}
265+
#else
266+
vector<T, N> v;
267+
for (auto i = 0; i < sz; ++i) {
268+
v.unchecked_push_back(T{});
269+
}
270+
#endif
262271
for (std::size_t i = 0; i < v.size(); ++i) { // contiguous
263272
CHECK(*(v.begin() + i) == *(std::addressof(*v.begin()) + i));
264273
CHECK(*(v.cbegin() + i) == *(std::addressof(*v.cbegin()) + i));
@@ -342,8 +351,10 @@ constexpr void test_constructor_input_iterators() {}
342351
#endif
343352

344353
template <typename T, std::size_t N> constexpr bool test_all_() {
354+
#if !BEMAN_INPLACE_VECTOR_FREESTANDING_DELETED()
345355
test_il_constructor<T, N>();
346356
test_il_assignment<T, N>();
357+
#endif
347358
test_default_constructor<T, N>();
348359
for (size_t i = 0; i < N; ++i)
349360
test_default_constructor_bounds_and_contiguous_iterators<T, N>(i);
@@ -358,6 +369,19 @@ template <typename T, std::size_t N> void test_all() {
358369
test_all_<T, N>();
359370
}
360371

372+
template <typename T>
373+
T construct_vec(std::initializer_list<typename T::value_type> il) {
374+
#if BEMAN_INPLACE_VECTOR_FREESTANDING_DELETED()
375+
T vec;
376+
for (auto &v : il) {
377+
vec.unchecked_push_back(v);
378+
}
379+
return vec;
380+
#else
381+
return T(il);
382+
#endif
383+
}
384+
361385
int main() {
362386
{ // storage
363387
using beman::details::inplace_vector::storage::non_trivial;
@@ -825,7 +849,7 @@ int main() {
825849

826850
{ // erase
827851
{
828-
vector<int, 4> l1{1, 2, 3};
852+
auto l1 = construct_vec<vector<int, 4>>({1, 2, 3});
829853
CHECK(l1.size() == 3);
830854
vector<int, 4>::const_iterator i = l1.begin();
831855
++i;
@@ -850,37 +874,38 @@ int main() {
850874
{ // erase iter iter
851875
using vec_t = vector<int, 5>;
852876
{
853-
vec_t l1{1, 2, 3};
877+
auto l1 = construct_vec<vec_t>({1, 2, 3});
854878
vec_t::iterator i = l1.erase(l1.cbegin(), l1.cbegin());
855879
CHECK(l1.size() == 3);
856880
CHECK(std::distance(l1.cbegin(), l1.cend()) == 3);
857881
CHECK(i == l1.begin());
858882
}
859883
{
860-
vec_t l1{1, 2, 3};
884+
auto l1 = construct_vec<vec_t>({1, 2, 3});
861885
vec_t::iterator i = l1.erase(l1.cbegin(), std::next(l1.cbegin()));
862886
CHECK(l1.size() == 2);
863887
CHECK(std::distance(l1.cbegin(), l1.cend()) == 2);
864888
CHECK(i == l1.begin());
865-
CHECK(l1 == vec_t{2, 3});
889+
CHECK(l1 == construct_vec<vec_t>({2, 3}));
866890
}
867891
{
868-
vec_t l1{1, 2, 3};
892+
auto l1 = construct_vec<vec_t>({1, 2, 3});
869893
vec_t::iterator i = l1.erase(l1.cbegin(), std::next(l1.cbegin(), 2));
870894
CHECK(l1.size() == 1);
871895
CHECK(std::distance(l1.cbegin(), l1.cend()) == 1);
872896
CHECK(i == l1.begin());
873-
CHECK(l1 == vec_t{3});
897+
CHECK(l1 == construct_vec<vec_t>({3}));
874898
}
875899
{
876-
vec_t l1{1, 2, 3};
900+
auto l1 = construct_vec<vec_t>({1, 2, 3});
877901
vec_t::iterator i = l1.erase(l1.cbegin(), std::next(l1.cbegin(), 3));
878902
CHECK(l1.empty());
879903
CHECK(std::distance(l1.cbegin(), l1.cend()) == 0);
880904
CHECK(i == l1.begin());
881905
}
882906
{
883-
vector<vec_t, 3> outer{vec_t{1}, vec_t{1}};
907+
auto outer = construct_vec<vector<vec_t, 3>>(
908+
{construct_vec<vec_t>({1}), construct_vec<vec_t>({1})});
884909
outer.erase(outer.begin(), outer.begin());
885910
CHECK(outer.size() == 2);
886911
CHECK(outer[0].size() == 1);

0 commit comments

Comments
 (0)