#include "media/formats/hls/tags.h"
#include <array>
#include <optional>
#include <string_view>
#include <utility>
#include "base/location.h"
#include "base/ranges/algorithm.h"
#include "base/strings/string_number_conversions.h"
#include "media/base/media_serializers.h"
#include "media/formats/hls/items.h"
#include "media/formats/hls/parse_status.h"
#include "media/formats/hls/source_string.h"
#include "media/formats/hls/test_util.h"
#include "media/formats/hls/variable_dictionary.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
namespace media::hls {
namespace {
types::DecimalInteger MaxSeconds() { … }
template <typename T>
void ErrorTest(std::optional<std::string_view> content,
ParseStatusCode expected_status,
const base::Location& from = base::Location::Current()) { … }
template <typename T>
void ErrorTest(std::optional<std::string_view> content,
const VariableDictionary& variable_dict,
VariableDictionary::SubstitutionBuffer& sub_buffer,
ParseStatusCode expected_status,
const base::Location& from = base::Location::Current()) { … }
template <typename T>
struct OkTestResult { … };
template <typename T>
OkTestResult<T> OkTest(std::optional<std::string> content,
const base::Location& from = base::Location::Current()) { … }
template <typename T>
OkTestResult<T> OkTest(std::optional<std::string> content,
const VariableDictionary& variable_dict,
VariableDictionary::SubstitutionBuffer& sub_buffer,
const base::Location& from = base::Location::Current()) { … }
void RunTagIdenficationTest(
TagName name,
std::string_view line,
std::optional<std::string_view> expected_content,
const base::Location& from = base::Location::Current()) { … }
template <typename T>
void RunTagIdenficationTest(
std::string_view line,
std::optional<std::string_view> expected_content,
const base::Location& from = base::Location::Current()) { … }
template <typename T>
void RunEmptyTagTest() { … }
template <typename T>
void RunDecimalIntegerTagTest(types::DecimalInteger T::*field) { … }
VariableDictionary CreateBasicDictionary(
const base::Location& from = base::Location::Current()) { … }
}
TEST(HlsTagsTest, TagNameIdentity) { … }
TEST(HlsTagsTest, ParseM3uTag) { … }
TEST(HlsTagsTest, ParseXDefineTag) { … }
TEST(HlsTagsTest, ParseXIndependentSegmentsTag) { … }
TEST(HlsTagsTest, ParseXStartTag) { … }
TEST(HlsTagsTest, ParseXVersionTag) { … }
TEST(HlsTagsTest, ParseXContentSteeringTag) { … }
TEST(HlsTagsTest, ParseXIFrameStreamInfTag) { … }
TEST(HlsTagsTest, ParseXMediaTag) { … }
TEST(HlsTagsTest, ParseXSessionDataTag) { … }
TEST(HlsTagsTest, ParseXSessionKeyTag) { … }
TEST(HlsTagsTest, ParseXStreamInfTag) { … }
TEST(HlsTagsTest, ParseInfTag) { … }
TEST(HlsTagsTest, ParseXBitrateTag) { … }
TEST(HlsTagsTest, ParseXByteRangeTag) { … }
TEST(HlsTagsTest, ParseXDateRangeTag) { … }
TEST(HlsTagsTest, ParseXDiscontinuityTag) { … }
TEST(HlsTagsTest, ParseXDiscontinuitySequenceTag) { … }
TEST(HlsTagsTest, ParseXEndListTag) { … }
TEST(HlsTagsTest, ParseXGapTag) { … }
TEST(HlsTagsTest, ParseXIFramesOnlyTag) { … }
TEST(HlsTagsTest, ParseXKeyTag) { … }
TEST(HlsTagsTest, ParseXMapTag) { … }
TEST(HlsTagsTest, ParseXMediaSequenceTag) { … }
TEST(HlsTagsTest, ParseXPartTag) { … }
TEST(HlsTagsTest, ParseXPartInfTag) { … }
TEST(HlsTagsTest, ParseXPlaylistTypeTag) { … }
TEST(HlsTagsTest, ParseXPreloadHintTag) { … }
TEST(HlsTagsTest, ParseXProgramDateTimeTag) { … }
TEST(HlsTagsTest, ParseXRenditionReportTag) { … }
TEST(HlsTagsTest, ParseXServerControlTag) { … }
TEST(HlsTagsTest, ParseXSkipTag) { … }
TEST(HlsTagsTest, ParseXTargetDurationTag) { … }
}