summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-05-18 16:33:52 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-05-19 18:08:11 +0300
commitc7463138c666d826de26969bf03819936a8cf664 (patch)
treec949c6b6762e7756fcb56755a6607ff1a30af945
parent206fada99d8774fb7a9b4f1924f6caeccafdb9a1 (diff)
test: file-descriptor: Add "fd move" constructor test
Add a test for the newly added "fd move" constructor. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
-rw-r--r--test/file-descriptor.cpp42
1 files changed, 38 insertions, 4 deletions
diff --git a/test/file-descriptor.cpp b/test/file-descriptor.cpp
index 7477a843..aa3c896f 100644
--- a/test/file-descriptor.cpp
+++ b/test/file-descriptor.cpp
@@ -56,16 +56,19 @@ protected:
delete desc1_;
desc1_ = nullptr;
- /* Test creating FileDescriptor from numerical file descriptor. */
+ /*
+ * Test creating FileDescriptor by copying numerical file
+ * descriptor.
+ */
desc1_ = new FileDescriptor(fd_);
if (desc1_->fd() == fd_) {
- std::cout << "Failed fd numerical check (int constructor)"
+ std::cout << "Failed fd numerical check (lvalue ref constructor)"
<< std::endl;
return TestFail;
}
if (!isValidFd(fd_) || !isValidFd(desc1_->fd())) {
- std::cout << "Failed fd validity after construction (int constructor)"
+ std::cout << "Failed fd validity after construction (lvalue ref constructor)"
<< std::endl;
return TestFail;
}
@@ -76,7 +79,38 @@ protected:
desc1_ = nullptr;
if (!isValidFd(fd_) || isValidFd(fd)) {
- std::cout << "Failed fd validity after destruction (int constructor)"
+ std::cout << "Failed fd validity after destruction (lvalue ref constructor)"
+ << std::endl;
+ return TestFail;
+ }
+
+ /*
+ * Test creating FileDescriptor by taking ownership of
+ * numerical file descriptor.
+ */
+ int dupFd = dup(fd_);
+ int dupFdCopy = dupFd;
+
+ desc1_ = new FileDescriptor(std::move(dupFd));
+ if (desc1_->fd() != dupFdCopy) {
+ std::cout << "Failed fd numerical check (rvalue ref constructor)"
+ << std::endl;
+ return TestFail;
+ }
+
+ if (dupFd != -1 || !isValidFd(fd_) || !isValidFd(desc1_->fd())) {
+ std::cout << "Failed fd validity after construction (rvalue ref constructor)"
+ << std::endl;
+ return TestFail;
+ }
+
+ fd = desc1_->fd();
+
+ delete desc1_;
+ desc1_ = nullptr;
+
+ if (!isValidFd(fd_) || isValidFd(fd)) {
+ std::cout << "Failed fd validity after destruction (rvalue ref constructor)"
<< std::endl;
return TestFail;
}