Skip to content

Commit e719356

Browse files
committed
Added tests for self swap
1 parent 5648008 commit e719356

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

tests/runtime_tests.cpp

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1387,6 +1387,52 @@ TEST_CASE("owner swap two instances with deleter", "[owner_utility]") {
13871387
REQUIRE(mem_track.double_del() == 0u);
13881388
}
13891389

1390+
TEST_CASE("owner swap self", "[owner_utility]") {
1391+
memory_tracker mem_track;
1392+
1393+
{
1394+
test_ptr ptr(new test_object);
1395+
ptr.swap(ptr);
1396+
REQUIRE(instances == 1);
1397+
REQUIRE(ptr.get() != nullptr);
1398+
}
1399+
1400+
REQUIRE(instances == 0);
1401+
REQUIRE(mem_track.leaks() == 0u);
1402+
REQUIRE(mem_track.double_del() == 0u);
1403+
}
1404+
1405+
TEST_CASE("owner swap self sealed", "[owner_utility]") {
1406+
memory_tracker mem_track;
1407+
1408+
{
1409+
test_sptr ptr = oup::make_observable_sealed<test_object>();
1410+
ptr.swap(ptr);
1411+
REQUIRE(instances == 1);
1412+
REQUIRE(ptr.get() != nullptr);
1413+
}
1414+
1415+
REQUIRE(instances == 0);
1416+
REQUIRE(mem_track.leaks() == 0u);
1417+
REQUIRE(mem_track.double_del() == 0u);
1418+
}
1419+
1420+
TEST_CASE("owner swap self with deleter", "[owner_utility]") {
1421+
memory_tracker mem_track;
1422+
1423+
{
1424+
test_ptr_with_deleter ptr(new test_object, test_deleter{43});
1425+
ptr.swap(ptr);
1426+
REQUIRE(instances == 1);
1427+
REQUIRE(ptr.get() != nullptr);
1428+
}
1429+
1430+
REQUIRE(instances == 0);
1431+
REQUIRE(instances_deleter == 0);
1432+
REQUIRE(mem_track.leaks() == 0u);
1433+
REQUIRE(mem_track.double_del() == 0u);
1434+
}
1435+
13901436
TEST_CASE("owner dereference", "[owner_utility]") {
13911437
memory_tracker mem_track;
13921438

@@ -2082,6 +2128,23 @@ TEST_CASE("observer swap two different instances", "[observer_utility]") {
20822128
REQUIRE(mem_track.double_del() == 0u);
20832129
}
20842130

2131+
TEST_CASE("observer swap self", "[observer_utility]") {
2132+
memory_tracker mem_track;
2133+
2134+
{
2135+
test_ptr ptr_owner(new test_object);
2136+
test_optr ptr(ptr_owner);
2137+
ptr.swap(ptr);
2138+
REQUIRE(instances == 1);
2139+
REQUIRE(ptr.get() == ptr_owner.get());
2140+
REQUIRE(ptr.expired() == false);
2141+
}
2142+
2143+
REQUIRE(instances == 0);
2144+
REQUIRE(mem_track.leaks() == 0u);
2145+
REQUIRE(mem_track.double_del() == 0u);
2146+
}
2147+
20852148
TEST_CASE("observer dereference", "[observer_utility]") {
20862149
memory_tracker mem_track;
20872150

0 commit comments

Comments
 (0)