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.
82 lines
2.2 KiB
82 lines
2.2 KiB
export const tests = [] |
|
const t = (f) => tests.push(f) |
|
|
|
t(({ eq }) => eq(adder([1, 2, 3, 4]), 10)) |
|
t(({ eq, ctx }) => |
|
// check that the code did use reduce properly |
|
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 }) => |
|
// check that the code did use reduce properly |
|
eq(ctx.reduceCalls[ctx.reduceCalls.length - 1], [9, 24, 7, 11, 3]) |
|
) |
|
t(({ eq }) => eq(adder([]), 0)) |
|
t(({ eq, ctx }) => |
|
// check that the code did use reduce properly |
|
eq(ctx.reduceCalls[ctx.reduceCalls.length - 1], []) |
|
) |
|
|
|
t(({ eq }) => eq(sumOrMul([29, 23, 3, 2, 25]), 135)) |
|
t(({ eq, ctx }) => |
|
// check that the code did use reduce properly |
|
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 }) => |
|
// check that the code did use reduce properly |
|
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 }) => |
|
// check that the code did use reduce properly |
|
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 }) => |
|
// check that the code did use reduce properly |
|
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 }) => |
|
// check that the code did use reduce properly |
|
eq(ctx.reduceCalls[ctx.reduceCalls.length - 1], ctx.fArr1) |
|
) |
|
|
|
t(({ eq, ctx }) => eq(funcExec(ctx.fArr2, 4), { result: 72, isOdd: true })) |
|
t(({ eq, ctx }) => |
|
// check that the code did use reduce properly |
|
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 } |
|
}
|
|
|