Index: media/base/text_ranges_unittest.cc |
diff --git a/media/base/text_ranges_unittest.cc b/media/base/text_ranges_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ec30ed7ddfc37f4f9a978572b9a52c6064e28adf |
--- /dev/null |
+++ b/media/base/text_ranges_unittest.cc |
@@ -0,0 +1,216 @@ |
+// Copyright (c) 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "media/base/text_ranges.h" |
+ |
+#include "base/time/time.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace media { |
+ |
+TEST(TextRangesTest, TestEmptyRanges) { |
+ TextRanges r; |
+ |
+ // Create a new active range, with t=5. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(5)), -1); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(5))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(5)), 1); |
acolwell GONE FROM CHROMIUM
2014/02/05 19:09:36
Please remove the Present() calls and Present() it
Matthew Heaney (Chromium)
2014/02/06 02:25:48
Done.
|
+ |
+ // Create a new active range, with t=2. |
+ r.Flush(); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), -1); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(2))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), 1); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(5)), 0); |
+ |
+ // Create a new active range, with t=8. |
+ r.Flush(); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(8)), -1); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(8))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(8)), 1); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), 0); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(5)), 0); |
+ |
+ r.Flush(); |
+ |
+ // Make range [2, 2] active. |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromSeconds(2))); |
+ |
+ // Add duplicate cue to end of active range. |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(2))); |
+ |
+ // Coalesce first two ranges: [2, 5]. |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromSeconds(5))); |
+ |
+ // Add duplicate cue to end of active range. |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(5))); |
+ |
+ // Coalesce first two ranges: [2, 8]. |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromSeconds(8))); |
+ |
+ // Add duplicate cue to end of active range. |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(8))); |
+ |
+ // Add new cue to end of (only) range. |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(9))); |
+} |
+ |
+TEST(TextRangesTest, TestOneRange) { |
+ TextRanges r; |
+ |
+ // Create a new active range, with t=0. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), -1); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(0))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), 1); |
+ |
+ // Add cues to end of existing range. |
+ |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(1)), 0); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(1))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(1)), 1); |
+ |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), 0); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(2))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), 1); |
+ |
+ r.Flush(); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1500)), -1); |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(1500))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1500)), 1); |
+ |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1600)), 1); |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(1600))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1600)), 1); |
+ |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 1); |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(2000))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 1); |
+ |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 1); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromMilliseconds(2000))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 1); |
+} |
+ |
+TEST(TextRangesTest, TestTwoRanges) { |
+ TextRanges r; |
+ |
+ // Create a new active range, with t=0. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), -1); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(0))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), 1); |
+ |
+ // Add cue to end of existing range. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(1)), 0); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(1))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(1)), 1); |
+ |
+ r.Flush(); |
+ |
+ // Create a new active range, with t=2. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), -1); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(2))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), 1); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), 0); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(1)), 0); |
+ |
+ // Add a new cue to end of last (active) range. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(3)), 0); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(3))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(3)), 1); |
+ |
+ r.Flush(); |
+ |
+ // Make first range active. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(500)), -1); |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(500))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(500)), 1); |
+ |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1000)), 1); |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(1000))); |
+ |
+ // Expand first range. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1100)), 0); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromMilliseconds(1100))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1100)), 1); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 0); |
+ |
+ // Coalesce first and second ranges. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 0); |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(2000))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 1); |
+} |
+ |
+TEST(TextRangesTest, TestThreeRanges) { |
+ TextRanges r; |
+ |
+ // Create a new active range, with t=0. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), -1); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(0))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), 1); |
+ |
+ // Add cue to end of existing range. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(1)), 0); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(1))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(1)), 1); |
+ |
+ r.Flush(); |
+ |
+ // Create a new active range, with t=2. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), -1); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(2))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), 1); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), 0); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(1)), 0); |
+ |
+ // Add a new cue to end of last (active) range. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(3)), 0); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(3))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(3)), 1); |
+ |
+ r.Flush(); |
+ |
+ // Create a new active range, in between the other two. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1500)), -1); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromMilliseconds(1500))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1500)), 1); |
+ |
+ // Coalesce middle and last ranges: [1500 ms, 3000 ms]. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 0); |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(2000))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 1); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(0)), 0); |
+ |
+ r.Flush(); |
+ |
+ // Make first range active: [0 sec, 1 sec]. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), -1); |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromSeconds(0))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), 1); |
+ |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(500)), 1); |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(500))); |
+ |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1000)), 1); |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(1000))); |
+ |
+ // Add a duplicate last time to first range. |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromMilliseconds(1000))); |
+ |
+ // Coalesce first and last ranges: [0 sec, 3 sec]. |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(0)), 1); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1000)), 1); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1500)), 0); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 0); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(3000)), 0); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(3500)), 0); |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(1500))); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(0)), 1); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1000)), 1); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1500)), 1); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 1); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(3000)), 1); |
+ EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(3500)), 0); |
+} |
+ |
+} // namespace media |