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..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 |