%PDF- %PDF-
Direktori : /var/www/projetos/suporte.iigd.com.br/plugins/glpiinventory/lib/lazy.js-0.5.1/spec/ |
Current File : //var/www/projetos/suporte.iigd.com.br/plugins/glpiinventory/lib/lazy.js-0.5.1/spec/memoize_spec.js |
describe('memoize', function() { it('only iterates as far as it needs', function() { var visited = []; var sequence = Lazy([1, 2, 3, 4, 5]).map(function(x) { visited.push(x); return x; }); var memoized = sequence.memoize(); expect(memoized.get(0)).toEqual(1); expect(visited).toEqual([1]); expect(memoized.get(1)).toEqual(2); expect(visited).toEqual([1, 2]); expect(memoized.take(3)).toComprise([1, 2, 3]); expect(visited).toEqual([1, 2, 3]); // Ensure iterating over memoized again doesn't re-trigger side effects. visited.length = 0; expect(memoized.take(2)).toComprise([1, 2]); expect(visited).toEqual([]); // Reading one more from the sequence should result in 1 more side effect. visited.length = 0; expect(memoized.take(4)).toComprise([1, 2, 3, 4]); expect(visited).toEqual([4]); // Make sure actually iterating to the end doesn't cause any issues. visited.length = 0; expect(memoized).toComprise([1, 2, 3, 4, 5]); expect(visited).toEqual([5]); // Just for funsies. visited.length = 0; expect(memoized.map(Lazy.identity)).toComprise([1, 2, 3, 4, 5]); expect(visited).toEqual([]); }); it('works just fine on empty sequences', function() { expect(Lazy([]).memoize()).toComprise([]); }); it('works just fine on generated sequences', function() { var numbers = Lazy.generate(Math.random).memoize().take(3); }); });