From e2aa82c22bb2b3f2a10b6e01df06b1c2dc190a6c Mon Sep 17 00:00:00 2001 From: Eric Martindale Date: Sun, 11 Oct 2020 02:11:55 -0400 Subject: [PATCH 1/3] Add Audio Test --- assets/audio/ring.mp3 | Bin 0 -> 36119 bytes package.json | 10 +++++--- tests/soundtrack.http.js | 6 ++--- tests/soundtrack.speaker.js | 44 ++++++++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 assets/audio/ring.mp3 create mode 100644 tests/soundtrack.speaker.js diff --git a/assets/audio/ring.mp3 b/assets/audio/ring.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..36200cd89d5969b57cf75965e7b7701a7c001e14 GIT binary patch literal 36119 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index e60b602..fd8aa9f 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,9 @@ "scripts": { "coverage": "nyc npm test", "report:coverage": "nyc report --reporter=text-lcov > reports/coverage.lcov && codecov", + "review:syntax": "semistandard types", "start": "node scripts/cli.js", - "test": "mocha tests" + "test": "npm run review:syntax && mocha tests" }, "keywords": [ "fabric", @@ -26,11 +27,14 @@ "license": "MIT", "dependencies": { "@fabric/core": "martindale/fabric#peering-wallet", - "blessed": "^0.1.81" + "@suldashi/lame": "^1.2.5", + "blessed": "^0.1.81", + "speaker": "^0.5.2" }, "devDependencies": { "codecov": "^3.8.0", "mocha": "^8.1.3", - "nyc": "^15.1.0" + "nyc": "^15.1.0", + "semistandard": "^14.2.3" } } diff --git a/tests/soundtrack.http.js b/tests/soundtrack.http.js index ba72539..98cb7a3 100644 --- a/tests/soundtrack.http.js +++ b/tests/soundtrack.http.js @@ -2,9 +2,9 @@ const assert = require('assert'); -describe('@fabric/soundtrack', function() { - describe('@services/http', function() { - it('should run', function() { +describe('@fabric/soundtrack', function () { + describe('@services/http', function () { + it('should run', function () { assert('ok'); }); }); diff --git a/tests/soundtrack.speaker.js b/tests/soundtrack.speaker.js new file mode 100644 index 0000000..aa5a1fb --- /dev/null +++ b/tests/soundtrack.speaker.js @@ -0,0 +1,44 @@ +'use strict'; + +const assert = require('assert'); + +const fs = require('fs'); +const lame = require('@suldashi/lame'); +const Speaker = require('speaker'); + +const settings = { + channels: 2, // 2 channels (left and right) + bitDepth: 16, // 16-bit samples + sampleRate: 44100, // 44,100 Hz sample rate +}; + +describe('@fabric/soundtrack', function () { + describe('@services/audio', function () { + it('can play a sound', function (done) { + const handle = fs.createReadStream('./assets/audio/ring.mp3'); + const decoder = new lame.Decoder({ + // input + channels: 2, + bitDepth: 16, + sampleRate: 44100, + + // output + bitRate: 128, + outSampleRate: 22050, + mode: lame.STEREO // STEREO (default), JOINTSTEREO, DUALCHANNEL or MONO + }); + + // Create the Speaker instance + const speaker = new Speaker(settings); + + handle.pipe(decoder); + decoder.pipe(speaker); + + assert('ok'); + + setTimeout(function () { + done(); + }, 1000); + }); + }); +}); From 0d7bbd72bec6a8362a22a7e53c7d7919c4d79d6b Mon Sep 17 00:00:00 2001 From: Eric Martindale Date: Sun, 11 Oct 2020 02:32:23 -0400 Subject: [PATCH 2/3] Disable Speaker test --- tests/soundtrack.speaker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/soundtrack.speaker.js b/tests/soundtrack.speaker.js index aa5a1fb..7b113ad 100644 --- a/tests/soundtrack.speaker.js +++ b/tests/soundtrack.speaker.js @@ -14,7 +14,7 @@ const settings = { describe('@fabric/soundtrack', function () { describe('@services/audio', function () { - it('can play a sound', function (done) { + xit('can play a sound', function (done) { const handle = fs.createReadStream('./assets/audio/ring.mp3'); const decoder = new lame.Decoder({ // input From 6308edcff2c444fb67142044c5802e39db20c308 Mon Sep 17 00:00:00 2001 From: Eric Martindale Date: Sun, 11 Oct 2020 02:40:10 -0400 Subject: [PATCH 3/3] Remove `speaker` dependency for Travis --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index fd8aa9f..ab66c47 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,7 @@ "dependencies": { "@fabric/core": "martindale/fabric#peering-wallet", "@suldashi/lame": "^1.2.5", - "blessed": "^0.1.81", - "speaker": "^0.5.2" + "blessed": "^0.1.81" }, "devDependencies": { "codecov": "^3.8.0",