diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-10-27 19:20:39 +0200 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-11-20 21:47:20 +0200 |
commit | fac471e812a988905aa2c6a0914f5fc9a72ee111 (patch) | |
tree | 972d09ff4043130d3b8d31f7cf53bdc26e5c51cc /test/libtest/camera_test.cpp | |
parent | 6b3308ba1b15a5be6df8fc34315cc896b077d0d0 (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/camera_test.cpp')
-rw-r--r-- | test/libtest/camera_test.cpp | 52 |
1 files changed, 52 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_; +} |