mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 18:38:55 +00:00
38 lines
1.0 KiB
TypeScript
38 lines
1.0 KiB
TypeScript
import { expect, test } from "bun:test";
|
|
|
|
test("Blob.arrayBuffer copy-on-write is not shared", async () => {
|
|
// 8 MB is the threshold for copy-on-write without --smol.
|
|
const bytes = new Uint8Array((1024 * 1024 * 8 * 1.5) | 0);
|
|
bytes.fill(42);
|
|
bytes[bytes.length - 100] = 43;
|
|
const blob = new Blob([bytes]);
|
|
bytes.fill(8);
|
|
|
|
const buf = new Uint8Array(await blob.arrayBuffer());
|
|
expect(buf.length).toBe(blob.size);
|
|
expect(buf[0]).toBe(42);
|
|
expect(buf[buf.length - 1]).toBe(42);
|
|
|
|
buf[0] = 0;
|
|
|
|
const buf2 = new Uint8Array(await blob.arrayBuffer());
|
|
expect(buf2[0]).toBe(42);
|
|
buf2[0] = 1;
|
|
expect(buf2[buf.length - 1]).toBe(42);
|
|
|
|
const buf3 = new Uint8Array(await blob.slice(0, 1).arrayBuffer());
|
|
expect(buf3[0]).toBe(42);
|
|
buf3[0] = 2;
|
|
expect(buf3.length).toBe(1);
|
|
|
|
const buf4 = new Uint8Array(await blob.slice(blob.size - 100).arrayBuffer());
|
|
expect(buf4[0]).toBe(43);
|
|
buf4[0] = 3;
|
|
expect(buf4.length).toBe(100);
|
|
|
|
expect(buf[0]).toBe(0);
|
|
expect(buf2[0]).toBe(1);
|
|
expect(buf3[0]).toBe(2);
|
|
expect(buf4[0]).toBe(3);
|
|
});
|