import BasicTests from "helper/Basic"; import Noise from "Tone/source/Noise"; import SourceTests from "helper/SourceTests"; import OutputAudio from "helper/OutputAudio"; import CompareToFile from "helper/CompareToFile"; describe("Noise", function(){ //run the common tests BasicTests(Noise); SourceTests(Noise); it("matches a file", function(){ return CompareToFile(function(){ var noise = new Noise().toMaster(); noise.start(0.1).stop(0.2); }, "noise.wav", 9); }); context("Get/Set", function(){ it("can be constructed with an options object", function(){ var noise = new Noise({ "type" : "brown" }); expect(noise.type).to.equal("brown"); noise.dispose(); }); it("can set the playbackRate in the constructor", function(){ var noise = new Noise({ "playbackRate" : 2 }); expect(noise.playbackRate).to.equal(2); noise.dispose(); }); it("can set the playbackRate after the noise is started", function(){ return OutputAudio(function(){ var noise = new Noise().toMaster(); noise.start(); noise.playbackRate = 3; expect(noise.playbackRate).to.equal(3); }); }); }); context("Type", function(){ it("can be set to 3 noise types", function(){ var noise = new Noise(); var types = ["white", "brown", "pink"]; for (var i = 0; i < types.length; i++){ noise.type = types[i]; expect(noise.type).to.equal(types[i]); } noise.dispose(); }); it("cant set invalid type", function(){ var noise = new Noise(); expect(function(){ noise.type = "else"; }).to.throw(Error); noise.dispose(); }); it("outputs white noise", function(){ return OutputAudio(function(){ var noise = new Noise("white"); noise.toMaster(); noise.start(); }); }); it("outputs pink noise", function(){ return OutputAudio(function(){ var noise = new Noise("pink"); noise.toMaster(); noise.start(); }); }); it("outputs brown noise", function(){ return OutputAudio(function(){ var noise = new Noise("brown"); noise.toMaster(); noise.start(); }); }); it("can set the type after the noise is started", function(){ return OutputAudio(function(){ var noise = new Noise(); noise.toMaster(); noise.start(); noise.type = "brown"; }); }); }); });