shaka-player
Version:
DASH/EME video player library
117 lines (107 loc) • 3.62 kB
JavaScript
/*! @license
* Shaka Player
* Copyright 2016 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
describe('Id3Utils', () => {
const Id3Utils = shaka.util.Id3Utils;
const Id3Generator = shaka.test.Id3Generator;
const BufferUtils = shaka.util.BufferUtils;
it('no valid data produces empty output', () => {
expect(Id3Utils.getID3Frames(new Uint8Array([]))).toEqual([]);
});
it('parse a TXXX frame', () => {
const txxxValue = new Uint8Array([3, 65, 0, 83, 104, 97, 107, 97]);
const txxxFrame = Id3Generator.generateId3Frame('TXXX', txxxValue);
const txxxID3 = Id3Generator.generateId3(txxxFrame);
const expectedID3 = [
{
key: 'TXXX',
description: 'A',
data: 'Shaka',
},
];
expect(Id3Utils.getID3Frames(txxxID3)).toEqual(expectedID3);
});
it('parse a TXXX frame with extended header', () => {
const txxxValue = new Uint8Array([3, 65, 0, 83, 104, 97, 107, 97]);
const txxxFrame = Id3Generator.generateId3Frame('TXXX', txxxValue);
const txxxID3 = Id3Generator.generateId3(txxxFrame, true);
const expectedID3 = [
{
key: 'TXXX',
description: 'A',
data: 'Shaka',
},
];
expect(Id3Utils.getID3Frames(txxxID3)).toEqual(expectedID3);
});
it('parse a TCOP frame', () => {
const tcopValue = new Uint8Array(
[3, 83, 104, 97, 107, 97, 32, 50, 48, 49, 54]);
const tcopFrame = Id3Generator.generateId3Frame('TCOP', tcopValue);
const tcopID3 = Id3Generator.generateId3(tcopFrame);
const expectedID3 = [
{
key: 'TCOP',
description: '',
data: 'Shaka 2016',
},
];
expect(Id3Utils.getID3Frames(tcopID3)).toEqual(expectedID3);
});
it('parse a WXXX frame', () => {
const wxxxValue = new Uint8Array(
[3, 65, 0, 103, 111, 111, 103, 108, 101, 46, 99, 111, 109]);
const wxxxFrame = Id3Generator.generateId3Frame('WXXX', wxxxValue);
const wxxxID3 = Id3Generator.generateId3(wxxxFrame);
const expectedID3 = [
{
key: 'WXXX',
description: 'A',
data: 'google.com',
},
];
expect(Id3Utils.getID3Frames(wxxxID3)).toEqual(expectedID3);
});
it('parse a WCOP frame', () => {
const wcopValue = new Uint8Array(
[103, 111, 111, 103, 108, 101, 46, 99, 111, 109]);
const wcopFrame = Id3Generator.generateId3Frame('WCOP', wcopValue);
const wcopID3 = Id3Generator.generateId3(wcopFrame);
const expectedID3 = [
{
key: 'WCOP',
description: '',
data: 'google.com',
},
];
expect(Id3Utils.getID3Frames(wcopID3)).toEqual(expectedID3);
});
it('parse a PRIV frame', () => {
const privValue = new Uint8Array([65, 0, 83, 104, 97, 107]);
const privFrame = Id3Generator.generateId3Frame('PRIV', privValue);
const privID3 = Id3Generator.generateId3(privFrame);
const expectedID3 = [
{
key: 'PRIV',
description: 'A',
data: BufferUtils.toArrayBuffer(new Uint8Array([83, 104, 97, 107])),
},
];
expect(Id3Utils.getID3Frames(privID3)).toEqual(expectedID3);
});
it('parse an unknown frame', () => {
const unknownValue = new Uint8Array([83, 104, 97, 107]);
const unknownFrame = Id3Generator.generateId3Frame('XXXX', unknownValue);
const unknownID3 = Id3Generator.generateId3(unknownFrame);
const expectedID3 = [
{
key: 'XXXX',
description: '',
data: BufferUtils.toArrayBuffer(new Uint8Array([83, 104, 97, 107])),
},
];
expect(Id3Utils.getID3Frames(unknownID3)).toEqual(expectedID3);
});
});