26096d0d by David LaPalomento

Standardize plugin naming and re-organize some tests

Move segment parsing tests into their own file and top-level plugin tests intovideojs-hls_test.js. Use 'videojs' instead of 'video-js'.
1 parent 5e6b769b
......@@ -13,7 +13,7 @@
<script src="node_modules/videojs-media-sources/videojs-media-sources.js"></script>
<!-- HLS plugin -->
<script src="src/video-js-hls.js"></script>
<script src="src/videojs-hls.js"></script>
<!-- segment handling -->
<script src="src/flv-tag.js"></script>
......
......@@ -17,7 +17,7 @@ videojs.plugin('hls', function(options) {
player = this,
url,
loadSegment,
fillBuffer,
selectPlaylist;
if (typeof options === 'string') {
......
......@@ -8,13 +8,6 @@
Parser = window.videojs.m3u8.Parser,
parser;
module('environment');
test('is sane', function() {
expect(1);
ok(true);
});
/*
M3U8 Test Suite
*/
......
......@@ -35,13 +35,6 @@
testScriptEcmaArray,
testNalUnit;
module('environment');
test('is sane', function() {
expect(1);
ok(true);
});
module('segment parser', {
setup: function() {
parser = new window.videojs.hls.SegmentParser();
......@@ -228,25 +221,4 @@
'the size of the previous tag is correct');
}
});
module('segment controller', {
setup: function() {
segmentController = new window.videojs.hls.SegmentController();
this.vjsget = window.videojs.get;
window.videojs.get = function(url, success) {
success(window.bcSegment);
};
},
teardown: function() {
window.videojs.get = this.vjsget;
}
});
test('bandwidth calulation test', function() {
var
multiSecondData = segmentController.calculateThroughput(10000, 1000, 2000),
subSecondData = segmentController.calculateThroughput(10000, 1000, 1500);
equal(multiSecondData, 80000, 'MULTI-Second bits per second calculation');
equal(subSecondData, 160000, 'SUB-Second bits per second calculation');
});
})(this);
})(window);
......
......@@ -12,7 +12,7 @@
<script src="../node_modules/videojs-media-sources/videojs-media-sources.js"></script>
<!-- HLS plugin -->
<script src="../src/video-js-hls.js"></script>
<script src="../src/videojs-hls.js"></script>
<script src="../src/flv-tag.js"></script>
<script src="../src/exp-golomb.js"></script>
<script src="../src/h264-stream.js"></script>
......@@ -34,7 +34,15 @@
<script src="../src/bin-utils.js"></script>
<!-- Test cases -->
<script src="video-js-hls_test.js"></script>
<script>
module('environment');
test('is sane', function() {
expect(1);
ok(true);
});
</script>
<script src="videojs-hls_test.js"></script>
<script src="segment-parser.js"></script>
<script src="exp-golomb_test.js"></script>
<script src="flv-tag_test.js"></script>
<script src="m3u8_test.js"></script>
......
(function(window, videojs, undefined) {
var player, oldXhr, oldSourceBuffer;
/*
======== A Handy Little QUnit Reference ========
http://api.qunitjs.com/
Test methods:
module(name, {[setup][ ,teardown]})
test(name, callback)
expect(numberOfAssertions)
stop(increment)
start(decrement)
Test assertions:
ok(value, [message])
equal(actual, expected, [message])
notEqual(actual, expected, [message])
deepEqual(actual, expected, [message])
notDeepEqual(actual, expected, [message])
strictEqual(actual, expected, [message])
notStrictEqual(actual, expected, [message])
throws(block, [expected], [message])
*/
var player, oldXhr, oldSourceBuffer, xhrParams;
module('HLS', {
setup: function() {
......@@ -7,10 +28,21 @@ module('HLS', {
document.querySelector('#qunit-fixture').appendChild(video);
player = videojs(video);
// make XHR synchronous
oldXhr = window.XMLHttpRequest;
oldSourceBuffer = window.videojs.SourceBuffer;
window.XMLHttpRequest = function() {
this.open = function() {
xhrParams = arguments;
};
this.send = function() {
this.readyState = 4;
this.responseText = window.manifests['media'];
this.onreadystatechange();
};
};
// mock out SourceBuffer since it won't be available in phantomjs
oldSourceBuffer = window.videojs.SourceBuffer;
window.videojs.SourceBuffer = function() {
this.appendBuffer = function() {};
};
......@@ -21,20 +53,13 @@ module('HLS', {
}
});
asyncTest('loads the specified manifest URL on init', function() {
var loadedmanifest = false;
test('loads the specified manifest URL on init', function() {
var loadedmanifest = false, loadedmetadata = false;
player.on('loadedmanifest', function() {
loadedmanifest = true;
});
player.on('loadedmetadata', function() {
ok(loadedmanifest, 'loadedmanifest fires');
ok(player.hls.manifest, 'the manifest is available');
ok(player.hls.manifest.segments, 'the segments are parsed');
strictEqual(player.hls.manifest,
player.hls.currentPlaylist,
'a playlist is selected');
strictEqual(player.hls.readyState(), 1, 'the readyState is HAVE_METADATA');
start();
loadedmetadata = true;
});
player.hls('manifest/playlist.m3u8');
......@@ -42,26 +67,44 @@ asyncTest('loads the specified manifest URL on init', function() {
videojs.mediaSources[player.currentSrc()].trigger({
type: 'sourceopen'
});
ok(loadedmanifest, 'loadedmanifest fires');
ok(loadedmetadata, 'loadedmetadata fires');
ok(player.hls.manifest, 'the manifest is available');
ok(player.hls.manifest.segments, 'the segment entries are parsed');
strictEqual(player.hls.manifest,
player.hls.currentPlaylist,
'a playlist is selected');
strictEqual(player.hls.readyState(), 1, 'the readyState is HAVE_METADATA');
});
test('starts downloading a segment on loadedmetadata', function() {
var url;
window.XMLHttpRequest = function() {
this.open = function() {
url = arguments[1];
};
this.send = function() {
this.readyState = 4;
this.responseText = window.manifests['media'];
this.onreadystatechange();
};
};
player.hls('manifest/media.m3u8');
videojs.mediaSources[player.currentSrc()].trigger({
type: 'sourceopen'
});
strictEqual(url, '00001.ts', 'the first segment is requested');
strictEqual(xhrParams[1], '00001.ts', 'the first segment is requested');
});
module('segment controller', {
setup: function() {
segmentController = new window.videojs.hls.SegmentController();
this.vjsget = window.videojs.get;
window.videojs.get = function(url, success) {
success(window.bcSegment);
};
},
teardown: function() {
window.videojs.get = this.vjsget;
}
});
test('bandwidth calulation test', function() {
var
multiSecondData = segmentController.calculateThroughput(10000, 1000, 2000),
subSecondData = segmentController.calculateThroughput(10000, 1000, 1500);
equal(multiSecondData, 80000, 'MULTI-Second bits per second calculation');
equal(subSecondData, 160000, 'SUB-Second bits per second calculation');
});
})(window, window.videojs);
......