Skip to content

Commit

Permalink
#201 Add WavPack/DSD unit test.
Browse files Browse the repository at this point in the history
Moved wavpack samples to wavpack sub-directory.
  • Loading branch information
Borewit committed Apr 13, 2019
1 parent 709f422 commit 210bbac
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 28 deletions.
Binary file added test/samples/wavpack/DSD128.wv
Binary file not shown.
2 changes: 1 addition & 1 deletion test/test-comment-mapping.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ describe("Mapping of common comment tag", () => {

it("WavPack / APEv2", () => {

const filePath = path.join(samples, "MusicBrainz - Beth Hart - Sinner's Prayer.wv");
const filePath = path.join(samples, 'wavpack', "MusicBrainz - Beth Hart - Sinner's Prayer.wv");

// Run with default options
return mm.parseFile(filePath, {native: true}).then(metadata => {
Expand Down
76 changes: 51 additions & 25 deletions test/test-file-wavpack.ts
Original file line number Diff line number Diff line change
@@ -1,30 +1,56 @@

import {assert} from "chai";
import * as path from "path";
import {Parsers} from './metadata-parsers';
import { assert } from 'chai';
import * as path from 'path';
import { Parsers } from './metadata-parsers';

const t = assert;
describe("Parse WavPack (audio/x-wavpack)", () => {

const samplePath = path.join(__dirname, 'samples');
const wv1 = path.join(samplePath, "MusicBrainz - Beth Hart - Sinner's Prayer.wv");

function checkFormat(format) {
t.strictEqual(format.dataformat, 'WavPack', 'format.dataformat');
t.deepEqual(format.tagTypes, ['APEv2'], 'format.tagTypes');
t.approximately(format.duration, 2.123, 1 / 1000, "format.duration");
}

function checkCommon(common) {
t.strictEqual(common.title, "Sinner's Prayer", "common.title");
t.deepEqual(common.artists, ['Beth Hart', 'Joe Bonamassa'], "common.artist");
}

Parsers.forEach(parser => {
it(parser.description, () => {
return parser.initParser(wv1, 'audio/x-wavpack', {native: true}).then(metadata => {
checkFormat(metadata.format);
checkCommon(metadata.common);
describe('Parse WavPack (audio/x-wavpack)', () => {

const wavpackSamplePath = path.join(__dirname, 'samples', 'wavpack');

describe('codec: WavPack', () => {

function checkFormat(format) {
t.strictEqual(format.dataformat, 'WavPack', 'format.dataformat');
t.deepEqual(format.tagTypes, ['APEv2'], 'format.tagTypes');
t.approximately(format.duration, 2.123, 1 / 1000, 'format.duration');
t.strictEqual(format.codecProfile, 'PCM', 'format.codecProfile');
}

function checkCommon(common) {
t.strictEqual(common.title, 'Sinner\'s Prayer', 'common.title');
t.deepEqual(common.artists, ['Beth Hart', 'Joe Bonamassa'], 'common.artist');
}

const wv1 = path.join(wavpackSamplePath, 'MusicBrainz - Beth Hart - Sinner\'s Prayer.wv');

Parsers.forEach(parser => {
it(parser.description, () => {
return parser.initParser(wv1, 'audio/x-wavpack', {native: true}).then(metadata => {
checkFormat(metadata.format);
checkCommon(metadata.common);
});
});
});
});

describe('codec: DSD128', () => {

function checkFormat(format) {
t.strictEqual(format.dataformat, 'WavPack', 'format.dataformat');
t.strictEqual(format.codecProfile, 'DSD', 'format.codecProfile');
t.deepEqual(format.numberOfSamples, 564480, 'format.numberOfSamples');
// t.strictEqual(format.sampleRate, 5644800, 'format.sampleRate');
// t.strictEqual(format.duration, 0.1, 'format.duration');
t.deepEqual(format.tagTypes, [], 'format.tagTypes');
}

const wv1 = path.join(wavpackSamplePath, 'DSD128.wv');

Parsers.forEach(parser => {
it(parser.description, () => {
return parser.initParser(wv1, 'audio/x-wavpack', {native: true}).then(metadata => {
checkFormat(metadata.format);
});
});
});
});
Expand Down
2 changes: 1 addition & 1 deletion test/test-mime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ describe("MIME & extension mapping", () => {
});

it("should recognize WavPack", () => {
return testFileType("MusicBrainz - Beth Hart - Sinner's Prayer.wv", "WavPack");
return testFileType(path.join('wavpack', "MusicBrainz - Beth Hart - Sinner's Prayer.wv"), "WavPack");
});

it('should recognize SV7', () => {
Expand Down
2 changes: 1 addition & 1 deletion test/test-picard-parsing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ describe("Parsing of metadata saved by 'Picard' in audio files", () => {

it("should map WavPack / APEv2", () => {

const filePath = path.join(samplePath, "MusicBrainz - Beth Hart - Sinner's Prayer.wv");
const filePath = path.join(samplePath, 'wavpack', "MusicBrainz - Beth Hart - Sinner's Prayer.wv");

function checkFormat(format) {
t.strictEqual(format.duration, 2.1229931972789116, 'format.duration = 2.123 seconds');
Expand Down

0 comments on commit 210bbac

Please sign in to comment.