diff options
Diffstat (limited to 'javascript/videojs/test/unit/tracks/video-track-list.test.js')
| -rw-r--r-- | javascript/videojs/test/unit/tracks/video-track-list.test.js | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/javascript/videojs/test/unit/tracks/video-track-list.test.js b/javascript/videojs/test/unit/tracks/video-track-list.test.js new file mode 100644 index 0000000..611ec1e --- /dev/null +++ b/javascript/videojs/test/unit/tracks/video-track-list.test.js @@ -0,0 +1,117 @@ +/* eslint-env qunit */ +import VideoTrackList from '../../../src/js/tracks/video-track-list.js'; +import VideoTrack from '../../../src/js/tracks/video-track.js'; +import EventTarget from '../../../src/js/event-target.js'; + +QUnit.module('Video Track List'); + +QUnit.test('trigger "change" when "selectedchange" is fired on a track', function(assert) { + const track = new EventTarget(); + + track.loaded_ = true; + const videoTrackList = new VideoTrackList([track]); + let changes = 0; + const changeHandler = function() { + changes++; + }; + + videoTrackList.on('change', changeHandler); + track.trigger('selectedchange'); + assert.equal(changes, 1, 'one change events for trigger'); + + videoTrackList.off('change', changeHandler); + videoTrackList.onchange = changeHandler; + + track.trigger('selectedchange'); + assert.equal(changes, 2, 'one change events for another trigger'); + + videoTrackList.removeTrack(track); + videoTrackList.off('change'); +}); + +QUnit.test('only one track is ever selected', function(assert) { + const track = new VideoTrack({selected: true}); + const track2 = new VideoTrack({selected: true}); + const track3 = new VideoTrack({selected: true}); + const track4 = new VideoTrack(); + const list = new VideoTrackList([track, track2]); + + assert.equal(track.selected, false, 'track is unselected'); + assert.equal(track2.selected, true, 'track2 is selected'); + + track.selected = true; + assert.equal(track.selected, true, 'track is selected'); + assert.equal(track2.selected, false, 'track2 is unselected'); + + list.addTrack(track3); + assert.equal(track.selected, false, 'track is unselected'); + assert.equal(track2.selected, false, 'track2 is unselected'); + assert.equal(track3.selected, true, 'track3 is selected'); + + track2.selected = true; + assert.equal(track.selected, false, 'track is unselected'); + assert.equal(track2.selected, true, 'track2 is selected'); + assert.equal(track3.selected, false, 'track3 is unselected'); + + list.addTrack(track4); + assert.equal(track.selected, false, 'track is unselected'); + assert.equal(track2.selected, true, 'track2 is selected'); + assert.equal(track3.selected, false, 'track3 is unselected'); + assert.equal(track4.selected, false, 'track4 is unselected'); + + list.removeTrack(track); + list.removeTrack(track2); + list.removeTrack(track3); + list.removeTrack(track4); +}); + +QUnit.test('all tracks can be unselected', function(assert) { + const track = new VideoTrack(); + const track2 = new VideoTrack(); + const list = new VideoTrackList([track, track2]); + + assert.equal(track.selected, false, 'track is unselected'); + assert.equal(track2.selected, false, 'track2 is unselected'); + + track.selected = true; + assert.equal(track.selected, true, 'track is selected'); + assert.equal(track2.selected, false, 'track2 is unselected'); + + track.selected = false; + assert.equal(track.selected, false, 'track is unselected'); + assert.equal(track2.selected, false, 'track2 is unselected'); + + list.removeTrack(track); + list.removeTrack(track2); +}); + +QUnit.test('trigger a change event per selected change', function(assert) { + const track = new VideoTrack({selected: true}); + const track2 = new VideoTrack({selected: true}); + const track3 = new VideoTrack({selected: true}); + const track4 = new VideoTrack(); + const list = new VideoTrackList([track, track2]); + let change = 0; + + list.on('change', () => change++); + track.selected = true; + assert.equal(change, 1, 'one change triggered'); + + list.addTrack(track3); + assert.equal(change, 2, 'another change triggered by adding an selected track'); + + track.selected = true; + assert.equal(change, 3, 'another change trigger by changing selected'); + + track.selected = false; + assert.equal(change, 4, 'another change trigger by changing selected'); + + list.addTrack(track4); + assert.equal(change, 4, 'no change triggered by adding a unselected track'); + + list.removeTrack(track); + list.removeTrack(track2); + list.removeTrack(track3); + list.removeTrack(track4); + list.off('change'); +}); |
