UNPKG

asclasit

Version:

ASync CLasses + ASync ITerators

96 lines (82 loc) 3.11 kB
const $ = require('./acc'); test('$.accumulate: null', () => { expect($.accumulate(null)).toBe(null); }); test('$.accumulate: not object', () => { expect($.accumulate(1)).toBe(1); }); test('$.accumulate: object', () => { const src = Object.setPrototypeOf({a: 1}, null); const acc = $.accumulate(src, {b: 2}); expect(acc).toBe(src); expect(acc).toEqual({a: 1, b: 2}); }); test('$.accumulate: Object', () => { const src = {a: 1}; const acc = $.accumulate(src, {b: 2}); expect(acc).toBe(src); expect(acc).toEqual({a: 1, b: 2}); }); test('$.accumulate: Date', () => { const src = new Date('2020-02-01'); const acc = $.accumulate(src, '2020-01-01', 1000); expect(acc).toBe(src); expect(acc).toEqual(new Date('2020-01-01T00:00:01Z')); }); test('$.accumulate: now Date', () => { const src = new Date('2020-02-01'); const acc = $.accumulate(src, null, 1000); expect(acc).toBe(src); expect(acc.constructor).toBe(Date); }); test('$.accumulate: other ctor', () => { const src = new SyntaxError(); const acc = $.accumulate(src, {b: 2}); expect(acc).toBe(src); expect(Object.entries(acc)).toEqual([['b', 2]]); }); test('$.accumulate: Object key', () => { const src = {a: 1}; const acc = $.accumulate(src, 'b', 'c', {d: 3}, 'b'); expect(acc).toBe(src); expect(acc).toEqual({a: 1, b: 2, c: 1, d: 3}); }); test('$.accumulate: Array', () => { const src = [1, 2, 'aaa']; const acc = $.accumulate(src, [3, 4], 'bbb', 5); expect(acc).toBe(src); expect(acc).toEqual([1, 2, 'aaa', 3, 4, 'bbb', 5]); }); test('$.accumulate: Set', () => { const src = new Set([1, 2]); const acc = $.accumulate(src, [3, 4], 'sss', 5); expect(acc).toBe(src); expect(Array.from(acc)).toEqual([1, 2, 3, 4, 'sss', 5]); }); test('$.accumulate: Map', () => { const src = new Map([[1, 1], [2, 2]]); const acc = $.accumulate(src, [3, 4], 5, 'aaa'); expect(acc).toBe(src); expect(Array.from(acc)).toEqual([[1, 1], [2, 2], [3, true], [4, true], [5, true], ['aaa', true]]); }); test('$.accInit: initializers', () => { expect($.accInit.get(null)()).toEqual({}); expect($.accInit.get(Object)()).toEqual({}); expect($.accInit.get(Array)()).toEqual([]); expect($.accInit.get(Set)() instanceof Set).toEqual(true); expect($.accInit.get(Map)() instanceof Map).toEqual(true); expect($.accInit.get(WeakSet)() instanceof WeakSet).toEqual(true); expect($.accInit.get(WeakMap)() instanceof WeakMap).toEqual(true); expect($.accInit.get(Date)() instanceof Date).toEqual(true); }); test('$.initAcc: initialize accumulator from parameter', () => { expect($.initAcc(new Error())).toEqual({}); expect($.initAcc(null) instanceof Set).toBe(true); expect($.initAcc({x: 1})).toEqual({}); expect($.initAcc([1, 2, 3])).toEqual([]); expect($.initAcc(new Set([1, 2])) instanceof Set).toBe(true); expect($.initAcc(new Map([[1, 2]])) instanceof Map).toBe(true); expect($.initAcc(new WeakSet([{}, {}])) instanceof WeakSet).toBe(true); expect($.initAcc(new WeakMap([[{}, {}]])) instanceof WeakMap).toBe(true); expect($.initAcc(new Date()) instanceof Date).toBe(true); });