53210b25 by jrivera

Fix tests

readyState should have been a function all along
added a test for expired seconds tracking not beginning until firstplay is triggered
1 parent 6ad52bb2
...@@ -177,8 +177,37 @@ ...@@ -177,8 +177,37 @@
177 strictEqual(loader.state, 'HAVE_METADATA', 'the state is correct'); 177 strictEqual(loader.state, 'HAVE_METADATA', 'the state is correct');
178 }); 178 });
179 179
180 test('does not increment expired seconds before firstplay is triggered', function() {
181 var loader = new videojs.Hls.PlaylistLoader('live.m3u8');
182 requests.pop().respond(200, null,
183 '#EXTM3U\n' +
184 '#EXT-X-MEDIA-SEQUENCE:0\n' +
185 '#EXTINF:10,\n' +
186 '0.ts\n' +
187 '#EXTINF:10,\n' +
188 '1.ts\n' +
189 '#EXTINF:10,\n' +
190 '2.ts\n' +
191 '#EXTINF:10,\n' +
192 '3.ts\n');
193 clock.tick(10 * 1000); // 10s, one target duration
194 requests.pop().respond(200, null,
195 '#EXTM3U\n' +
196 '#EXT-X-MEDIA-SEQUENCE:1\n' +
197 '#EXTINF:10,\n' +
198 '1.ts\n' +
199 '#EXTINF:10,\n' +
200 '2.ts\n' +
201 '#EXTINF:10,\n' +
202 '3.ts\n' +
203 '#EXTINF:10,\n' +
204 '4.ts\n');
205 equal(loader.expired_, 0, 'expired one segment');
206 });
207
180 test('increments expired seconds after a segment is removed', function() { 208 test('increments expired seconds after a segment is removed', function() {
181 var loader = new videojs.Hls.PlaylistLoader('live.m3u8'); 209 var loader = new videojs.Hls.PlaylistLoader('live.m3u8');
210 loader.trigger('firstplay');
182 requests.pop().respond(200, null, 211 requests.pop().respond(200, null,
183 '#EXTM3U\n' + 212 '#EXTM3U\n' +
184 '#EXT-X-MEDIA-SEQUENCE:0\n' + 213 '#EXT-X-MEDIA-SEQUENCE:0\n' +
...@@ -207,6 +236,7 @@ ...@@ -207,6 +236,7 @@
207 236
208 test('increments expired seconds after a discontinuity', function() { 237 test('increments expired seconds after a discontinuity', function() {
209 var loader = new videojs.Hls.PlaylistLoader('live.m3u8'); 238 var loader = new videojs.Hls.PlaylistLoader('live.m3u8');
239 loader.trigger('firstplay');
210 requests.pop().respond(200, null, 240 requests.pop().respond(200, null,
211 '#EXTM3U\n' + 241 '#EXTM3U\n' +
212 '#EXT-X-MEDIA-SEQUENCE:0\n' + 242 '#EXT-X-MEDIA-SEQUENCE:0\n' +
...@@ -249,6 +279,7 @@ ...@@ -249,6 +279,7 @@
249 279
250 test('tracks expired seconds properly when two discontinuities expire at once', function() { 280 test('tracks expired seconds properly when two discontinuities expire at once', function() {
251 var loader = new videojs.Hls.PlaylistLoader('live.m3u8'); 281 var loader = new videojs.Hls.PlaylistLoader('live.m3u8');
282 loader.trigger('firstplay');
252 requests.pop().respond(200, null, 283 requests.pop().respond(200, null,
253 '#EXTM3U\n' + 284 '#EXTM3U\n' +
254 '#EXT-X-MEDIA-SEQUENCE:0\n' + 285 '#EXT-X-MEDIA-SEQUENCE:0\n' +
...@@ -274,6 +305,7 @@ ...@@ -274,6 +305,7 @@
274 305
275 test('estimates expired if an entire window elapses between live playlist updates', function() { 306 test('estimates expired if an entire window elapses between live playlist updates', function() {
276 var loader = new videojs.Hls.PlaylistLoader('live.m3u8'); 307 var loader = new videojs.Hls.PlaylistLoader('live.m3u8');
308 loader.trigger('firstplay');
277 requests.pop().respond(200, null, 309 requests.pop().respond(200, null,
278 '#EXTM3U\n' + 310 '#EXTM3U\n' +
279 '#EXT-X-MEDIA-SEQUENCE:0\n' + 311 '#EXT-X-MEDIA-SEQUENCE:0\n' +
...@@ -826,6 +858,7 @@ ...@@ -826,6 +858,7 @@
826 858
827 test('prefers precise segment timing when tracking expired time', function() { 859 test('prefers precise segment timing when tracking expired time', function() {
828 var loader = new videojs.Hls.PlaylistLoader('media.m3u8'); 860 var loader = new videojs.Hls.PlaylistLoader('media.m3u8');
861 loader.trigger('firstplay');
829 requests.shift().respond(200, null, 862 requests.shift().respond(200, null,
830 '#EXTM3U\n' + 863 '#EXTM3U\n' +
831 '#EXT-X-MEDIA-SEQUENCE:1001\n' + 864 '#EXT-X-MEDIA-SEQUENCE:1001\n' +
......
...@@ -335,7 +335,7 @@ test('autoplay seeks to the live point after playlist load', function() { ...@@ -335,7 +335,7 @@ test('autoplay seeks to the live point after playlist load', function() {
335 type: 'application/vnd.apple.mpegurl' 335 type: 'application/vnd.apple.mpegurl'
336 }); 336 });
337 openMediaSource(player); 337 openMediaSource(player);
338 player.tech_.readyState = 3; 338 player.tech_.readyState = function(){return 1;};
339 player.tech_.trigger('play'); 339 player.tech_.trigger('play');
340 standardXHRResponse(requests.shift()); 340 standardXHRResponse(requests.shift());
341 clock.tick(1); 341 clock.tick(1);
...@@ -357,7 +357,7 @@ test('autoplay seeks to the live point after media source open', function() { ...@@ -357,7 +357,7 @@ test('autoplay seeks to the live point after media source open', function() {
357 clock.tick(1); 357 clock.tick(1);
358 standardXHRResponse(requests.shift()); 358 standardXHRResponse(requests.shift());
359 openMediaSource(player); 359 openMediaSource(player);
360 player.tech_.readyState = 3; 360 player.tech_.readyState = function(){return 1;};
361 player.tech_.trigger('play'); 361 player.tech_.trigger('play');
362 clock.tick(1); 362 clock.tick(1);
363 363
...@@ -410,7 +410,7 @@ test('calls `remove` on sourceBuffer to when loading a live segment', function() ...@@ -410,7 +410,7 @@ test('calls `remove` on sourceBuffer to when loading a live segment', function()
410 player.tech_.hls.playlists.trigger('loadedmetadata'); 410 player.tech_.hls.playlists.trigger('loadedmetadata');
411 player.tech_.trigger('canplay'); 411 player.tech_.trigger('canplay');
412 player.tech_.paused = function() { return false; }; 412 player.tech_.paused = function() { return false; };
413 player.tech_.readyState = 3; 413 player.tech_.readyState = function(){return 1;};
414 player.tech_.trigger('play'); 414 player.tech_.trigger('play');
415 415
416 clock.tick(1); 416 clock.tick(1);
...@@ -1688,7 +1688,7 @@ test('live playlist starts three target durations before live', function() { ...@@ -1688,7 +1688,7 @@ test('live playlist starts three target durations before live', function() {
1688 equal(requests.length, 0, 'no outstanding segment request'); 1688 equal(requests.length, 0, 'no outstanding segment request');
1689 1689
1690 player.tech_.paused = function() { return false; }; 1690 player.tech_.paused = function() { return false; };
1691 player.tech_.readyState = 3; 1691 player.tech_.readyState = function(){return 1;};
1692 player.tech_.trigger('play'); 1692 player.tech_.trigger('play');
1693 clock.tick(1); 1693 clock.tick(1);
1694 mediaPlaylist = player.tech_.hls.playlists.media(); 1694 mediaPlaylist = player.tech_.hls.playlists.media();
...@@ -1709,7 +1709,7 @@ test('live playlist starts with correct currentTime value', function() { ...@@ -1709,7 +1709,7 @@ test('live playlist starts with correct currentTime value', function() {
1709 player.tech_.hls.playlists.trigger('loadedmetadata'); 1709 player.tech_.hls.playlists.trigger('loadedmetadata');
1710 1710
1711 player.tech_.paused = function() { return false; }; 1711 player.tech_.paused = function() { return false; };
1712 player.tech_.readyState = 3; 1712 player.tech_.readyState = function(){return 1;};
1713 player.tech_.trigger('play'); 1713 player.tech_.trigger('play');
1714 clock.tick(1); 1714 clock.tick(1);
1715 1715
......