mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-05-04 18:23:39 +00:00
The optional 2nd and 3rd arguments are not yet implemented. This assumes that `this` is the Array constructor and doesn't yet implement the more general behavior in the ES6 spec that allows transferring this method to other constructors.
68 lines
1.9 KiB
JavaScript
68 lines
1.9 KiB
JavaScript
test("length is 1", () => {
|
|
expect(Array.from).toHaveLength(1);
|
|
});
|
|
|
|
describe("normal behavior", () => {
|
|
test("empty array", () => {
|
|
var a = Array.from([]);
|
|
expect(a instanceof Array).toBeTrue();
|
|
expect(a).toHaveLength(0);
|
|
});
|
|
|
|
test("empty string", () => {
|
|
var a = Array.from("");
|
|
expect(a instanceof Array).toBeTrue();
|
|
expect(a).toHaveLength(0);
|
|
});
|
|
|
|
test("non-empty array", () => {
|
|
var a = Array.from([5, 8, 1]);
|
|
expect(a instanceof Array).toBeTrue();
|
|
expect(a).toHaveLength(3);
|
|
expect(a[0]).toBe(5);
|
|
expect(a[1]).toBe(8);
|
|
expect(a[2]).toBe(1);
|
|
});
|
|
|
|
test("non-empty string", () => {
|
|
var a = Array.from("what");
|
|
expect(a instanceof Array).toBeTrue();
|
|
expect(a).toHaveLength(4);
|
|
expect(a[0]).toBe("w");
|
|
expect(a[1]).toBe("h");
|
|
expect(a[2]).toBe("a");
|
|
expect(a[3]).toBe("t");
|
|
});
|
|
|
|
test("shallow array copy", () => {
|
|
var a = [1, 2, 3];
|
|
var b = Array.from([a]);
|
|
expect(b instanceof Array).toBeTrue();
|
|
expect(b).toHaveLength(1);
|
|
b[0][0] = 4;
|
|
expect(a[0]).toBe(4);
|
|
});
|
|
|
|
test("from iterator", () => {
|
|
function rangeIterator(begin, end) {
|
|
return {
|
|
[Symbol.iterator]() {
|
|
let value = begin - 1;
|
|
return {
|
|
next() {
|
|
if (value < end)
|
|
value += 1;
|
|
return { value: value, done: value >= end };
|
|
},
|
|
};
|
|
},
|
|
};
|
|
}
|
|
|
|
var a = Array.from(rangeIterator(8, 10));
|
|
expect(a instanceof Array).toBeTrue();
|
|
expect(a).toHaveLength(2);
|
|
expect(a[0]).toBe(8);
|
|
expect(a[1]).toBe(9);
|
|
});
|
|
});
|