summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNícolas F. R. A. Prado <nfraprado@collabora.com>2025-04-28 11:02:38 +0200
committerPaul Elder <paul.elder@ideasonboard.com>2025-05-13 20:17:19 +0200
commitf3a12332f6d987b34893b2a41294dba6db5feb39 (patch)
tree4d65e78290230f622e6ed9870e31245dcbd93922
parentd01342f1dc0e73c04526dfcb047d48227dde8e17 (diff)
lc-compliance: Move camera setup to CameraHolder classHEADmaster
Different base classes can be used for different setups on tests, but all of them will need to setup the camera for the test. To reuse that code, move it to a separate CameraHolder class that is inherited by test classes. Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Signed-off-by: Sven Püschel <s.pueschel@pengutronix.de>
-rw-r--r--src/apps/lc-compliance/meson.build1
-rw-r--r--src/apps/lc-compliance/test_base.cpp28
-rw-r--r--src/apps/lc-compliance/test_base.h24
-rw-r--r--src/apps/lc-compliance/tests/capture_test.cpp18
4 files changed, 57 insertions, 14 deletions
diff --git a/src/apps/lc-compliance/meson.build b/src/apps/lc-compliance/meson.build
index b1f605f3..80b9a160 100644
--- a/src/apps/lc-compliance/meson.build
+++ b/src/apps/lc-compliance/meson.build
@@ -15,6 +15,7 @@ lc_compliance_sources = files([
'environment.cpp',
'helpers/capture.cpp',
'main.cpp',
+ 'test_base.cpp',
'tests/capture_test.cpp',
])
diff --git a/src/apps/lc-compliance/test_base.cpp b/src/apps/lc-compliance/test_base.cpp
new file mode 100644
index 00000000..c9957b9e
--- /dev/null
+++ b/src/apps/lc-compliance/test_base.cpp
@@ -0,0 +1,28 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2021, Collabora Ltd.
+ *
+ * test_base.cpp - Base definitions for tests
+ */
+
+#include "test_base.h"
+
+#include "environment.h"
+
+void CameraHolder::acquireCamera()
+{
+ Environment *env = Environment::get();
+
+ camera_ = env->cm()->get(env->cameraId());
+
+ ASSERT_EQ(camera_->acquire(), 0);
+}
+
+void CameraHolder::releaseCamera()
+{
+ if (!camera_)
+ return;
+
+ camera_->release();
+ camera_.reset();
+}
diff --git a/src/apps/lc-compliance/test_base.h b/src/apps/lc-compliance/test_base.h
new file mode 100644
index 00000000..52347749
--- /dev/null
+++ b/src/apps/lc-compliance/test_base.h
@@ -0,0 +1,24 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2021, Collabora Ltd.
+ *
+ * test_base.h - Base definitions for tests
+ */
+
+#ifndef __LC_COMPLIANCE_TEST_BASE_H__
+#define __LC_COMPLIANCE_TEST_BASE_H__
+
+#include <libcamera/libcamera.h>
+
+#include <gtest/gtest.h>
+
+class CameraHolder
+{
+protected:
+ void acquireCamera();
+ void releaseCamera();
+
+ std::shared_ptr<libcamera::Camera> camera_;
+};
+
+#endif /* __LC_COMPLIANCE_TEST_BASE_H__ */
diff --git a/src/apps/lc-compliance/tests/capture_test.cpp b/src/apps/lc-compliance/tests/capture_test.cpp
index d02caa8a..29d8b7f8 100644
--- a/src/apps/lc-compliance/tests/capture_test.cpp
+++ b/src/apps/lc-compliance/tests/capture_test.cpp
@@ -15,13 +15,13 @@
#include <gtest/gtest.h>
-#include "environment.h"
+#include "test_base.h"
namespace {
using namespace libcamera;
-class SimpleCapture : public testing::TestWithParam<std::tuple<std::vector<StreamRole>, int>>
+class SimpleCapture : public testing::TestWithParam<std::tuple<std::vector<StreamRole>, int>>, public CameraHolder
{
public:
static std::string nameParameters(const testing::TestParamInfo<SimpleCapture::ParamType> &info);
@@ -29,8 +29,6 @@ public:
protected:
void SetUp() override;
void TearDown() override;
-
- std::shared_ptr<Camera> camera_;
};
/*
@@ -39,20 +37,12 @@ protected:
*/
void SimpleCapture::SetUp()
{
- Environment *env = Environment::get();
-
- camera_ = env->cm()->get(env->cameraId());
-
- ASSERT_EQ(camera_->acquire(), 0);
+ acquireCamera();
}
void SimpleCapture::TearDown()
{
- if (!camera_)
- return;
-
- camera_->release();
- camera_.reset();
+ releaseCamera();
}
std::string SimpleCapture::nameParameters(const testing::TestParamInfo<SimpleCapture::ParamType> &info)