summaryrefslogtreecommitdiff
path: root/test/libtest
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-10-27 19:20:39 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-11-20 21:47:20 +0200
commitfac471e812a988905aa2c6a0914f5fc9a72ee111 (patch)
tree972d09ff4043130d3b8d31f7cf53bdc26e5c51cc /test/libtest
parent6b3308ba1b15a5be6df8fc34315cc896b077d0d0 (diff)
test: Extract CameraTest class out of camera tests to libtest
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 <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'test/libtest')
-rw-r--r--test/libtest/camera_test.cpp52
-rw-r--r--test/libtest/camera_test.h26
-rw-r--r--test/libtest/meson.build1
3 files changed, 79 insertions, 0 deletions
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 <iostream>
+
+#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 <libcamera/libcamera.h>
+
+using namespace libcamera;
+
+class CameraTest
+{
+public:
+ CameraTest(const char *name);
+ ~CameraTest();
+
+protected:
+ CameraManager *cm_;
+ std::shared_ptr<Camera> 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',
])