Message ID | 20250428090413.38234-14-s.pueschel@pengutronix.de |
---|---|
State | Accepted |
Headers | show |
Series |
|
Related | show |
Quoting Sven Püschel (2025-04-28 11:02:38) > From: Nícolas F. R. A. Prado <nfraprado@collabora.com> > > 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> This patch is useful and can be merged as-is alone. I've pushed it. Paul > > --- > Changes in v11: > - rebased > > Changes in v9: > - rebased > > Changes in v8: > - Moved CameraHolder to new test_base.{cpp,h} files > > Changes in v5: > - New > --- > src/apps/lc-compliance/meson.build | 1 + > src/apps/lc-compliance/test_base.cpp | 28 +++++++++++++++++++ > src/apps/lc-compliance/test_base.h | 24 ++++++++++++++++ > src/apps/lc-compliance/tests/capture_test.cpp | 18 +++--------- > 4 files changed, 57 insertions(+), 14 deletions(-) > create mode 100644 src/apps/lc-compliance/test_base.cpp > create mode 100644 src/apps/lc-compliance/test_base.h > > 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 9fb82a2b..24081fef 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) > -- > 2.49.0 >
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 9fb82a2b..24081fef 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)