Skip to content

Commit d16c91e

Browse files
author
e.ziyatdinov
committed
feat: added 2 tasks
1 parent b28d879 commit d16c91e

File tree

2 files changed

+105
-0
lines changed

2 files changed

+105
-0
lines changed

src/core.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,40 @@ function fibonacci(n) {}
3232
*/
3333
function getOperationFn(initialValue, operatorFn) {}
3434

35+
/**
36+
* Напишите функцию создания генератора арифметической последовательности.
37+
* При ее вызове, она возвращает новую функцию генератор - generator().
38+
* Каждый вызов функции генератора возвращает следующий элемент последовательности.
39+
* Если начальное значение не передано то оно равно 0.
40+
* Если шаг не угазан, то по дефолту он равен 1.
41+
* Генераторов можно создать сколько угодно - они все независимые.
42+
*
43+
* @param {number} start - число с которого начинается последовательность
44+
* @param {number} step - число шаг полседовательности
45+
* @example
46+
* const generator = sequence(5, 2);
47+
* console.log(generator()); // 5
48+
* console.log(generator()); // 7
49+
* console.log(generator()); // 9
50+
*/
51+
function sequence(start, step) {}
52+
53+
/**
54+
* Напишите функцию deepEqual, которая принимает два значения
55+
* и возвращает true только в том случае, если они имеют одинаковое значение
56+
* или являются объектами с одинаковыми свойствами,
57+
* значения которых также равны при сравнении с рекурсивным вызовом deepEqual.
58+
* Учитывать специфичные объекты(такие как Date, RegExp итп) не обязательно
59+
*
60+
* @param {object} firstObject - первый объект
61+
* @param {object} secondObject - второй оббъект
62+
* @returns {boolean} - true если объекты равны(по сожержанию) иначе false
63+
* @example
64+
* deepEqual({arr: [22, 33], text: 'text'}, {arr: [22, 33], text: 'text'}) // true
65+
* deepEqual({arr: [22, 33], text: 'text'}, {arr: [22, 3], text: 'text2'}) // false
66+
*/
67+
function deepEqual(firstObject, secondObject) {}
68+
3569
module.exports = {
3670
isInteger,
3771
even,
@@ -41,4 +75,6 @@ module.exports = {
4175
isBinary,
4276
fibonacci,
4377
getOperationFn,
78+
sequence,
79+
deepEqual,
4480
};

src/core.spec.js

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,73 @@ describe('Задания core js', () => {
8585
assert.strictEqual(staticFn(0), -1);
8686
});
8787
});
88+
89+
describe('#sequence', () => {
90+
it('Возвращает функцию с шагом 1 и началом 0, если не переданы значения', () => {
91+
const generator = core.sequence();
92+
assert.equal(generator(), 0);
93+
assert.equal(generator(), 1);
94+
assert.equal(generator(), 2);
95+
});
96+
97+
it('Функция-генератор корректно генерирует значения начиная со start с шагом step', () => {
98+
const generator1 = core.sequence(10, 3);
99+
const generator2 = core.sequence(8, 2);
100+
assert.equal(generator1(), 10);
101+
assert.equal(generator1(), 13);
102+
assert.equal(generator2(), 8);
103+
assert.equal(generator1(), 16);
104+
assert.equal(generator2(), 10);
105+
});
106+
});
107+
108+
describe('#deepEqual', () => {
109+
it('Возвращает true если объекты равны', () => {
110+
assert.equal(
111+
core.deepEqual(
112+
{text: 'some text', count: 3, arr: [11, 22]},
113+
{text: 'some text', count: 3, arr: [11, 22]}
114+
),
115+
true
116+
);
117+
assert.equal(
118+
core.deepEqual(
119+
{obj: {count: 12}, value: null, flag: true},
120+
{obj: {count: 12}, value: null, flag: true}
121+
),
122+
true
123+
);
124+
assert.equal(
125+
core.deepEqual(
126+
{obj: {arr: ['a', 'b']}, value: undefined},
127+
{obj: {arr: ['a', 'b']}, value: undefined}
128+
),
129+
true
130+
);
131+
});
132+
133+
it('Возвращает false если объекты не равны', () => {
134+
assert.equal(
135+
core.deepEqual(
136+
{text: 'some text', count: 3, arr: [11, 22]},
137+
{text: 'some text1', count: 4, arr: [11, 22]}
138+
),
139+
false
140+
);
141+
assert.equal(
142+
core.deepEqual(
143+
{obj: {count: 12}, value: null, flag: true},
144+
{obj: {count: 22}, value: null, flag: false}
145+
),
146+
false
147+
);
148+
assert.equal(
149+
core.deepEqual(
150+
{obj: {arr: ['a', 'b']}, value: undefined},
151+
{obj: {arr: ['a', 'b']}, value: null}
152+
),
153+
false
154+
);
155+
});
156+
});
88157
});

0 commit comments

Comments
 (0)