1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- describe("errors", () => {
- test("invalid array length value", () => {
- var a = [1, 2, 3];
- [undefined, "foo", -1, Infinity, -Infinity, NaN].forEach(value => {
- expect(() => {
- a.length = value;
- }).toThrowWithMessage(RangeError, "Invalid array length");
- expect(a).toHaveLength(3);
- });
- });
- });
- describe("normal behavior", () => {
- test("extend array by setting length", () => {
- var a = [1, 2, 3];
- a.length = 5;
- expect(a).toEqual([1, 2, 3, undefined, undefined]);
- });
- test("truncate array by setting length", () => {
- var a = [1, 2, 3];
- a.length = 2;
- expect(a).toEqual([1, 2]);
- a.length = 0;
- expect(a).toEqual([]);
- });
- test("length value is coerced to number if possible", () => {
- var a = [1, 2, 3];
- a.length = "42";
- expect(a).toHaveLength(42);
- a.length = [];
- expect(a).toHaveLength(0);
- a.length = true;
- expect(a).toHaveLength(1);
- });
- test("setting a huge array length", () => {
- var a = [];
- a.length = 0x80000000;
- expect(a.length).toEqual(0x80000000);
- var b = [];
- b.length = 0x80000001;
- expect(b.length).toEqual(0x80000001);
- });
- });
|