Chromium Code Reviews| 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..db0317afea0fa68ec064847b55ebfa754ee4528a 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, |
|
wolenetz
2015/08/18 21:13:48
ditto: I moved this to be an instance method to gi
|
| + 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_STRING(HasSubstr("Ignoring text track 1")); |
| + EXPECT_MEDIA_LOG_STRING(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,11 @@ 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_STRING( |
| + HasSubstr("Illegal 0ns audio TrackEntry DefaultDuration")); |
|
xhwang
2015/08/19 00:25:05
Do we really have "ns" precision in our code? 1ns
wolenetz
2015/08/24 19:34:02
tl;dr: yes :)
Detail:
WebM container (derived fro
|
| + |
| EXPECT_EQ(-1, parser->Parse(&buf[0], buf.size())); |
| } |
| @@ -195,8 +205,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); |
| } |