1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 17:14:58 +00:00
serenity/Userland/Libraries/LibJS/Tests/builtins/ArrayBuffer/ArrayBuffer.js
Timothy Flynn 29ac6e3689 LibJS: Partially implement resizable ArrayBuffer objects
This is (part of) a normative change in the ECMA-262 spec. See:
a9ae96e

This implements just support for resizing ArrayBuffer objects. This does
not implement the SharedArrayBuffer changes, as we do not have enough
support to do so.
2023-12-26 11:16:10 +01:00

34 lines
1.1 KiB
JavaScript

test("basic functionality", () => {
expect(ArrayBuffer).toHaveLength(1);
expect(ArrayBuffer.name).toBe("ArrayBuffer");
expect(ArrayBuffer.prototype.constructor).toBe(ArrayBuffer);
expect(new ArrayBuffer()).toBeInstanceOf(ArrayBuffer);
expect(typeof new ArrayBuffer()).toBe("object");
});
test("ArrayBuffer constructor must be invoked with 'new'", () => {
expect(() => {
ArrayBuffer();
}).toThrowWithMessage(TypeError, "ArrayBuffer constructor must be called with 'new'");
});
test("ArrayBuffer size limit", () => {
expect(() => {
new ArrayBuffer(2 ** 53);
}).toThrowWithMessage(RangeError, "Invalid array buffer length");
});
test("invalid ArrayBuffer maximum size option", () => {
expect(() => {
new ArrayBuffer(10, { maxByteLength: -1 });
}).toThrowWithMessage(RangeError, "Index must be a positive integer");
});
test("ArrayBuffer size exceeds maximum size", () => {
expect(() => {
new ArrayBuffer(10, { maxByteLength: 5 });
}).toThrowWithMessage(
RangeError,
"ArrayBuffer byte length of 10 exceeds the max byte length of 5"
);
});