Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(290)

Side by Side Diff: media/base/text_ranges_unittest.cc

Issue 151103005: TextRenderer only pushes new cues downstream (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: added text ranges utility and unit test Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "media/base/text_ranges.h"
6
7 #include "base/time/time.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace media {
11
12 TEST(TextRangesTest, TestEmptyRanges) {
13 TextRanges r;
14
15 // Create a new active range, with t=5.
16 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(5)), -1);
17 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(5)));
18 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.
19
20 // Create a new active range, with t=2.
21 r.Flush();
22 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), -1);
23 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(2)));
24 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), 1);
25 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(5)), 0);
26
27 // Create a new active range, with t=8.
28 r.Flush();
29 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(8)), -1);
30 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(8)));
31 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(8)), 1);
32 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), 0);
33 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(5)), 0);
34
35 r.Flush();
36
37 // Make range [2, 2] active.
38 EXPECT_FALSE(r.AddCue(base::TimeDelta::FromSeconds(2)));
39
40 // Add duplicate cue to end of active range.
41 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(2)));
42
43 // Coalesce first two ranges: [2, 5].
44 EXPECT_FALSE(r.AddCue(base::TimeDelta::FromSeconds(5)));
45
46 // Add duplicate cue to end of active range.
47 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(5)));
48
49 // Coalesce first two ranges: [2, 8].
50 EXPECT_FALSE(r.AddCue(base::TimeDelta::FromSeconds(8)));
51
52 // Add duplicate cue to end of active range.
53 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(8)));
54
55 // Add new cue to end of (only) range.
56 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(9)));
57 }
58
59 TEST(TextRangesTest, TestOneRange) {
60 TextRanges r;
61
62 // Create a new active range, with t=0.
63 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), -1);
64 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(0)));
65 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), 1);
66
67 // Add cues to end of existing range.
68
69 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(1)), 0);
70 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(1)));
71 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(1)), 1);
72
73 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), 0);
74 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(2)));
75 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), 1);
76
77 r.Flush();
78 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1500)), -1);
79 EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(1500)));
80 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1500)), 1);
81
82 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1600)), 1);
83 EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(1600)));
84 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1600)), 1);
85
86 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 1);
87 EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(2000)));
88 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 1);
89
90 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 1);
91 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromMilliseconds(2000)));
92 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 1);
93 }
94
95 TEST(TextRangesTest, TestTwoRanges) {
96 TextRanges r;
97
98 // Create a new active range, with t=0.
99 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), -1);
100 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(0)));
101 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), 1);
102
103 // Add cue to end of existing range.
104 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(1)), 0);
105 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(1)));
106 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(1)), 1);
107
108 r.Flush();
109
110 // Create a new active range, with t=2.
111 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), -1);
112 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(2)));
113 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), 1);
114 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), 0);
115 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(1)), 0);
116
117 // Add a new cue to end of last (active) range.
118 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(3)), 0);
119 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(3)));
120 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(3)), 1);
121
122 r.Flush();
123
124 // Make first range active.
125 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(500)), -1);
126 EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(500)));
127 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(500)), 1);
128
129 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1000)), 1);
130 EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(1000)));
131
132 // Expand first range.
133 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1100)), 0);
134 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromMilliseconds(1100)));
135 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1100)), 1);
136 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 0);
137
138 // Coalesce first and second ranges.
139 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 0);
140 EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(2000)));
141 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 1);
142 }
143
144 TEST(TextRangesTest, TestThreeRanges) {
145 TextRanges r;
146
147 // Create a new active range, with t=0.
148 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), -1);
149 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(0)));
150 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), 1);
151
152 // Add cue to end of existing range.
153 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(1)), 0);
154 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(1)));
155 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(1)), 1);
156
157 r.Flush();
158
159 // Create a new active range, with t=2.
160 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), -1);
161 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(2)));
162 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(2)), 1);
163 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), 0);
164 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(1)), 0);
165
166 // Add a new cue to end of last (active) range.
167 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(3)), 0);
168 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromSeconds(3)));
169 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(3)), 1);
170
171 r.Flush();
172
173 // Create a new active range, in between the other two.
174 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1500)), -1);
175 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromMilliseconds(1500)));
176 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1500)), 1);
177
178 // Coalesce middle and last ranges: [1500 ms, 3000 ms].
179 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 0);
180 EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(2000)));
181 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 1);
182 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(0)), 0);
183
184 r.Flush();
185
186 // Make first range active: [0 sec, 1 sec].
187 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), -1);
188 EXPECT_FALSE(r.AddCue(base::TimeDelta::FromSeconds(0)));
189 EXPECT_EQ(r.Present(base::TimeDelta::FromSeconds(0)), 1);
190
191 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(500)), 1);
192 EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(500)));
193
194 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1000)), 1);
195 EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(1000)));
196
197 // Add a duplicate last time to first range.
198 EXPECT_TRUE(r.AddCue(base::TimeDelta::FromMilliseconds(1000)));
199
200 // Coalesce first and last ranges: [0 sec, 3 sec].
201 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(0)), 1);
202 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1000)), 1);
203 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1500)), 0);
204 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 0);
205 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(3000)), 0);
206 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(3500)), 0);
207 EXPECT_FALSE(r.AddCue(base::TimeDelta::FromMilliseconds(1500)));
208 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(0)), 1);
209 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1000)), 1);
210 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(1500)), 1);
211 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(2000)), 1);
212 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(3000)), 1);
213 EXPECT_EQ(r.Present(base::TimeDelta::FromMilliseconds(3500)), 0);
214 }
215
216 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698