Index: media/filters/ffmpeg_demuxer_unittest.cc |
diff --git a/media/filters/ffmpeg_demuxer_unittest.cc b/media/filters/ffmpeg_demuxer_unittest.cc |
index 1e9024e557b17bc36f8242e3ad9b563404e4dc3a..8e2ad97c6f34559d3d2e167944e0819fe6349505 100644 |
--- a/media/filters/ffmpeg_demuxer_unittest.cc |
+++ b/media/filters/ffmpeg_demuxer_unittest.cc |
@@ -1401,4 +1401,54 @@ TEST_F(FFmpegDemuxerTest, Read_Webm_Media_Track_Info) { |
EXPECT_EQ(audio_track.language(), ""); |
} |
+// UTCDateToTime_* tests here assume FFmpegDemuxer's ExtractTimelineOffset |
+// helper uses base::Time::FromUTCString() for conversion. |
+TEST_F(FFmpegDemuxerTest, UTCDateToTime_Valid) { |
+ base::Time result; |
+ EXPECT_TRUE( |
+ base::Time::FromUTCString("2012-11-10T12:34:56.987654Z", &result)); |
+ |
+ base::Time::Exploded exploded; |
+ result.UTCExplode(&exploded); |
+ EXPECT_TRUE(exploded.HasValidValues()); |
+ EXPECT_EQ(2012, exploded.year); |
+ EXPECT_EQ(11, exploded.month); |
+ EXPECT_EQ(6, exploded.day_of_week); |
+ EXPECT_EQ(10, exploded.day_of_month); |
+ EXPECT_EQ(12, exploded.hour); |
+ EXPECT_EQ(34, exploded.minute); |
+ EXPECT_EQ(56, exploded.second); |
+ EXPECT_EQ(987, exploded.millisecond); |
+ |
+ // base::Time exploding operations round fractional milliseconds down, so |
+ // verify fractional milliseconds using a base::TimeDelta. |
+ base::Time without_fractional_ms; |
+ EXPECT_TRUE(base::Time::FromUTCExploded(exploded, &without_fractional_ms)); |
+ base::TimeDelta delta = result - without_fractional_ms; |
+ EXPECT_EQ(654, delta.InMicroseconds()); |
+} |
+ |
+TEST_F(FFmpegDemuxerTest, UTCDateToTime_Invalid) { |
+ const char* invalid_date_strings[] = { |
+ "", |
+ "12:34:56", |
+ "-- ::", |
+ "2012-11- 12:34:56", |
+ "2012--10 12:34:56", |
+ "-11-10 12:34:56", |
+ "2012-11 12:34:56", |
+ "ABCD-11-10 12:34:56", |
+ "2012-EF-10 12:34:56", |
+ "2012-11-GH 12:34:56", |
+ "2012-11-1012:34:56", |
+ }; |
+ |
+ for (size_t i = 0; i < arraysize(invalid_date_strings); ++i) { |
+ const char* date_string = invalid_date_strings[i]; |
+ base::Time result; |
+ EXPECT_FALSE(base::Time::FromUTCString(date_string, &result)) |
+ << "date_string '" << date_string << "'"; |
+ } |
+} |
+ |
} // namespace media |