mirror of https://github.com/01-edu/public.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.8 KiB
68 lines
1.8 KiB
5 years ago
|
export const tests = []
|
||
|
const t = (f) => tests.push(f)
|
||
|
|
||
|
t(({ eq }) => eq(adder([1, 2, 3, 4]), 10))
|
||
|
t(({ eq, ctx }) =>
|
||
|
eq(ctx.reduceCalls[ctx.reduceCalls.length - 1], [1, 2, 3, 4]),
|
||
|
)
|
||
|
t(({ eq }) => eq(adder([9, 24, 7, 11, 3], 10), 64))
|
||
|
t(({ eq, ctx }) =>
|
||
|
eq(ctx.reduceCalls[ctx.reduceCalls.length - 1], [9, 24, 7, 11, 3]),
|
||
|
)
|
||
|
t(({ eq }) => eq(adder([]), 0))
|
||
|
t(({ eq, ctx }) => eq(ctx.reduceCalls[ctx.reduceCalls.length - 1], []))
|
||
|
|
||
|
t(({ eq }) => eq(sumOrMul([29, 23, 3, 2, 25]), 135))
|
||
|
t(({ eq, ctx }) =>
|
||
|
eq(ctx.reduceCalls[ctx.reduceCalls.length - 1], [29, 23, 3, 2, 25]),
|
||
|
)
|
||
|
t(({ eq }) => eq(sumOrMul([18, 17, 7, 13, 25], 12), 278))
|
||
|
t(({ eq, ctx }) =>
|
||
|
eq(ctx.reduceCalls[ctx.reduceCalls.length - 1], [18, 17, 7, 13, 25]),
|
||
|
)
|
||
|
t(({ eq }) => eq(sumOrMul([8, 16, 7, 0, 32]), 0))
|
||
|
t(({ eq, ctx }) =>
|
||
|
eq(ctx.reduceCalls[ctx.reduceCalls.length - 1], [8, 16, 7, 0, 32]),
|
||
|
)
|
||
|
t(({ eq }) => eq(sumOrMul([8, 16, 7, 0, 31]), 31))
|
||
|
t(({ eq, ctx }) =>
|
||
|
eq(ctx.reduceCalls[ctx.reduceCalls.length - 1], [8, 16, 7, 0, 31]),
|
||
|
)
|
||
|
|
||
|
t(({ eq, ctx }) => eq(funcExec(ctx.fArr1, 10), `result: [137]`))
|
||
|
t(({ eq, ctx }) => eq(ctx.reduceCalls[ctx.reduceCalls.length - 1], ctx.fArr1))
|
||
|
|
||
|
t(({ eq, ctx }) => eq(funcExec(ctx.fArr2, 4), { result: 72, isOdd: true }))
|
||
|
t(({ eq, ctx }) => eq(ctx.reduceCalls[ctx.reduceCalls.length - 1], ctx.fArr2))
|
||
|
|
||
|
Object.freeze(tests)
|
||
|
|
||
|
export const setup = () => {
|
||
|
const reduceCalls = []
|
||
|
const _reduce = Array.prototype.reduce
|
||
|
Array.prototype.reduce = function () {
|
||
|
reduceCalls.push(this)
|
||
|
return _reduce.apply(this, arguments)
|
||
|
}
|
||
|
|
||
|
const fArr1 = [
|
||
|
(x) => x + 2,
|
||
|
(x) => x ** 2,
|
||
|
(x) => x - 7,
|
||
|
(x) => `result: [${x}]`,
|
||
|
]
|
||
|
|
||
|
const fArr2 = [
|
||
|
(x) => x + 20,
|
||
|
(x) => x * 3,
|
||
|
(x) => {
|
||
|
return {
|
||
|
result: x,
|
||
|
isOdd: x % 2 === 0,
|
||
|
}
|
||
|
},
|
||
|
]
|
||
|
|
||
|
return { reduceCalls, fArr1, fArr2 }
|
||
|
}
|