mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 07:42:43 +00:00 
			
		
		
		
	 29ac6e3689
			
		
	
	
		29ac6e3689
		
	
	
	
	
		
			
			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.
		
	
			
		
			
				
	
	
		
			34 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			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"
 | |
|     );
 | |
| });
 |