summaryrefslogtreecommitdiff
path: root/test/test-collection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/test-collection.cpp')
-rw-r--r--test/test-collection.cpp38
1 files changed, 38 insertions, 0 deletions
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 <collection.hpp>
#include <memory>
+#include <ptr.hpp>
#include <special_members.hpp>
#include <vector>
@@ -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<FILE, &fclose>;
+ 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<FILE, &fclose>;
+ 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<FILE, &fopen, &fclose>;
+ FilePtr fp {"/dev/null", "r"};
+ BOOST_REQUIRE(fp);
+ BOOST_CHECK_NO_THROW(fflush(fp));
+}