Chromium Code Reviews| 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 |