ladybird/Userland/Libraries/LibJS/Tests/functions/function-spread.js
2021-01-12 12:17:46 +01:00

38 lines
889 B
JavaScript

test("basic functionality", () => {
const sum = (a, b, c) => a + b + c;
const a = [1, 2, 3];
expect(sum(...a)).toBe(6);
expect(sum(1, ...a)).toBe(4);
expect(sum(...a, 10)).toBe(6);
const foo = (a, b, c) => c;
const o = { bar: [1, 2, 3] };
expect(foo(...o.bar)).toBe(3);
expect(foo(..."abc")).toBe("c");
});
test("spreading custom iterable", () => {
let o = {
[Symbol.iterator]() {
return {
i: 0,
next() {
if (this.i++ === 3) {
return { done: true };
}
return { value: this.i };
},
};
},
};
expect(Math.max(...o)).toBe(3);
});
test("spreading non iterable", () => {
expect(() => {
[...1];
}).toThrowWithMessage(TypeError, "1 is not iterable");
});