Tone.js/test/source/UserMedia.js

107 lines
2.6 KiB
JavaScript
Raw Normal View History

2017-02-20 21:45:32 +00:00
define(["helper/Basic", "Tone/source/UserMedia", "Test", "Tone/source/Source"],
function (BasicTests, UserMedia, Test, Source) {
describe("UserMedia", function(){
//run the common tests
BasicTests(UserMedia);
context("Source Tests", function(){
it ("can connect the output", function(){
var extIn = new UserMedia();
extIn.connect(Test);
extIn.dispose();
});
it ("can be constructed with the input number", function(){
var extIn = new UserMedia();
extIn.dispose();
});
it ("can be constructed with an options object", function(){
var extIn = new UserMedia({
"volume" : -10,
"mute" : false
});
expect(extIn.volume.value).to.be.closeTo(-10, 0.1);
expect(extIn.mute).to.be.false;
extIn.dispose();
});
it ("indicates if the browser has UserMedia support", function(){
expect(UserMedia.supported).to.be.a.boolean;
});
});
//if it is a manual test (i.e. there is a person to 'allow' the microphone)
if (UserMedia.supported){
context("Opening and closing", function(){
//long timeout to give testers time to allow the microphone
this.timeout(100000);
it ("open returns a promise", function(done){
var extIn = new UserMedia();
var promise = extIn.open();
expect(promise).to.be.instanceOf(Promise);
promise.then(function(){
extIn.dispose();
done();
});
});
it ("can open an input", function(done){
var extIn = new UserMedia();
extIn.open().then(function(){
extIn.dispose();
done();
});
});
it ("is 'started' after media is open and 'stopped' otherwise", function(done){
var extIn = new UserMedia();
expect(extIn.state).to.equal("stopped");
extIn.open().then(function(){
expect(extIn.state).to.equal("started");
extIn.dispose();
done();
});
});
it ("has a label, group and device id when open", function(done){
var extIn = new UserMedia();
extIn.open().then(function(){
expect(extIn.deviceId).to.be.a("string");
expect(extIn.groupId).to.be.a("string");
expect(extIn.label).to.be.a("string");
extIn.dispose();
done();
});
});
it ("can close an input", function(done){
var extIn = new UserMedia();
extIn.open().then(function(){
extIn.close();
extIn.dispose();
done();
});
});
it ("can enumerate devices", function(done){
var extIn = new UserMedia();
extIn.enumerateDevices().then(function(devices){
expect(devices).to.be.instanceOf(Array);
extIn.dispose();
done();
});
});
});
}
});
});