shaka-packager/media/base/muxer_util_unittest.cc

105 lines
3.8 KiB
C++

// Copyright 2014 Google Inc. All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file or at
// https://developers.google.com/open-source/licenses/bsd
#include "media/base/muxer_util.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace media {
TEST(MuxerUtilTest, ValidateSegmentTemplate) {
EXPECT_FALSE(ValidateSegmentTemplate(""));
EXPECT_TRUE(ValidateSegmentTemplate("$Number$"));
EXPECT_TRUE(ValidateSegmentTemplate("$Time$"));
EXPECT_TRUE(ValidateSegmentTemplate("$Time$$Time$"));
EXPECT_TRUE(ValidateSegmentTemplate("foo$Time$goo"));
EXPECT_TRUE(ValidateSegmentTemplate("$Number$_$Number$"));
// Escape sequence "$$".
EXPECT_TRUE(ValidateSegmentTemplate("foo$Time$__$$loo"));
EXPECT_TRUE(ValidateSegmentTemplate("foo$Time$$$"));
EXPECT_TRUE(ValidateSegmentTemplate("$$$Time$$$"));
// Missing $Number$ / $Time$.
EXPECT_FALSE(ValidateSegmentTemplate("$$"));
EXPECT_FALSE(ValidateSegmentTemplate("foo$$goo"));
// $Number$, $Time$ should not co-exist.
EXPECT_FALSE(ValidateSegmentTemplate("$Number$$Time$"));
EXPECT_FALSE(ValidateSegmentTemplate("foo$Number$_$Time$loo"));
// $RepresentationID$ and $Bandwidth$ not implemented yet.
EXPECT_FALSE(ValidateSegmentTemplate("$RepresentationID$__$Time$"));
EXPECT_FALSE(ValidateSegmentTemplate("foo$Bandwidth$$Time$"));
// Unknown identifier.
EXPECT_FALSE(ValidateSegmentTemplate("$foo$$Time$"));
}
TEST(MuxerUtilTest, ValidateSegmentTemplateWithFormatTag) {
EXPECT_TRUE(ValidateSegmentTemplate("$Time%01d$"));
EXPECT_TRUE(ValidateSegmentTemplate("$Time%05d$"));
EXPECT_FALSE(ValidateSegmentTemplate("$Time%1d$"));
EXPECT_FALSE(ValidateSegmentTemplate("$Time%$"));
EXPECT_FALSE(ValidateSegmentTemplate("$Time%01$"));
EXPECT_FALSE(ValidateSegmentTemplate("$Time%0xd$"));
EXPECT_FALSE(ValidateSegmentTemplate("$Time%03xd$"));
// $$ should not have any format tag.
EXPECT_FALSE(ValidateSegmentTemplate("$%01d$$Time$"));
// Format specifier edge cases.
EXPECT_TRUE(ValidateSegmentTemplate("$Time%00d$"));
EXPECT_TRUE(ValidateSegmentTemplate("$Time%005d$"));
}
TEST(MuxerUtilTest, GetSegmentName) {
const uint64 kSegmentStartTime = 180180;
const uint32 kSegmentIndex = 11;
EXPECT_EQ("12", GetSegmentName("$Number$", kSegmentStartTime, kSegmentIndex));
EXPECT_EQ("012",
GetSegmentName("$Number%03d$", kSegmentStartTime, kSegmentIndex));
EXPECT_EQ(
"12$foo$00012",
GetSegmentName(
"$Number%01d$$$foo$$$Number%05d$", kSegmentStartTime, kSegmentIndex));
EXPECT_EQ("180180",
GetSegmentName("$Time$", kSegmentStartTime, kSegmentIndex));
EXPECT_EQ("foo$_$18018000180180.m4s",
GetSegmentName("foo$$_$$$Time%01d$$Time%08d$.m4s",
kSegmentStartTime,
kSegmentIndex));
// Format specifier edge cases.
EXPECT_EQ("12",
GetSegmentName("$Number%00d$", kSegmentStartTime, kSegmentIndex));
EXPECT_EQ("00012",
GetSegmentName("$Number%005d$", kSegmentStartTime, kSegmentIndex));
}
TEST(MuxerUtilTest, GetSegmentNameWithIndexZero) {
const uint64 kSegmentStartTime = 0;
const uint32 kSegmentIndex = 0;
EXPECT_EQ("1", GetSegmentName("$Number$", kSegmentStartTime, kSegmentIndex));
EXPECT_EQ("001",
GetSegmentName("$Number%03d$", kSegmentStartTime, kSegmentIndex));
EXPECT_EQ("0", GetSegmentName("$Time$", kSegmentStartTime, kSegmentIndex));
EXPECT_EQ("00000000.m4s",
GetSegmentName("$Time%08d$.m4s", kSegmentStartTime, kSegmentIndex));
}
TEST(MuxerUtilTest, GetSegmentNameLargeTime) {
const uint64 kSegmentStartTime = 1601599839840ULL;
const uint32 kSegmentIndex = 8888888;
EXPECT_EQ("1601599839840",
GetSegmentName("$Time$", kSegmentStartTime, kSegmentIndex));
}
} // namespace media