miércoles, 24 de junio de 2015

List In Javascript

I've finished my new pet project: lists with fluent api and like a linq operations. It lives here
It appeared as a code kata, but it finished like a little library.

some tests

 
it("Given different lists with numbers when call zip method, return a list with zipped elements", function(){
   var numbers = new List([1,3]);
   var result = numbers.zip(new List([2,4,6]));
   expect(result.isEqual(new List([1,2,3,4,6]))).to.be(true);
});

it("Given list with numbers when call skip method then Ignores the specified number of items and returns a sequence starting at the item after the last skipped item (if any)", function(){
   var numbers = new List([1,2,3,4,5,6,7,8]);
   var result = numbers.skip(3);
   expect(result.isEqual(new List([4,5,6,7,8]))).to.be(true);
});

it("Given list with numbers when call apply condition with fluent api", function(){
   var result = new List([1,2,4,3,5,3,7,9])
                    .where(function(x){ return x > 1})
                    .where(function(x){ return x < 5});
    expect(result.isEqual(new List([2,4,3,3]))).to.be(true);
});

describe(".orderBy()", function(){
   it("Given list with numbers when call orderAscending method then returns an list ordered", function(){
      var numbers = new List([{number:5, letra:'e'},{number:3, letra:'q'},{number:1, letra:'a'},{number:9, letra:'w'},{number:4, letra:'r'},{number:7, letra:'t'}]);
      var result = numbers.orderBy(function(x, y){
         return (x.number - y.number);
});
    expect(result.isEqual(new List([{number:1, letra:'a'},{number:3, letra:'q'},{number:4, letra:'r'},{number:5, letra:'e'},{number:7, letra:'t'},{number:9, letra:'w'}])))
.to.be(true);
    });
});