blob: f5804e91c032d7508d3e1dcab65e6f6e4f6f66c2 [file] [log] [blame]
/*
* Copyright 2024 The WebRTC project authors. All rights reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "video/corruption_detection/utils.h"
#include "api/video/encoded_image.h"
#include "api/video/video_codec_type.h"
#include "test/gmock.h"
#include "test/gtest.h"
namespace webrtc {
namespace {
#if GTEST_HAS_DEATH_TEST
using ::testing::_;
#endif // GTEST_HAS_DEATH_TEST
TEST(UtilsTest, FindCodecFromString) {
EXPECT_EQ(GetVideoCodecType(/*codec_name=*/"VP8"), kVideoCodecVP8);
EXPECT_EQ(GetVideoCodecType(/*codec_name=*/"libvpx-vp9"), kVideoCodecVP9);
EXPECT_EQ(GetVideoCodecType(/*codec_name=*/"ImprovedAV1"), kVideoCodecAV1);
EXPECT_EQ(GetVideoCodecType(/*codec_name=*/"lets_use_h264"), kVideoCodecH264);
}
#if GTEST_HAS_DEATH_TEST
TEST(UtilsTest, IfCodecDoesNotExistRaiseError) {
EXPECT_DEATH(GetVideoCodecType(/*codec_name=*/"Not_a_codec"), _);
}
#endif // GTEST_HAS_DEATH_TEST
TEST(UtilsTest, GetLayerIdReturnsZeroForEmptyIndices) {
EncodedImage encoded_image;
EXPECT_EQ(GetSpatialLayerId(encoded_image), 0);
}
TEST(UtilsTest, GetLayerIdReturnsSpatialIndexWhenSet) {
EncodedImage encoded_image;
encoded_image.SetSpatialIndex(2);
EXPECT_EQ(GetSpatialLayerId(encoded_image), 2);
}
TEST(UtilsTest, GetLayerIdReturnsSimulcastIndexWhenSet) {
EncodedImage encoded_image;
encoded_image.SetSimulcastIndex(1);
EXPECT_EQ(GetSpatialLayerId(encoded_image), 1);
}
TEST(UtilsTest, GetLayerIdReturnsMaxOfSpatialAndSimulcastIndex) {
EncodedImage encoded_image;
encoded_image.SetSpatialIndex(1);
encoded_image.SetSimulcastIndex(2);
EXPECT_EQ(GetSpatialLayerId(encoded_image), 2);
encoded_image.SetSpatialIndex(3);
encoded_image.SetSimulcastIndex(1);
EXPECT_EQ(GetSpatialLayerId(encoded_image), 3);
}
} // namespace
} // namespace webrtc