aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/concat.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/bun.js/concat.test.js')
-rw-r--r--test/bun.js/concat.test.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/test/bun.js/concat.test.js b/test/bun.js/concat.test.js
new file mode 100644
index 000000000..a965fdb94
--- /dev/null
+++ b/test/bun.js/concat.test.js
@@ -0,0 +1,46 @@
+import { describe, it, expect } from "bun:test";
+import { gcTick } from "./gc";
+import { concatArrayBuffers } from "bun";
+
+describe("concat", () => {
+ function polyfill(chunks) {
+ var size = 0;
+ for (const chunk of chunks) {
+ size += chunk.byteLength;
+ }
+ var buffer = new ArrayBuffer(size);
+ var view = new Uint8Array(buffer);
+ var offset = 0;
+ for (const chunk of chunks) {
+ view.set(chunk, offset);
+ offset += chunk.byteLength;
+ }
+ return buffer;
+ }
+
+ function concatToString(chunks) {
+ return Array.from(new Uint8Array(concatArrayBuffers(chunks))).join("");
+ }
+
+ function polyfillToString(chunks) {
+ return Array.from(new Uint8Array(polyfill(chunks))).join("");
+ }
+
+ it("works with one element", () => {
+ expect(concatToString([new Uint8Array([123])])).toBe(
+ polyfillToString([new Uint8Array([123])])
+ );
+ });
+
+ it("works with two elements", () => {
+ expect(
+ concatToString([Uint8Array.from([123]), Uint8Array.from([456])])
+ ).toBe(polyfillToString([Uint8Array.from([123]), Uint8Array.from([456])]));
+ });
+
+ it("works with mix of ArrayBuffer and TypedArray elements", () => {
+ expect(
+ concatToString([Uint8Array.from([123]).buffer, Uint8Array.from([456])])
+ ).toBe(polyfillToString([Uint8Array.from([123]), Uint8Array.from([456])]));
+ });
+});