1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
/* eslint-env qunit */
import AudioTrackList from '../../../src/js/tracks/audio-track-list.js';
import AudioTrack from '../../../src/js/tracks/audio-track.js';
import EventTarget from '../../../src/js/event-target.js';
QUnit.module('Audio Track List');
QUnit.test('trigger "change" when "enabledchange" is fired on a track', function(assert) {
const track = new EventTarget();
track.loaded_ = true;
const audioTrackList = new AudioTrackList([track]);
let changes = 0;
const changeHandler = function() {
changes++;
};
audioTrackList.on('change', changeHandler);
track.trigger('enabledchange');
assert.equal(changes, 1, 'one change events for trigger');
audioTrackList.off('change', changeHandler);
audioTrackList.onchange = changeHandler;
track.trigger('enabledchange');
assert.equal(changes, 2, 'one change events for another trigger');
audioTrackList.removeTrack(track);
audioTrackList.off('change');
});
QUnit.test('only one track is ever enabled', function(assert) {
const track = new AudioTrack({enabled: true});
const track2 = new AudioTrack({enabled: true});
const track3 = new AudioTrack({enabled: true});
const track4 = new AudioTrack();
const list = new AudioTrackList([track, track2]);
assert.equal(track.enabled, false, 'track is disabled');
assert.equal(track2.enabled, true, 'track2 is enabled');
track.enabled = true;
assert.equal(track.enabled, true, 'track is enabled');
assert.equal(track2.enabled, false, 'track2 is disabled');
list.addTrack(track3);
assert.equal(track.enabled, false, 'track is disabled');
assert.equal(track2.enabled, false, 'track2 is disabled');
assert.equal(track3.enabled, true, 'track3 is enabled');
track2.enabled = true;
assert.equal(track.enabled, false, 'track is disabled');
assert.equal(track2.enabled, true, 'track2 is enabled');
assert.equal(track3.enabled, false, 'track3 is disabled');
list.addTrack(track4);
assert.equal(track.enabled, false, 'track is disabled');
assert.equal(track2.enabled, true, 'track2 is enabled');
assert.equal(track3.enabled, false, 'track3 is disabled');
assert.equal(track4.enabled, false, 'track4 is disabled');
list.removeTrack(track);
list.removeTrack(track2);
list.removeTrack(track3);
list.removeTrack(track4);
});
QUnit.test('all tracks can be disabled', function(assert) {
const track = new AudioTrack();
const track2 = new AudioTrack();
// we need audiotracklist here to verify that it does not
// re-enable a track
const list = new AudioTrackList([track, track2]);
assert.equal(track.enabled, false, 'track is disabled');
assert.equal(track2.enabled, false, 'track2 is disabled');
track.enabled = true;
assert.equal(track.enabled, true, 'track is enabled');
assert.equal(track2.enabled, false, 'track2 is disabled');
track.enabled = false;
assert.equal(track.enabled, false, 'track is disabled');
assert.equal(track2.enabled, false, 'track2 is disabled');
list.removeTrack(track);
list.removeTrack(track2);
});
QUnit.test('trigger a change event per enabled change', function(assert) {
const track = new AudioTrack({enabled: true});
const track2 = new AudioTrack({enabled: true});
const track3 = new AudioTrack({enabled: true});
const track4 = new AudioTrack();
const list = new AudioTrackList([track, track2]);
let change = 0;
list.on('change', () => change++);
track.enabled = true;
assert.equal(change, 1, 'one change triggered');
list.addTrack(track3);
assert.equal(change, 2, 'another change triggered by adding an enabled track');
track.enabled = true;
assert.equal(change, 3, 'another change trigger by changing enabled');
track.enabled = false;
assert.equal(change, 4, 'another change trigger by changing enabled');
list.addTrack(track4);
assert.equal(change, 4, 'no change triggered by adding a disabled track');
list.removeTrack(track);
list.removeTrack(track2);
list.removeTrack(track3);
list.removeTrack(track4);
list.off();
});
|