Skip to content

Commit

Permalink
add unit tests for initial track selection based in accessibility pro…
Browse files Browse the repository at this point in the history
…perty
  • Loading branch information
Stephan Schreiner committed Sep 1, 2022
1 parent e20ed87 commit b513d27
Showing 1 changed file with 141 additions and 0 deletions.
141 changes: 141 additions & 0 deletions test/unit/streaming.controllers.MediaController.js
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,39 @@ describe('MediaController', function () {
});

describe('Initial Track Management', function () {
const streamInfo = {
id: 'id'
};
const enTrack = {
type: trackType,
streamInfo: streamInfo,
lang: 'en',
viewpoint: null,
roles: ['Main'],
accessibility: [],
audioChannelConfiguration: 6,
selectionPriority: 2
};
const enADTrack = {
type: trackType,
streamInfo: streamInfo,
lang: 'en',
viewpoint: null,
roles: ['alternate'],
accessibility: ['1'],
audioChannelConfiguration: 6,
selectionPriority: 3
};
const esTrack = {
type: trackType,
streamInfo: streamInfo,
lang: 'es',
viewpoint: null,
roles: ['dub'],
accessibility: [],
audioChannelConfiguration: 2,
selectionPriority: 4
};

it('should check initial media settings to choose initial track', function () {
let streamInfo = {
Expand Down Expand Up @@ -449,6 +482,114 @@ describe('MediaController', function () {
currentTrack = mediaController.getCurrentTrackFor(trackType, streamInfo.id);
expect(objectUtils.areEqual(currentTrack, qtzTrack)).to.be.true; // jshint ignore:line
});

it('should check initial media settings to choose initial track with a lang and absent accessibility setting', function () {
mediaController.addTrack(enTrack);
mediaController.addTrack(enADTrack);
mediaController.addTrack(esTrack);

let trackList = mediaController.getTracksFor(trackType, streamInfo.id);
expect(trackList).to.have.lengthOf(3);
expect(objectUtils.areEqual(trackList[0], enTrack)).to.be.true; // jshint ignore:line
expect(objectUtils.areEqual(trackList[1], enADTrack)).to.be.true; // jshint ignore:line
expect(objectUtils.areEqual(trackList[2], esTrack)).to.be.true; // jshint ignore:line

let currentTrack = mediaController.getCurrentTrackFor(trackType, streamInfo.id);
expect(objectUtils.areEqual(currentTrack, enTrack)).to.be.false; // jshint ignore:line
expect(objectUtils.areEqual(currentTrack, enADTrack)).to.be.false; // jshint ignore:line
expect(objectUtils.areEqual(currentTrack, esTrack)).to.be.false; // jshint ignore:line

// call to setInitialMediaSettingsForType
mediaController.setInitialSettings(trackType, {
lang: 'en'
});
mediaController.setInitialMediaSettingsForType(trackType, streamInfo);

currentTrack = mediaController.getCurrentTrackFor(trackType, streamInfo.id);
expect(objectUtils.areEqual(currentTrack, enTrack)).to.be.true; // jshint ignore:line
});

it('should check initial media settings to choose initial track with a lang and empty accessibility setting', function () {
mediaController.addTrack(enTrack);
mediaController.addTrack(enADTrack);
mediaController.addTrack(esTrack);

let trackList = mediaController.getTracksFor(trackType, streamInfo.id);
expect(trackList).to.have.lengthOf(3);
expect(objectUtils.areEqual(trackList[0], enTrack)).to.be.true; // jshint ignore:line
expect(objectUtils.areEqual(trackList[1], enADTrack)).to.be.true; // jshint ignore:line
expect(objectUtils.areEqual(trackList[2], esTrack)).to.be.true; // jshint ignore:line

let currentTrack = mediaController.getCurrentTrackFor(trackType, streamInfo.id);
expect(objectUtils.areEqual(currentTrack, enTrack)).to.be.false; // jshint ignore:line
expect(objectUtils.areEqual(currentTrack, enADTrack)).to.be.false; // jshint ignore:line
expect(objectUtils.areEqual(currentTrack, esTrack)).to.be.false; // jshint ignore:line

// call to setInitialMediaSettingsForType
mediaController.setInitialSettings(trackType, {
lang: 'en',
accessibility: ''
});
mediaController.setInitialMediaSettingsForType(trackType, streamInfo);

currentTrack = mediaController.getCurrentTrackFor(trackType, streamInfo.id);
expect(objectUtils.areEqual(currentTrack, enTrack)).to.be.true; // jshint ignore:line
});

it('should check initial media settings to choose initial track with a lang and accessibility', function () {
mediaController.addTrack(enTrack);
mediaController.addTrack(enADTrack);
mediaController.addTrack(esTrack);

let trackList = mediaController.getTracksFor(trackType, streamInfo.id);
expect(trackList).to.have.lengthOf(3);
expect(objectUtils.areEqual(trackList[0], enTrack)).to.be.true; // jshint ignore:line
expect(objectUtils.areEqual(trackList[1], enADTrack)).to.be.true; // jshint ignore:line
expect(objectUtils.areEqual(trackList[2], esTrack)).to.be.true; // jshint ignore:line

let currentTrack = mediaController.getCurrentTrackFor(trackType, streamInfo.id);
expect(objectUtils.areEqual(currentTrack, enTrack)).to.be.false; // jshint ignore:line
expect(objectUtils.areEqual(currentTrack, enADTrack)).to.be.false; // jshint ignore:line
expect(objectUtils.areEqual(currentTrack, esTrack)).to.be.false; // jshint ignore:line

// call to setInitialMediaSettingsForType
mediaController.setInitialSettings(trackType, {
lang: 'en',
accessibility: 'description'
});
mediaController.setInitialMediaSettingsForType(trackType, streamInfo);

currentTrack = mediaController.getCurrentTrackFor(trackType, streamInfo.id);
expect(objectUtils.areEqual(currentTrack, enADTrack)).to.be.true; // jshint ignore:line
});

it('should check initial media settings to choose initial accessibility track where media has no accessibility for requested language', function () {
mediaController.addTrack(enTrack);
mediaController.addTrack(enADTrack);
mediaController.addTrack(esTrack);

let trackList = mediaController.getTracksFor(trackType, streamInfo.id);
expect(trackList).to.have.lengthOf(3);
expect(objectUtils.areEqual(trackList[0], enTrack)).to.be.true; // jshint ignore:line
expect(objectUtils.areEqual(trackList[1], enADTrack)).to.be.true; // jshint ignore:line
expect(objectUtils.areEqual(trackList[2], esTrack)).to.be.true; // jshint ignore:line

let currentTrack = mediaController.getCurrentTrackFor(trackType, streamInfo.id);
expect(objectUtils.areEqual(currentTrack, enTrack)).to.be.false; // jshint ignore:line
expect(objectUtils.areEqual(currentTrack, enADTrack)).to.be.false; // jshint ignore:line
expect(objectUtils.areEqual(currentTrack, esTrack)).to.be.false; // jshint ignore:line

// call to setInitialMediaSettingsForType
mediaController.setInitialSettings(trackType, {
lang: 'es',
accessibility: 'description'
});
mediaController.setInitialMediaSettingsForType(trackType, streamInfo);

currentTrack = mediaController.getCurrentTrackFor(trackType, streamInfo.id);
expect(objectUtils.areEqual(currentTrack, esTrack)).to.be.true; // jshint ignore:line
});

});

describe('Initial Track Selection', function () {
Expand Down

0 comments on commit b513d27

Please sign in to comment.