import b from './b'; // curry const add = (x, y) => x + y; const curriedAdd = b.curry(add); const addThree = (x, y, z) => x + y + z; const curriedAddThree = b.curry(addThree); const addTen = b.curry(add)(10); console.assert(curriedAdd(3)(4) === 7, 'Unexpected result from curried function'); console.assert(addThree(1, 2, 3) === 6, 'Unexpected result from addThree(1, 2, 3)'); console.assert(curriedAddThree(1)(2)(3) === 6, 'Unexpected result from curried function, curriedAddThree(1)(2)(3)'); console.assert(curriedAddThree(1, 2, 3) === 6, 'Unexpected result from curried function, curriedAddThree(1, 2, 3)'); console.assert(addTen(5) === 15, 'Unexpected result from curried function, addTen(5)'); // pipe const addOne = (x) => x + 1; const double = (x) => x * 2; console.assert(b.pipe(addOne, double)(3) === 8, 'Unexpected result from pipe'); // compose console.assert(b.compose(double, addOne)(3) === 8, 'Unexpected result from compose'); const addTwo = (x) => x + 2; const half = (x) => x / 2; const composed = b.compose(addTwo, half); const piped = b.pipe(addTwo, half); console.assert(composed(1) === 2.5, 'Unexpected result from compose, composed'); console.assert(piped(1) === 1.5, 'Unexpected result from pipe, piped'); // identity console.assert(b.identity(5) === 5, 'Unexpected result from identity'); // match const matchDigits = b.match()(/\d+/g); console.assert(JSON.stringify(matchDigits('a1b2c3')) === JSON.stringify(['1', '2', '3']), 'Unexpected result from match'); // replace const censor = b.replace()(/badword/g, '****'); console.assert(censor('This is a badword in a sentence.') === 'This is a **** in a sentence.', 'Unexpected result from replace'); // filter const isEven = (x) => x % 2 === 0; const filterEvens = b.filter()(isEven); console.assert(JSON.stringify(filterEvens([1, 2, 3, 4])) === JSON.stringify([2, 4]), 'Unexpected result from filter'); // map const mapDoubles = b.map()(double); console.assert(JSON.stringify(mapDoubles([1, 2, 3])) === JSON.stringify([2, 4, 6]), 'Unexpected result from map'); // deepMap const nestedArray = [1, [2, [3, 4]], [5, 6]]; const nestedArray2 = [1, [2, [3, 4]], [5, 6, [7, 8, [9, 10]]]]; console.assert(JSON.stringify(b.deepMap()(double, nestedArray)) === JSON.stringify([2, [4, [6, 8]], [10, 12]]), 'Unexpected result from deepMap, nestedArray'); console.assert(JSON.stringify(b.deepMap()(double, nestedArray2)) === JSON.stringify([2, [4, [6, 8]], [10, 12, [14, 16, [18, 20]]]]), 'Unexpected result from deepMap, nestedArray2'); const nestedArray3 = [1, [2, [3, 4]], [5, 6, [7, 8, [9, 10]]]]; const filterLessThanFive = (x) => x < 5; const deepMapFilterLessThanFive = b.deepMap()(filterLessThanFive, nestedArray3); console.assert(JSON.stringify(deepMapFilterLessThanFive) === JSON.stringify([true, [true, [true, true]], [false, false, [false, false, [false, false]]]]), 'Unexpected result from deepMap, nestedArray3');