summaryrefslogtreecommitdiff
path: root/test/file-descriptor.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-11-28 05:45:34 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-12-04 23:05:05 +0200
commit5c85e7024027c90b1b054782e510691b8b9c7419 (patch)
tree4fa3beff65de2a9a1236ad5c931b8e2495fd6eb2 /test/file-descriptor.cpp
parent3dc3e2e61e548e4cd3e213b1b3022ed4d8e7ecee (diff)
libcamera: base: Rename FileDescriptor to SharedFD
Now that we have a UniqueFD class, the name FileDescriptor is ambiguous. Rename it to SharedFD. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'test/file-descriptor.cpp')
-rw-r--r--test/file-descriptor.cpp243
1 files changed, 0 insertions, 243 deletions
diff --git a/test/file-descriptor.cpp b/test/file-descriptor.cpp
deleted file mode 100644
index 76badc4c..00000000
--- a/test/file-descriptor.cpp
+++ /dev/null
@@ -1,243 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * Copyright (C) 2019, Google Inc.
- *
- * file_descriptor.cpp - FileDescriptor test
- */
-
-#include <fcntl.h>
-#include <iostream>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include <libcamera/base/file_descriptor.h>
-#include <libcamera/base/utils.h>
-
-#include "test.h"
-
-using namespace libcamera;
-using namespace std;
-
-class FileDescriptorTest : public Test
-{
-protected:
- int init()
- {
- desc1_ = nullptr;
- desc2_ = nullptr;
-
- fd_ = open("/tmp", O_TMPFILE | O_RDWR, S_IRUSR | S_IWUSR);
- if (fd_ < 0)
- return TestFail;
-
- /* Cache inode number of temp file. */
- struct stat s;
- if (fstat(fd_, &s))
- return TestFail;
-
- inodeNr_ = s.st_ino;
-
- return 0;
- }
-
- int run()
- {
- /* Test creating empty FileDescriptor. */
- desc1_ = new FileDescriptor();
-
- if (desc1_->fd() != -1) {
- std::cout << "Failed fd numerical check (default constructor)"
- << std::endl;
- return TestFail;
- }
-
- delete desc1_;
- desc1_ = nullptr;
-
- /*
- * Test creating FileDescriptor by copying numerical file
- * descriptor.
- */
- desc1_ = new FileDescriptor(fd_);
- if (desc1_->fd() == fd_) {
- 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 (lvalue ref constructor)"
- << std::endl;
- return TestFail;
- }
-
- int fd = desc1_->fd();
-
- delete desc1_;
- desc1_ = nullptr;
-
- if (!isValidFd(fd_) || isValidFd(fd)) {
- 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;
- }
-
- /* Test creating FileDescriptor from other FileDescriptor. */
- desc1_ = new FileDescriptor(fd_);
- desc2_ = new FileDescriptor(*desc1_);
-
- if (desc1_->fd() == fd_ || desc2_->fd() == fd_ || desc1_->fd() != desc2_->fd()) {
- std::cout << "Failed fd numerical check (copy constructor)"
- << std::endl;
- return TestFail;
- }
-
- if (!isValidFd(desc1_->fd()) || !isValidFd(desc2_->fd())) {
- std::cout << "Failed fd validity after construction (copy constructor)"
- << std::endl;
- return TestFail;
- }
-
- delete desc1_;
- desc1_ = nullptr;
-
- if (!isValidFd(desc2_->fd())) {
- std::cout << "Failed fd validity after destruction (copy constructor)"
- << std::endl;
- return TestFail;
- }
-
- delete desc2_;
- desc2_ = nullptr;
-
- /* Test creating FileDescriptor by taking over other FileDescriptor. */
- desc1_ = new FileDescriptor(fd_);
- fd = desc1_->fd();
- desc2_ = new FileDescriptor(std::move(*desc1_));
-
- if (desc1_->fd() != -1 || desc2_->fd() != fd) {
- std::cout << "Failed fd numerical check (move constructor)"
- << std::endl;
- return TestFail;
- }
-
- if (!isValidFd(desc2_->fd())) {
- std::cout << "Failed fd validity after construction (move constructor)"
- << std::endl;
- return TestFail;
- }
-
- delete desc1_;
- desc1_ = nullptr;
- delete desc2_;
- desc2_ = nullptr;
-
- /* Test creating FileDescriptor by copy assignment. */
- desc1_ = new FileDescriptor();
- desc2_ = new FileDescriptor(fd_);
-
- fd = desc2_->fd();
- *desc1_ = *desc2_;
-
- if (desc1_->fd() != fd || desc2_->fd() != fd) {
- std::cout << "Failed fd numerical check (copy assignment)"
- << std::endl;
- return TestFail;
- }
-
- if (!isValidFd(desc1_->fd()) || !isValidFd(desc2_->fd())) {
- std::cout << "Failed fd validity after construction (copy assignment)"
- << std::endl;
- return TestFail;
- }
-
- delete desc1_;
- desc1_ = nullptr;
- delete desc2_;
- desc2_ = nullptr;
-
- /* Test creating FileDescriptor by move assignment. */
- desc1_ = new FileDescriptor();
- desc2_ = new FileDescriptor(fd_);
-
- fd = desc2_->fd();
- *desc1_ = std::move(*desc2_);
-
- if (desc1_->fd() != fd || desc2_->fd() != -1) {
- std::cout << "Failed fd numerical check (move assignment)"
- << std::endl;
- return TestFail;
- }
-
- if (!isValidFd(desc1_->fd())) {
- std::cout << "Failed fd validity after construction (move assignment)"
- << std::endl;
- return TestFail;
- }
-
- delete desc1_;
- desc1_ = nullptr;
- delete desc2_;
- desc2_ = nullptr;
-
- return TestPass;
- }
-
- void cleanup()
- {
- delete desc2_;
- delete desc1_;
-
- if (fd_ > 0)
- close(fd_);
- }
-
-private:
- bool isValidFd(int fd)
- {
- struct stat s;
- if (fstat(fd, &s))
- return false;
-
- /* Check that inode number matches cached temp file. */
- return s.st_ino == inodeNr_;
- }
-
- int fd_;
- ino_t inodeNr_;
- FileDescriptor *desc1_, *desc2_;
-};
-
-TEST_REGISTER(FileDescriptorTest)