UNPKG

relu-core

Version:
82 lines (81 loc) 2.15 kB
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]); })); });