Skip to content

Commit f238186

Browse files
committed
Fix Tests
1 parent c1bdbac commit f238186

File tree

1 file changed

+68
-16
lines changed

1 file changed

+68
-16
lines changed

tests/beman/inplace_vector/spec.test.cpp

Lines changed: 68 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1175,7 +1175,7 @@ TYPED_TEST(Modifiers, Insert) {
11751175
GTEST_SKIP();
11761176
}
11771177

1178-
TYPED_TEST(Modifiers, PushBack) {
1178+
TYPED_TEST(Modifiers, PushBackConstRef) {
11791179
// constexpr reference push_back(const T& x);
11801180
// constexpr reference push_back(T&& x);
11811181
//
@@ -1186,19 +1186,52 @@ TYPED_TEST(Modifiers, PushBack) {
11861186
// Remarks: If an exception is thrown, there are no effects on *this.
11871187

11881188
using IV = TestFixture::IV;
1189+
using T = TestFixture::T;
11891190

11901191
const auto reference = this->unique();
11911192

11921193
IV device;
11931194
for (int i = 0; i < reference.size(); ++i) {
1194-
EXPECT_EQ(device.push_back(reference[i]), device.back());
1195+
auto val = reference[i];
1196+
auto res = device.push_back(val);
1197+
EXPECT_EQ(res, device.back());
11951198
EXPECT_EQ(device, IV(reference.begin(), reference.begin() + i + 1));
11961199
}
1200+
1201+
T val{0};
1202+
EXPECT_THROW(device.push_back(val), beman::bad_alloc);
1203+
}
1204+
1205+
TYPED_TEST(Modifiers, PushBackRV) {
1206+
// constexpr reference push_back(const T& x);
1207+
// constexpr reference push_back(T&& x);
1208+
//
1209+
// Returns: back().
1210+
// Throws: bad_alloc or any exception thrown by the initialization of the
1211+
// inserted element.
1212+
// Complexity: Constant.
1213+
// Remarks: If an exception is thrown, there are no effects on *this.
1214+
1215+
using IV = TestFixture::IV;
1216+
using T = TestFixture::T;
1217+
1218+
const auto reference = this->unique();
1219+
1220+
IV device;
1221+
for (int i = 0; i < reference.size(); ++i) {
1222+
T val{reference[i]};
1223+
auto res = device.push_back(std::move(val));
1224+
EXPECT_EQ(res, device.back());
1225+
EXPECT_EQ(device, IV(reference.begin(), reference.begin() + i + 1));
1226+
}
1227+
1228+
T val{0};
1229+
EXPECT_THROW(device.push_back(val), beman::bad_alloc);
11971230
}
11981231

11991232
// TODO: Check if there's extra copies
12001233

1201-
TYPED_TEST(Modifiers, EmplaceBack) {
1234+
TYPED_TEST(Modifiers, EmplaceBackRV) {
12021235
// template<class... Args>
12031236
// constexpr reference emplace_back(Args&&... args);
12041237
//
@@ -1214,9 +1247,12 @@ TYPED_TEST(Modifiers, EmplaceBack) {
12141247

12151248
IV device;
12161249
for (int i = 0; i < reference.size(); ++i) {
1217-
EXPECT_EQ(device.emplace_back(reference[i].value), device.back());
1250+
auto res = device.emplace_back(reference[i].value);
1251+
EXPECT_EQ(res, device.back());
12181252
EXPECT_EQ(device, IV(reference.begin(), reference.begin() + i + 1));
12191253
}
1254+
1255+
EXPECT_THROW(device.emplace_back(0), beman::bad_alloc);
12201256
}
12211257

12221258
TYPED_TEST(Modifiers, TryEmplaceBack) {
@@ -1247,15 +1283,18 @@ TYPED_TEST(Modifiers, TryEmplaceBack) {
12471283
IV device;
12481284
if (!reference.empty()) {
12491285
for (int i = 0; i < reference.size(); ++i) {
1250-
EXPECT_EQ(device.try_emplace_back(reference[i].value),
1286+
auto res = device.try_emplace_back(reference[i].value);
1287+
EXPECT_EQ(res,
12511288
std::addressof(device.back()));
12521289
EXPECT_EQ(device, IV(reference.begin(), reference.begin() + i + 1));
12531290
}
12541291

1255-
EXPECT_EQ(device.try_emplace_back(reference[0].value), nullptr);
1292+
auto res = device.try_emplace_back(reference[0].value);
1293+
EXPECT_EQ(res, nullptr);
12561294
EXPECT_EQ(device, reference);
12571295
} else {
1258-
EXPECT_EQ(device.try_emplace_back(0), nullptr);
1296+
auto res = device.try_emplace_back(0);
1297+
EXPECT_EQ(res, nullptr);
12591298
EXPECT_EQ(device, IV());
12601299
}
12611300
}
@@ -1290,16 +1329,20 @@ TYPED_TEST(Modifiers, TryPushBackConstRef) {
12901329

12911330
if (!reference.empty()) {
12921331
for (int i = 0; i < reference.size(); ++i) {
1293-
EXPECT_EQ(device.try_push_back(reference[i]),
1332+
auto res = device.try_push_back(reference[i]);
1333+
EXPECT_EQ(res,
12941334
std::addressof(device.back()));
12951335
EXPECT_EQ(device, IV(reference.begin(), reference.begin() + i + 1));
12961336
}
12971337

1298-
EXPECT_EQ(device.try_push_back(reference[0]), nullptr);
1338+
auto res = device.try_push_back(reference[0]);
1339+
EXPECT_EQ(res, nullptr);
12991340
EXPECT_EQ(device, reference);
13001341
} else {
13011342
T val{0};
1302-
EXPECT_EQ(device.try_push_back(val), nullptr);
1343+
1344+
auto res = device.try_push_back(val);
1345+
EXPECT_EQ(res, nullptr);
13031346
EXPECT_EQ(device, IV());
13041347
}
13051348
}
@@ -1336,16 +1379,21 @@ TYPED_TEST(Modifiers, TryPushBackRV) {
13361379
if (!reference.empty()) {
13371380
for (int i = 0; i < reference.size(); ++i) {
13381381
T val{reference[i].value};
1339-
EXPECT_EQ(device.try_push_back(std::move(val)),
1382+
1383+
auto res = device.try_push_back(std::move(val));
1384+
EXPECT_EQ(res,
13401385
std::addressof(device.back()));
13411386
EXPECT_EQ(device, IV(reference.begin(), reference.begin() + i + 1));
13421387
}
13431388

1344-
EXPECT_EQ(device.try_push_back(reference[0]), nullptr);
1389+
auto res = device.try_push_back(reference[0]);
1390+
EXPECT_EQ(res, nullptr);
13451391
EXPECT_EQ(device, reference);
13461392
} else {
13471393
T val{0};
1348-
EXPECT_EQ(device.try_push_back(std::move(val)), nullptr);
1394+
1395+
auto res = device.try_push_back(std::move(val));
1396+
EXPECT_EQ(res, nullptr);
13491397
EXPECT_EQ(device, IV());
13501398
}
13511399
}
@@ -1388,7 +1436,8 @@ TYPED_TEST(Modifiers, UncheckedEmplacedBack) {
13881436

13891437
IV device;
13901438
for (int i = 0; i < reference.size(); ++i) {
1391-
EXPECT_EQ(device.unchecked_emplace_back(reference[i].value), device.back());
1439+
auto res = device.unchecked_emplace_back(reference[i].value);
1440+
EXPECT_EQ(res, device.back());
13921441
EXPECT_EQ(device, IV(reference.begin(), reference.begin() + i + 1));
13931442
}
13941443
}
@@ -1406,7 +1455,8 @@ TYPED_TEST(Modifiers, UncheckedPushBackConstRef) {
14061455

14071456
IV device;
14081457
for (int i = 0; i < reference.size(); ++i) {
1409-
EXPECT_EQ(device.unchecked_push_back(reference[i]), device.back());
1458+
auto res = device.unchecked_push_back(reference[i]);
1459+
EXPECT_EQ(res, device.back());
14101460
EXPECT_EQ(device, IV(reference.begin(), reference.begin() + i + 1));
14111461
}
14121462
}
@@ -1426,7 +1476,9 @@ TYPED_TEST(Modifiers, UncheckedPushBackRV) {
14261476
IV device;
14271477
for (int i = 0; i < reference.size(); ++i) {
14281478
T val{reference[i].value};
1429-
EXPECT_EQ(device.unchecked_push_back(std::move(val)), device.back());
1479+
1480+
auto res = device.unchecked_push_back(std::move(val));
1481+
EXPECT_EQ(res, device.back());
14301482
EXPECT_EQ(device, IV(reference.begin(), reference.begin() + i + 1));
14311483
}
14321484
}

0 commit comments

Comments
 (0)