Skip to content

Commit b28d879

Browse files
authored
Merge pull request #1 from ProgerPapka/feature/new-task
Add task with closure
2 parents 0f86fa9 + dea35e1 commit b28d879

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

src/core.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@ function isBinary(n) {}
1919
//Напишите функцию, которая находит N-е число Фибоначчи
2020
function fibonacci(n) {}
2121

22+
/** Напишите функцию, которая принимает начальное значение и функцию операции
23+
* и возвращает функцию - выполняющую эту операцию.
24+
* Если функция операции (operatorFn) не задана - по умолчанию всегда
25+
* возвращается начальное значение (initialValue)
26+
* @param initialValue
27+
* @param operatorFn - (storedValue, newValue) => {operation}
28+
* @example
29+
* const sumFn = getOperationFn(10, (a,b) => a + b);
30+
* console.log(sumFn(5)) - 15
31+
* console.log(sumFn(3)) - 18
32+
*/
33+
function getOperationFn(initialValue, operatorFn) {}
34+
2235
module.exports = {
2336
isInteger,
2437
even,
@@ -27,4 +40,5 @@ module.exports = {
2740
factorial,
2841
isBinary,
2942
fibonacci,
43+
getOperationFn,
3044
};

src/core.spec.js

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var assert = require('assert'),
1+
const assert = require('assert'),
22
core = require('./core');
33

44
describe('Задания core js', () => {
@@ -14,7 +14,10 @@ describe('Задания core js', () => {
1414

1515
describe('#even', () => {
1616
it('Возвращает корректный массив', () => {
17-
assert.deepEqual(core.even(), [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]);
17+
assert.deepStrictEqual(
18+
core.even(),
19+
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
20+
);
1821
});
1922
});
2023

@@ -61,4 +64,25 @@ describe('Задания core js', () => {
6164
assert.equal(core.fibonacci(10), 55);
6265
});
6366
});
67+
68+
describe('#getOperationFn', () => {
69+
it('Возвращает функцию', () => {
70+
const sumFn = core.getOperationFn(-1, (a, b) => a + b);
71+
assert.ok(typeof sumFn === 'function');
72+
});
73+
74+
it('Сохраняет внутреннее значение и применяет операцию', () => {
75+
const multFn = core.getOperationFn(-1, (a, b) => a * b);
76+
assert.strictEqual(multFn(-1), 1);
77+
assert.strictEqual(multFn(4), 4);
78+
assert.strictEqual(multFn(2), 8);
79+
});
80+
81+
it('По умолчанию всегда возвращает начальное значение, если нет operatorFn', () => {
82+
const staticFn = core.getOperationFn(-1);
83+
assert.strictEqual(staticFn(-1), -1);
84+
assert.strictEqual(staticFn(7), -1);
85+
assert.strictEqual(staticFn(0), -1);
86+
});
87+
});
6488
});

0 commit comments

Comments
 (0)