%PDF- %PDF-
| Direktori : /proc/self/root/home/infra/fusioninventory/lib/lazy.js-0.5.1/spec/ |
| Current File : //proc/self/root/home/infra/fusioninventory/lib/lazy.js-0.5.1/spec/es6_spec.js |
describe('support for ES6 features', function() {
describe('iterables', function() {
it('supports the iterable interface', function() {
var sequence = Lazy([1.1, 1.9, 2.5]).map(Math.round);
var result = [];
for (var x of sequence) {
result.push(x);
}
expect(result).toEqual([1, 2, 3]);
});
it('preserves laziness', function() {
var sideEffects = [];
var sequence = Lazy([1, 2, 3]).map(function(x) {
sideEffects.push('foo');
return x;
});
var result = [];
for (var e of sequence.take(2)) {
result.push(e);
}
expect(result).toEqual([1, 2]);
expect(sideEffects).toEqual(['foo', 'foo']);
});
});
describe('generators', function() {
var sequence = Lazy(function*() {
yield 1;
yield 2;
yield 3;
});
it('can wrap generators as sequences', function() {
expect(sequence).toBeInstanceOf(Lazy.Sequence);
});
it('can iterate over the generated output', function() {
expect(sequence).toComprise([1, 2, 3]);
});
it('can map, etc. over the result, same as any other sequence', function() {
sequence = sequence.map(increment);
expect(sequence).toComprise([2, 3, 4]);
});
});
describe('sets', function() {
var sequence = Lazy(new Set([1, 2, 2, 3, 3, 3]));
it('can wrap sets', function() {
expect(sequence).toComprise([1, 2, 3]);
});
it('includes index in iteration', function() {
var indexes = [];
sequence.each(function(e, i) { indexes.push(i); });
expect(indexes).toEqual([0, 1, 2]);
});
});
describe('maps', function() {
it('can wrap maps', function() {
var sequence = Lazy(new Map([['foo', 1], ['bar', 2]]));
expect(sequence).toComprise({foo: 1, bar: 2});
});
it('provides keys', function() {
var sequence = Lazy(new Map([['foo', 1], ['bar', 2]]));
expect(sequence.keys()).toComprise(['foo', 'bar']);
});
});
});