mirror of
https://github.com/Tonejs/Tone.js
synced 2024-11-16 16:48:00 +00:00
95 lines
No EOL
2.4 KiB
JavaScript
95 lines
No EOL
2.4 KiB
JavaScript
define(["Tone/control/CtrlInterpolate", "helper/Basic"], function (CtrlInterpolate, Basic) {
|
|
|
|
describe("CtrlInterpolate", function(){
|
|
|
|
Basic(CtrlInterpolate);
|
|
|
|
context("API", function(){
|
|
|
|
it ("can be constructed with an array and index", function(){
|
|
var terp = new CtrlInterpolate([0, 1, 2, 3], 2);
|
|
expect(terp.values).to.deep.equal([0, 1, 2, 3]);
|
|
expect(terp.index).to.equal(2);
|
|
terp.dispose();
|
|
});
|
|
|
|
it ("can be constructed with an object", function(){
|
|
var terp = new CtrlInterpolate({
|
|
values : [1, 2, 3],
|
|
index : 1,
|
|
});
|
|
expect(terp.values).to.deep.equal([1, 2, 3]);
|
|
expect(terp.index).to.equal(1);
|
|
terp.dispose();
|
|
});
|
|
|
|
it ("can set the index", function(){
|
|
var terp = new CtrlInterpolate([]);
|
|
terp.index = 4;
|
|
expect(terp.index).to.equal(4);
|
|
terp.index = 0;
|
|
expect(terp.index).to.equal(0);
|
|
terp.dispose();
|
|
});
|
|
});
|
|
|
|
context("Interpolation", function(){
|
|
|
|
it ("can be done over an array of numbers", function(){
|
|
var terp = new CtrlInterpolate([3, 2, 1, 0], 0);
|
|
expect(terp.value).to.equal(3);
|
|
terp.index = 1;
|
|
expect(terp.value).to.equal(2);
|
|
terp.index = 1.5;
|
|
expect(terp.value).to.equal(1.5);
|
|
terp.index = 2.75;
|
|
expect(terp.value).to.equal(0.25);
|
|
terp.dispose();
|
|
});
|
|
|
|
|
|
it ("can be done over an array of arrays", function(){
|
|
var terp = new CtrlInterpolate([[1, 2, 3], [4, 4, 4]], 0.25);
|
|
expect(terp.value).to.deep.equal([1.75, 2.5, 3.25]);
|
|
terp.index = 1.5;
|
|
expect(terp.value).to.deep.equal([4, 4, 4]);
|
|
terp.dispose();
|
|
});
|
|
|
|
it ("can be done over an array of objects", function(){
|
|
var terp = new CtrlInterpolate([{
|
|
"a" : 4.4,
|
|
"b" : 2.2
|
|
}, {
|
|
"a" : 4.4,
|
|
"b" : 2.2
|
|
}], 0.9);
|
|
expect(terp.value).to.deep.equal({
|
|
a: 4.4,
|
|
b: 2.2
|
|
});
|
|
terp.dispose();
|
|
});
|
|
|
|
it ("can evaluate time", function(){
|
|
var terp = new CtrlInterpolate(["4n", "8n", "16n"], 0.25);
|
|
expect(terp.value).to.equal(0.4375);
|
|
terp.index = 1.5;
|
|
expect(terp.value).to.equal(0.1875);
|
|
terp.dispose();
|
|
});
|
|
|
|
it ("can evaluate notes", function(){
|
|
var terp = new CtrlInterpolate(["C4", "C8"], 0.5);
|
|
expect(terp.value).to.be.closeTo(2223.81730, 0.01);
|
|
terp.dispose();
|
|
});
|
|
|
|
it ("mix types", function(){
|
|
var terp = new CtrlInterpolate(["4n", 4], 0.25);
|
|
expect(terp.value).to.equal(1.375);
|
|
terp.dispose();
|
|
});
|
|
});
|
|
});
|
|
}); |