105 lines
3.0 KiB
JavaScript
105 lines
3.0 KiB
JavaScript
|
|
||
|
var fs = require('fs');
|
||
|
var path = require('path');
|
||
|
var lame = require('../');
|
||
|
var assert = require('assert');
|
||
|
var fixtures = path.resolve(__dirname, 'fixtures');
|
||
|
var outputName = path.resolve(__dirname, 'output.wav');
|
||
|
|
||
|
describe('Decoder', function () {
|
||
|
|
||
|
describe('pipershut_lo.mp3', function () {
|
||
|
var title = 'The Burning of the Piper\'s Hut';
|
||
|
var artist = 'Tony Cuffe & Billy Jackson';
|
||
|
var album = 'Sae Will We Yet';
|
||
|
var year = '2003';
|
||
|
var comment = 'sample of full track';
|
||
|
var trackNumber = 8;
|
||
|
var genre = 88;
|
||
|
var filename = path.resolve(fixtures, 'pipershut_lo.mp3');
|
||
|
|
||
|
it('should emit "readable" events', function (done) {
|
||
|
var file = fs.createReadStream(filename);
|
||
|
var output = fs.createWriteStream(outputName);
|
||
|
var count = 0;
|
||
|
var decoder = new lame.Decoder();
|
||
|
decoder.on('readable', function () {
|
||
|
count++;
|
||
|
});
|
||
|
decoder.on('finish', function () {
|
||
|
assert(count > 0);
|
||
|
fs.unlinkSync(outputName);
|
||
|
done();
|
||
|
});
|
||
|
file.pipe(decoder).pipe(output);
|
||
|
});
|
||
|
|
||
|
it('should emit a single "format" event', function (done) {
|
||
|
var file = fs.createReadStream(filename);
|
||
|
var decoder = new lame.Decoder();
|
||
|
decoder.on('format', function (format) {
|
||
|
assert(format);
|
||
|
done();
|
||
|
});
|
||
|
file.pipe(decoder);
|
||
|
});
|
||
|
|
||
|
it('should emit a single "finish" event', function (done) {
|
||
|
var file = fs.createReadStream(filename);
|
||
|
var output = fs.createWriteStream(outputName);
|
||
|
var decoder = new lame.Decoder();
|
||
|
decoder.on('finish', done);
|
||
|
file.pipe(decoder).pipe(output);
|
||
|
});
|
||
|
|
||
|
it('should emit a single "end" event', function (done) {
|
||
|
var file = fs.createReadStream(filename);
|
||
|
var output = fs.createWriteStream(outputName);
|
||
|
var decoder = new lame.Decoder();
|
||
|
decoder.on('end', function () {
|
||
|
fs.unlinkSync(outputName);
|
||
|
done();
|
||
|
});
|
||
|
file.pipe(decoder).pipe(output);
|
||
|
});
|
||
|
|
||
|
it('should emit a single "id3v1" event', function (done) {
|
||
|
var file = fs.createReadStream(filename);
|
||
|
var decoder = new lame.Decoder();
|
||
|
decoder.on('id3v1', function (id3) {
|
||
|
assert.equal(title, id3.title);
|
||
|
assert.equal(artist, id3.artist);
|
||
|
assert.equal(album, id3.album);
|
||
|
assert.equal(year, id3.year);
|
||
|
assert.equal(comment, id3.comment);
|
||
|
assert.equal(trackNumber, id3.trackNumber);
|
||
|
assert.equal(genre, id3.genre);
|
||
|
done();
|
||
|
});
|
||
|
file.pipe(decoder);
|
||
|
|
||
|
// enable "flow"
|
||
|
decoder.resume();
|
||
|
});
|
||
|
|
||
|
it('should emit a single "id3v2" event', function (done) {
|
||
|
var file = fs.createReadStream(filename);
|
||
|
var decoder = new lame.Decoder();
|
||
|
decoder.on('id3v2', function (id3) {
|
||
|
assert.equal(title, id3.title);
|
||
|
assert.equal(artist, id3.artist);
|
||
|
assert.equal(album, id3.album);
|
||
|
assert.equal(year, id3.year);
|
||
|
assert.equal(comment, id3.comment);
|
||
|
done();
|
||
|
});
|
||
|
file.pipe(decoder);
|
||
|
|
||
|
// enable "flow"
|
||
|
decoder.resume();
|
||
|
});
|
||
|
|
||
|
});
|
||
|
|
||
|
});
|