From 53ae3f24c9458d324572ac8c23f5b8c90c4ac24e Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sat, 4 Dec 2021 20:11:09 +0000 Subject: Refactor wrapped_ptr to include destory function as template param, and possibly constructor function --- test/Jamfile.jam | 4 ++++ test/test-collection.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) (limited to 'test') diff --git a/test/Jamfile.jam b/test/Jamfile.jam index 8a9843c..82ca894 100644 --- a/test/Jamfile.jam +++ b/test/Jamfile.jam @@ -13,6 +13,10 @@ project : requirements boost_unit_test_framework ..//ilt tidy:hicpp-vararg + tidy:accessMoved + tidy:bugprone-use-after-move + tidy:hicpp-invalid-access-moved + tidy:clang-analyzer-cplusplus.Move ; run test-collection.cpp ; diff --git a/test/test-collection.cpp b/test/test-collection.cpp index 1286733..6e54da3 100644 --- a/test/test-collection.cpp +++ b/test/test-collection.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include @@ -64,3 +65,40 @@ BOOST_AUTO_TEST_CASE(a_sub) } BOOST_AUTO_TEST_SUITE_END() + +BOOST_AUTO_TEST_CASE(wrapped_ptr_file_cons) +{ + using FilePtr = wrapped_ptr; + FilePtr fp {fopen, "/dev/null", "r"}; + BOOST_REQUIRE(fp); + BOOST_CHECK_NO_THROW(fflush(fp)); + + BOOST_CHECK_EQUAL(fp.get(), fp.operator->()); + BOOST_CHECK_EQUAL(fp.get(), fp.operator FILE *()); +} + +BOOST_AUTO_TEST_CASE(wrapped_ptr_file_move) +{ + using FilePtr = wrapped_ptr; + FilePtr fp {fopen, "/dev/null", "r"}; + BOOST_REQUIRE(fp); + + FilePtr fp2 {std::move(fp)}; + BOOST_REQUIRE(!fp); + BOOST_REQUIRE(fp2); + + fp = std::move(fp2); + BOOST_REQUIRE(fp); + BOOST_REQUIRE(!fp2); + + FilePtr fp3 {fopen, "/dev/null", "r"}; + fp = std::move(fp3); +} + +BOOST_AUTO_TEST_CASE(wrapped_ptr_file_typed) +{ + using FilePtr = wrapped_ptrt; + FilePtr fp {"/dev/null", "r"}; + BOOST_REQUIRE(fp); + BOOST_CHECK_NO_THROW(fflush(fp)); +} -- cgit v1.2.3