diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2020-05-18 16:33:52 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2020-05-19 18:08:11 +0300 |
commit | c7463138c666d826de26969bf03819936a8cf664 (patch) | |
tree | c949c6b6762e7756fcb56755a6607ff1a30af945 /test | |
parent | 206fada99d8774fb7a9b4f1924f6caeccafdb9a1 (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>
Diffstat (limited to 'test')
-rw-r--r-- | test/file-descriptor.cpp | 42 |
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; } |