test('map should support iterall / iterable ', t => { var a = mobx.map({ a: 1, b: 2 }) function leech(iter) { var values = []; do { var v = iter.next(); if (!v.done) values.push(v.value); } while (!v.done) return values; } t.equal(iterall.isIterable(a), true) t.deepEqual(leech(iterall.getIterator(a)), [ ["a", 1], ["b", 2] ]) t.deepEqual(leech(a.entries()), [ ["a", 1], ["b", 2] ]) t.deepEqual(leech(a.keys()), ["a", "b"]) t.deepEqual(leech(a.values()), [1, 2]) t.end() })
test('array should support iterall / iterable ', t => { var a = observable([1,2,3]) t.equal(iterall.isIterable(a), true); t.equal(iterall.isArrayLike(a), true); var values = []; iterall.forEach(a, v => values.push(v)) t.deepEqual(values, [1,2,3]) var iter = iterall.getIterator(a) t.deepEqual(iter.next(), { value: 1, done: false }) t.deepEqual(iter.next(), { value: 2, done: false }) t.deepEqual(iter.next(), { value: 3, done: false }) t.deepEqual(iter.next(), { value: undefined, done: true }) a.replace([]) iter = iterall.getIterator(a) t.deepEqual(iter.next(), { value: undefined, done: true }) t.end() })