| Index: media/formats/webm/webm_tracks_parser_unittest.cc
|
| diff --git a/media/formats/webm/webm_tracks_parser_unittest.cc b/media/formats/webm/webm_tracks_parser_unittest.cc
|
| index 39854ef00dc5b09d3f5b9d5f458511f6554d2b5b..4fc6cee0f58b66daea73f1cc8948d5d819a6326f 100644
|
| --- a/media/formats/webm/webm_tracks_parser_unittest.cc
|
| +++ b/media/formats/webm/webm_tracks_parser_unittest.cc
|
| @@ -5,14 +5,17 @@
|
| #include "base/logging.h"
|
| #include "media/base/buffers.h"
|
| #include "media/base/channel_layout.h"
|
| +#include "media/base/mock_media_log.h"
|
| #include "media/formats/webm/tracks_builder.h"
|
| #include "media/formats/webm/webm_constants.h"
|
| #include "media/formats/webm/webm_tracks_parser.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +using ::testing::HasSubstr;
|
| using ::testing::InSequence;
|
| using ::testing::Return;
|
| +using ::testing::StrictMock;
|
| using ::testing::_;
|
|
|
| namespace media {
|
| @@ -21,33 +24,37 @@ static const double kDefaultTimecodeScaleInUs = 1000.0; // 1 ms resolution
|
|
|
| class WebMTracksParserTest : public testing::Test {
|
| public:
|
| - WebMTracksParserTest() {}
|
| + WebMTracksParserTest() : media_log_(new StrictMock<MockMediaLog>()) {}
|
| +
|
| + protected:
|
| + void VerifyTextTrackInfo(const uint8* buffer,
|
| + int buffer_size,
|
| + TextKind text_kind,
|
| + const std::string& name,
|
| + const std::string& language) {
|
| + scoped_ptr<WebMTracksParser> parser(
|
| + new WebMTracksParser(media_log_, false));
|
| +
|
| + int result = parser->Parse(buffer, buffer_size);
|
| + EXPECT_GT(result, 0);
|
| + EXPECT_EQ(result, buffer_size);
|
| +
|
| + const WebMTracksParser::TextTracks& text_tracks = parser->text_tracks();
|
| + EXPECT_EQ(text_tracks.size(), WebMTracksParser::TextTracks::size_type(1));
|
| +
|
| + const WebMTracksParser::TextTracks::const_iterator itr =
|
| + text_tracks.begin();
|
| + EXPECT_EQ(itr->first, 1); // track num
|
| +
|
| + const TextTrackConfig& config = itr->second;
|
| + EXPECT_EQ(config.kind(), text_kind);
|
| + EXPECT_TRUE(config.label() == name);
|
| + EXPECT_TRUE(config.language() == language);
|
| + }
|
| +
|
| + scoped_refptr<StrictMock<MockMediaLog>> media_log_;
|
| };
|
|
|
| -static void VerifyTextTrackInfo(const uint8* buffer,
|
| - int buffer_size,
|
| - TextKind text_kind,
|
| - const std::string& name,
|
| - const std::string& language) {
|
| - scoped_ptr<WebMTracksParser> parser(
|
| - new WebMTracksParser(new MediaLog(), false));
|
| -
|
| - int result = parser->Parse(buffer, buffer_size);
|
| - EXPECT_GT(result, 0);
|
| - EXPECT_EQ(result, buffer_size);
|
| -
|
| - const WebMTracksParser::TextTracks& text_tracks = parser->text_tracks();
|
| - EXPECT_EQ(text_tracks.size(), WebMTracksParser::TextTracks::size_type(1));
|
| -
|
| - const WebMTracksParser::TextTracks::const_iterator itr = text_tracks.begin();
|
| - EXPECT_EQ(itr->first, 1); // track num
|
| -
|
| - const TextTrackConfig& config = itr->second;
|
| - EXPECT_EQ(config.kind(), text_kind);
|
| - EXPECT_TRUE(config.label() == name);
|
| - EXPECT_TRUE(config.language() == language);
|
| -}
|
| -
|
| TEST_F(WebMTracksParserTest, SubtitleNoNameNoLang) {
|
| InSequence s;
|
|
|
| @@ -96,8 +103,10 @@ TEST_F(WebMTracksParserTest, IgnoringTextTracks) {
|
| tb.AddTextTrack(2, 2, kWebMCodecSubtitles, "Commentary", "fre");
|
|
|
| const std::vector<uint8> buf = tb.Finish();
|
| - scoped_ptr<WebMTracksParser> parser(
|
| - new WebMTracksParser(new MediaLog(), true));
|
| + scoped_ptr<WebMTracksParser> parser(new WebMTracksParser(media_log_, true));
|
| +
|
| + EXPECT_MEDIA_LOG(HasSubstr("Ignoring text track 1"));
|
| + EXPECT_MEDIA_LOG(HasSubstr("Ignoring text track 2"));
|
|
|
| int result = parser->Parse(&buf[0], buf.size());
|
| EXPECT_GT(result, 0);
|
| @@ -110,7 +119,7 @@ TEST_F(WebMTracksParserTest, IgnoringTextTracks) {
|
| EXPECT_TRUE(ignored_tracks.find(2) != ignored_tracks.end());
|
|
|
| // Test again w/o ignoring the test tracks.
|
| - parser.reset(new WebMTracksParser(new MediaLog(), false));
|
| + parser.reset(new WebMTracksParser(media_log_, false));
|
|
|
| result = parser->Parse(&buf[0], buf.size());
|
| EXPECT_GT(result, 0);
|
| @@ -130,8 +139,7 @@ TEST_F(WebMTracksParserTest, AudioVideoDefaultDurationUnset) {
|
| tb.AddVideoTrack(2, 2, "V_VP8", "video", "", -1, 320, 240);
|
| const std::vector<uint8> buf = tb.Finish();
|
|
|
| - scoped_ptr<WebMTracksParser> parser(
|
| - new WebMTracksParser(new MediaLog(), true));
|
| + scoped_ptr<WebMTracksParser> parser(new WebMTracksParser(media_log_, true));
|
| int result = parser->Parse(&buf[0], buf.size());
|
| EXPECT_LE(0, result);
|
| EXPECT_EQ(static_cast<int>(buf.size()), result);
|
| @@ -160,8 +168,7 @@ TEST_F(WebMTracksParserTest, AudioVideoDefaultDurationSet) {
|
| tb.AddVideoTrack(2, 2, "V_VP8", "video", "", 987654321, 320, 240);
|
| const std::vector<uint8> buf = tb.Finish();
|
|
|
| - scoped_ptr<WebMTracksParser> parser(
|
| - new WebMTracksParser(new MediaLog(), true));
|
| + scoped_ptr<WebMTracksParser> parser(new WebMTracksParser(media_log_, true));
|
| int result = parser->Parse(&buf[0], buf.size());
|
| EXPECT_LE(0, result);
|
| EXPECT_EQ(static_cast<int>(buf.size()), result);
|
| @@ -183,8 +190,10 @@ TEST_F(WebMTracksParserTest, InvalidZeroDefaultDurationSet) {
|
| tb.AddAudioTrack(1, 1, "A_VORBIS", "audio", "", 0, 2, 8000);
|
| const std::vector<uint8> buf = tb.Finish();
|
|
|
| - scoped_ptr<WebMTracksParser> parser(
|
| - new WebMTracksParser(new MediaLog(), true));
|
| + scoped_ptr<WebMTracksParser> parser(new WebMTracksParser(media_log_, true));
|
| +
|
| + EXPECT_MEDIA_LOG(HasSubstr("Illegal 0ns audio TrackEntry DefaultDuration"));
|
| +
|
| EXPECT_EQ(-1, parser->Parse(&buf[0], buf.size()));
|
| }
|
|
|
| @@ -195,8 +204,7 @@ TEST_F(WebMTracksParserTest, HighTrackUID) {
|
| tb.AddAudioTrack(1, 1ULL << 31, "A_VORBIS", "audio", "", 40, 2, 8000);
|
| const std::vector<uint8> buf = tb.Finish();
|
|
|
| - scoped_ptr<WebMTracksParser> parser(
|
| - new WebMTracksParser(new MediaLog(), true));
|
| + scoped_ptr<WebMTracksParser> parser(new WebMTracksParser(media_log_, true));
|
| EXPECT_GT(parser->Parse(&buf[0], buf.size()),0);
|
| }
|
|
|
|
|