blob: 3f0813cbd24b900b2ef2fa1b2a6a82dd31609f18 [file] [log] [blame]
// Copyright 2016 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CAMERA_CAMERA3_TEST_CAMERA3_DEVICE_FIXTURE_H_
#define CAMERA_CAMERA3_TEST_CAMERA3_DEVICE_FIXTURE_H_
#include <memory>
#include <vector>
#include <gtest/gtest.h>
#include <hardware/camera3.h>
#include <hardware/hardware.h>
#include "camera3_test/camera3_device.h"
#include "camera3_test/camera3_module_fixture.h"
#include "camera3_test/camera3_test_gralloc.h"
#include "camera3_test/common_types.h"
#include "common/camera_buffer_handle.h"
namespace camera3_test {
template <typename T>
int UpdateMetadata(uint32_t tag,
const T* data,
size_t data_count,
ScopedCameraMetadata* metadata_unique_ptr) {
android::CameraMetadata metadata(metadata_unique_ptr->release());
int result = metadata.update(tag, data, data_count);
metadata_unique_ptr->reset(metadata.release());
return result;
}
class Camera3DeviceFixture : public testing::Test {
public:
explicit Camera3DeviceFixture(int cam_id) : cam_device_(cam_id) {}
void SetUp() override;
void TearDown() override;
protected:
Camera3Module cam_module_;
Camera3Device cam_device_;
private:
// Process result metadata and/or output buffers. Tests can override this
// function to handle metadata/buffers to suit their purpose. Note that
// the metadata |metadata| and output buffers kept in |buffers| will be
// freed after returning from this call; a test can "std::move" the unique
// pointers to keep the metadata and buffer.
virtual void ProcessResultMetadataOutputBuffers(
uint32_t frame_number,
ScopedCameraMetadata metadata,
std::vector<ScopedBufferHandle> buffers) {}
// Process partial metadata. Tests can override this function to handle all
// received partial metadata.
virtual void ProcessPartialMetadata(
std::vector<ScopedCameraMetadata>* partial_metadata) {}
DISALLOW_IMPLICIT_CONSTRUCTORS(Camera3DeviceFixture);
};
} // namespace camera3_test
#endif // CAMERA_CAMERA3_TEST_CAMERA3_DEVICE_FIXTURE_H_