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..0d284d0256261da84eda8820b76eaa84691f6e3d |
--- /dev/null |
+++ b/media/base/text_ranges_unittest.cc |
@@ -0,0 +1,149 @@ |
+// 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_TRUE(r.AddCue(base::TimeDelta::FromSeconds(5))); |
acolwell GONE FROM CHROMIUM
2014/02/07 01:44:18
nit: Please add a TextRangesTest class declaration
Matthew Heaney (Chromium)
2014/02/07 03:24:35
Done.
|
+ |
+ // Create a new active range, with t=2. |
+ r.Reset(); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(2))); |
+ |
+ // Create a new active range, with t=8. |
+ r.Reset(); |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(8))); |
+ |
+ r.Reset(); |
+ |
+ // 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))); |
+ EXPECT_EQ(r.RangeCountForTesting(), 3); |
+ |
+ // Coalesce first two ranges: [2, 5]. |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromSeconds(5))); |
+ EXPECT_EQ(r.RangeCountForTesting(), 2); |
+ |
+ // 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))); |
+ EXPECT_EQ(r.RangeCountForTesting(), 1); |
+ |
+ // 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_TRUE(r.AddCue(base::TimeDelta::FromSeconds(0))); |
+ |
+ // Add cues to end of existing range. |
+ |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(1))); |
+ |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(2))); |
+ |
+ r.Reset(); |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(1500))); |
acolwell GONE FROM CHROMIUM
2014/02/07 01:44:18
nit: I think you should separate testing the "addi
Matthew Heaney (Chromium)
2014/02/07 03:24:35
Done.
|
+ |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(1600))); |
+ |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(2000))); |
+ |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromMilliseconds(2000))); |
+} |
+ |
+TEST(TextRangesTest, TestTwoRanges) { |
+ TextRanges r; |
+ |
+ // Create a new active range, with t=0. |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(0))); |
+ |
+ // Add cue to end of existing range. |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(1))); |
+ |
+ r.Reset(); |
+ |
+ // Create a new active range, with t=2. |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(2))); |
+ |
+ // Add a new cue to end of last (active) range. |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(3))); |
+ |
+ r.Reset(); |
+ |
+ // Make first range active. |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(500))); |
+ |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(1000))); |
+ |
+ // Expand first range. |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromMilliseconds(1100))); |
+ |
+ // Coalesce first and second ranges. |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(2000))); |
+ EXPECT_EQ(r.RangeCountForTesting(), 1); |
+} |
+ |
+TEST(TextRangesTest, TestThreeRanges) { |
+ TextRanges r; |
+ |
+ // Create a new active range, with t=0. |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(0))); |
+ |
+ // Add cue to end of existing range. |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(1))); |
+ |
+ r.Reset(); |
+ |
+ // Create a new active range, with t=2. |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(2))); |
+ |
+ // Add a new cue to end of last (active) range. |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(3))); |
+ |
+ r.Reset(); |
+ |
+ // Create a new active range, in between the other two. |
+ EXPECT_TRUE(r.AddCue(base::TimeDelta::FromMilliseconds(1500))); |
+ |
+ // Coalesce middle and last ranges: [1500 ms, 3000 ms]. |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(2000))); |
+ |
+ r.Reset(); |
+ |
+ // Make first range active: [0 sec, 1 sec]. |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromSeconds(0))); |
+ |
+ EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(500))); |
+ |
+ 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_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(1500))); |
+ EXPECT_EQ(r.RangeCountForTesting(), 1); |
+} |
+ |
+} // namespace media |