summaryrefslogtreecommitdiff
path: root/javascript/videojs/test/unit/tracks/audio-track.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'javascript/videojs/test/unit/tracks/audio-track.test.js')
-rw-r--r--javascript/videojs/test/unit/tracks/audio-track.test.js124
1 files changed, 124 insertions, 0 deletions
diff --git a/javascript/videojs/test/unit/tracks/audio-track.test.js b/javascript/videojs/test/unit/tracks/audio-track.test.js
new file mode 100644
index 0000000..e8f3f2f
--- /dev/null
+++ b/javascript/videojs/test/unit/tracks/audio-track.test.js
@@ -0,0 +1,124 @@
+/* eslint-env qunit */
+import AudioTrack from '../../../src/js/tracks/audio-track.js';
+import {AudioTrackKind} from '../../../src/js/tracks/track-enums.js';
+import TrackBaseline from './track-baseline';
+
+QUnit.module('Audio Track');
+
+// do baseline track testing
+TrackBaseline(AudioTrack, {
+ id: '1',
+ language: 'en',
+ label: 'English',
+ kind: 'main'
+});
+
+QUnit.test('can create an enabled property on an AudioTrack', function(assert) {
+ const enabled = true;
+ const track = new AudioTrack({
+ enabled
+ });
+
+ assert.equal(track.enabled, enabled, 'enabled value matches what we passed in');
+});
+
+QUnit.test('defaults when items not provided', function(assert) {
+ const track = new AudioTrack();
+
+ assert.equal(track.kind, '', 'kind defaulted to empty string');
+ assert.equal(track.enabled, false, 'enabled defaulted to true since there is one track');
+ assert.equal(track.label, '', 'label defaults to empty string');
+ assert.equal(track.language, '', 'language defaults to empty string');
+ assert.ok(track.id.match(/vjs_track_\d+/), 'id defaults to vjs_track_GUID');
+});
+
+QUnit.test('kind can only be one of several options, defaults to empty string', function(assert) {
+ const track1 = new AudioTrack({
+ kind: 'foo'
+ });
+
+ assert.equal(track1.kind, '', 'the kind is set to empty string, not foo');
+ assert.notEqual(track1.kind, 'foo', 'the kind is set to empty string, not foo');
+
+ // loop through all possible kinds to verify
+ for (const key in AudioTrackKind) {
+ const currentKind = AudioTrackKind[key];
+ const track = new AudioTrack({
+ kind: currentKind
+ });
+
+ assert.equal(track.kind, currentKind, 'the kind is set to ' + currentKind);
+ }
+});
+
+QUnit.test('enabled can only be instantiated to true or false, defaults to false', function(assert) {
+ let track = new AudioTrack({
+ enabled: 'foo'
+ });
+
+ assert.equal(track.enabled, false, 'the enabled value is set to false, not foo');
+ assert.notEqual(track.enabled, 'foo', 'the enabled value is not set to foo');
+
+ track = new AudioTrack({
+ enabled: true
+ });
+
+ assert.equal(track.enabled, true, 'the enabled value is set to true');
+
+ track = new AudioTrack({
+ enabled: false
+ });
+
+ assert.equal(track.enabled, false, 'the enabled value is set to false');
+});
+
+QUnit.test('enabled can only be changed to true or false', function(assert) {
+ const track = new AudioTrack();
+
+ track.enabled = 'foo';
+ assert.notEqual(track.enabled, 'foo', 'enabled not set to invalid value, foo');
+ assert.equal(track.enabled, false, 'enabled remains on the old value, false');
+
+ track.enabled = true;
+ assert.equal(track.enabled, true, 'enabled was set to true');
+
+ track.enabled = 'baz';
+ assert.notEqual(track.enabled, 'baz', 'enabled not set to invalid value, baz');
+ assert.equal(track.enabled, true, 'enabled remains on the old value, true');
+
+ track.enabled = false;
+ assert.equal(track.enabled, false, 'enabled was set to false');
+});
+
+QUnit.test('when enabled is changed enabledchange event is fired', function(assert) {
+ const track = new AudioTrack({
+ tech: this.tech,
+ enabled: false
+ });
+ let eventsTriggered = 0;
+
+ track.addEventListener('enabledchange', () => {
+ eventsTriggered++;
+ });
+
+ // two events
+ track.enabled = true;
+ track.enabled = false;
+ assert.equal(eventsTriggered, 2, 'two enabled changes');
+
+ // no event here
+ track.enabled = false;
+ track.enabled = false;
+ assert.equal(eventsTriggered, 2, 'still two enabled changes');
+
+ // one event
+ track.enabled = true;
+ assert.equal(eventsTriggered, 3, 'three enabled changes');
+
+ // no events
+ track.enabled = true;
+ track.enabled = true;
+ assert.equal(eventsTriggered, 3, 'still three enabled changes');
+
+ track.off();
+});