From fac471e812a988905aa2c6a0914f5fc9a72ee111 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Sun, 27 Oct 2019 19:20:39 +0200 Subject: test: Extract CameraTest class out of camera tests to libtest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Many tests other than the camera/ tests use a camera. To increase code sharing, move the base CameraTest class to the test library. The class becomes a helper that doesn't inherit from Test anymore (to avoid diamond inheritance issues when more such helpers will exist). Signed-off-by: Laurent Pinchart Reviewed-by: Niklas Söderlund --- test/libtest/camera_test.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++ test/libtest/camera_test.h | 26 ++++++++++++++++++++++ test/libtest/meson.build | 1 + 3 files changed, 79 insertions(+) create mode 100644 test/libtest/camera_test.cpp create mode 100644 test/libtest/camera_test.h (limited to 'test/libtest') diff --git a/test/libtest/camera_test.cpp b/test/libtest/camera_test.cpp new file mode 100644 index 00000000..2ae4d677 --- /dev/null +++ b/test/libtest/camera_test.cpp @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2019, Google Inc. + * + * libcamera Camera API tests + */ + +#include + +#include "camera_test.h" +#include "test.h" + +using namespace libcamera; +using namespace std; + +CameraTest::CameraTest(const char *name) +{ + cm_ = new CameraManager(); + + if (cm_->start()) { + cerr << "Failed to start camera manager" << endl; + status_ = TestFail; + return; + } + + camera_ = cm_->get(name); + if (!camera_) { + cerr << "Can not find '" << name << "' camera" << endl; + status_ = TestSkip; + return; + } + + /* Sanity check that the camera has streams. */ + if (camera_->streams().empty()) { + cerr << "Camera has no stream" << endl; + status_ = TestFail; + return; + } + + status_ = TestPass; +} + +CameraTest::~CameraTest() +{ + if (camera_) { + camera_->release(); + camera_.reset(); + } + + cm_->stop(); + delete cm_; +} diff --git a/test/libtest/camera_test.h b/test/libtest/camera_test.h new file mode 100644 index 00000000..0b6bad05 --- /dev/null +++ b/test/libtest/camera_test.h @@ -0,0 +1,26 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2019, Google Inc. + * + * camera_test.h - libcamera camera test base class + */ +#ifndef __LIBCAMERA_CAMERA_TEST_H__ +#define __LIBCAMERA_CAMERA_TEST_H__ + +#include + +using namespace libcamera; + +class CameraTest +{ +public: + CameraTest(const char *name); + ~CameraTest(); + +protected: + CameraManager *cm_; + std::shared_ptr camera_; + int status_; +}; + +#endif /* __LIBCAMERA_CAMERA_TEST_H__ */ diff --git a/test/libtest/meson.build b/test/libtest/meson.build index ca762b44..3e798ef3 100644 --- a/test/libtest/meson.build +++ b/test/libtest/meson.build @@ -1,4 +1,5 @@ libtest_sources = files([ + 'camera_test.cpp', 'test.cpp', ]) -- cgit v1.2.1