blob: 240386ed9b1a5611c6470dfac4427ca9ab401733 [file] [log] [blame]
// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/camera/bin/virtual_camera/stream_storage.h"
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include "src/camera/lib/stream_utils/stream_constraints.h"
namespace {
TEST(StreamStorageTest, GetConfig_Empty) {
camera::StreamStorage stream_storage_;
fuchsia::camera2::hal::Config config = stream_storage_.GetConfig();
EXPECT_THAT(config.stream_configs, ::testing::SizeIs(0));
}
TEST(StreamStorageTest, AddStreamConfigAndGetConfig) {
camera::StreamStorage stream_storage_;
camera::StreamConstraints constraints(fuchsia::camera2::CameraStreamType::MONITORING);
constraints.AddImageFormat(100, 100, fuchsia::sysmem::PixelFormatType::NV12);
stream_storage_.SetStreamConfigAtIndex(0, constraints.ConvertToStreamConfig());
stream_storage_.SetStreamConfigAtIndex(1, constraints.ConvertToStreamConfig());
fuchsia::camera2::hal::Config config = stream_storage_.GetConfig();
EXPECT_THAT(config.stream_configs, ::testing::SizeIs(2));
EXPECT_TRUE(fidl::Equals(config.stream_configs[0], constraints.ConvertToStreamConfig()));
EXPECT_TRUE(fidl::Equals(config.stream_configs[1], constraints.ConvertToStreamConfig()));
}
TEST(StreamStorageTest, AddStreamConfigAndGetConfig_WithGaps) {
camera::StreamStorage stream_storage_;
camera::StreamConstraints constraints(fuchsia::camera2::CameraStreamType::MONITORING);
constraints.AddImageFormat(100, 100, fuchsia::sysmem::PixelFormatType::NV12);
stream_storage_.SetStreamConfigAtIndex(0, constraints.ConvertToStreamConfig());
stream_storage_.SetStreamConfigAtIndex(3, constraints.ConvertToStreamConfig());
fuchsia::camera2::hal::Config config = stream_storage_.GetConfig();
EXPECT_THAT(config.stream_configs, ::testing::SizeIs(2));
EXPECT_TRUE(fidl::Equals(config.stream_configs[0], constraints.ConvertToStreamConfig()));
EXPECT_TRUE(fidl::Equals(config.stream_configs[1], constraints.ConvertToStreamConfig()));
}
} // namespace