relu-core
Version:
82 lines (81 loc) • 2.15 kB
JavaScript
var should = require("should");
var rp = require("../");
var checkRefs = require("./checkRefs");
describe("ordered", function() {
it("should order the array", checkRefs(function() {
var x = rp.variable([1,4,5,3,2]);
var z = rp.variable(1);
var y = x.ordered(function(a, b) {
a = a();
b = b();
if(a < b) return -1 * z();
if(b < a) return 1 * z();
return 0;
});
y.isWritable().should.be.eql(false);
y(0).isWritable().should.be.eql(true);
y().should.be.eql([1,2,3,4,5]);
x.push(0);
y().should.be.eql([0,1,2,3,4,5]);
x.push(6);
y().should.be.eql([0,1,2,3,4,5,6]);
x.unshift(3.5);
y().should.be.eql([0,1,2,3,3.5,4,5,6]);
x.splice(2, 2);
y().should.be.eql([0,1,2,3,3.5,6]);
// x is [3.5, 1, 3, 2, 0, 6]
z.set(-1);
y().should.be.eql([6,3.5,3,2,1,0]);
x(2).set(10);
y().should.be.eql([10,6,3.5,2,1,0]);
x(2).set(-10);
y().should.be.eql([6,3.5,2,1,0,-10]);
x(2).set(1.5);
y().should.be.eql([6,3.5,2,1.5,1,0]);
x.set([1,2,3,6,5,4]);
y().should.be.eql([6,5,4,3,2,1]);
z.set(1);
y().should.be.eql([1,2,3,4,5,6]);
var x4 = x(4);
var x5 = x(5);
x4.remove();
x5.remove();
y().should.be.eql([1,2,3,6]);
x().length.should.be.eql(4);
x(3).remove();
y().should.be.eql([1,2,3]);
x.push(7);
x.push(8);
y().should.be.eql([1,2,3,7,8]);
x(2).remove();
y().should.be.eql([1,2,7,8]);
x.push(0);
y().should.be.eql([0,1,2,7,8]);
x.shift();
y().should.be.eql([0,2,7,8]);
x.push(x.shift());
x.push(x.shift());
x.push(x.shift());
x.unshift(x.pop());
x.unshift(x.pop());
x.unshift(x.pop());
x.unshift(x.pop());
y().should.be.eql([0,2,7,8]);
}));
it.only("should order a mapped array", checkRefs(function() {
var x = rp.variable([1,3,2,4,6,7,5]);
var z = rp.variable(2);
var y = x.map(function(x) {
return x * z();
}).ordered();
y().should.be.eql([2,4,6,8,10,12,14]);
z.set(1);
y().should.be.eql([1,2,3,4,5,6,7]);
x.pop();
y().should.be.eql([1,2,3,4,6,7]);
x.pop();
y().should.be.eql([1,2,3,4,6]);
x.pop();
y().should.be.eql([1,2,3,4]);
}));
});