2017-02-20 21:45:32 +00:00
|
|
|
define(["helper/Basic", "Tone/source/UserMedia", "Test", "Tone/source/Source"],
|
|
|
|
function (BasicTests, UserMedia, Test, Source) {
|
2016-12-17 21:26:27 +00:00
|
|
|
|
|
|
|
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({
|
2017-04-30 18:25:44 +00:00
|
|
|
"volume" : -10,
|
|
|
|
"mute" : false
|
2016-12-17 21:26:27 +00:00
|
|
|
});
|
|
|
|
expect(extIn.volume.value).to.be.closeTo(-10, 0.1);
|
2017-04-30 18:25:44 +00:00
|
|
|
expect(extIn.mute).to.be.false;
|
2016-12-17 21:26:27 +00:00
|
|
|
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)
|
2017-04-30 17:49:04 +00:00
|
|
|
if (UserMedia.supported){
|
2016-12-17 21:26:27 +00:00
|
|
|
|
|
|
|
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();
|
2017-04-30 17:49:04 +00:00
|
|
|
});
|
2016-12-17 21:26:27 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
it ("can open an input", function(done){
|
|
|
|
var extIn = new UserMedia();
|
|
|
|
extIn.open().then(function(){
|
|
|
|
extIn.dispose();
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2017-04-30 18:25:44 +00:00
|
|
|
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();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2016-12-17 21:26:27 +00:00
|
|
|
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();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
});
|