Skip to content

Commit 519029b

Browse files
committed
Fixed missing coverage for explicit conversion constructor with deleter
1 parent 9c5ff08 commit 519029b

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

tests/runtime_tests.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,34 @@ TEST_CASE("owner explicit conversion constructor with nullptr sealed", "[owner_c
536536
REQUIRE(mem_track.double_del() == 0u);
537537
}
538538

539+
TEST_CASE("owner explicit conversion constructor with nullptr with custom deleter", "[owner_construction]") {
540+
memory_tracker mem_track;
541+
542+
{
543+
test_ptr_with_deleter ptr_orig{new test_object_derived, test_deleter{42}};
544+
{
545+
test_ptr_derived_with_deleter ptr(std::move(ptr_orig),
546+
static_cast<test_object_derived*>(nullptr),
547+
test_deleter{43});
548+
REQUIRE(instances == 0);
549+
REQUIRE(instances_derived == 0);
550+
REQUIRE(instances_deleter == 2);
551+
REQUIRE(ptr.get() == nullptr);
552+
REQUIRE(ptr.get_deleter().state_ == 43);
553+
}
554+
555+
REQUIRE(instances == 0);
556+
REQUIRE(instances_derived == 0);
557+
REQUIRE(instances_deleter == 1);
558+
}
559+
560+
REQUIRE(instances == 0);
561+
REQUIRE(instances_derived == 0);
562+
REQUIRE(instances_deleter == 0);
563+
REQUIRE(mem_track.leaks() == 0u);
564+
REQUIRE(mem_track.double_del() == 0u);
565+
}
566+
539567
TEST_CASE("owner move assignment operator valid to empty", "[owner_assignment]") {
540568
memory_tracker mem_track;
541569

0 commit comments

Comments
 (0)