aboutsummaryrefslogtreecommitdiff
path: root/test/js/web/fetch/blob.test.ts
diff options
context:
space:
mode:
authorGravatar Ai Hoshino <ambiguous404@gmail.com> 2023-10-04 03:03:57 +0800
committerGravatar GitHub <noreply@github.com> 2023-10-03 12:03:57 -0700
commitb7982ac1318937560f38e0f8eb18f45eaa43480f (patch)
tree5fbc3eaf2d3b77df2846228dc9eabf1ccd53c5c8 /test/js/web/fetch/blob.test.ts
parent60e7ae9aee8e6f0952c17cd0c2c3bd9aeb7297a8 (diff)
downloadbun-b7982ac1318937560f38e0f8eb18f45eaa43480f.tar.gz
bun-b7982ac1318937560f38e0f8eb18f45eaa43480f.tar.zst
bun-b7982ac1318937560f38e0f8eb18f45eaa43480f.zip
fix(blob): Add the current offset to the new blob. (#6259)
Close: #6252
Diffstat (limited to 'test/js/web/fetch/blob.test.ts')
-rw-r--r--test/js/web/fetch/blob.test.ts29
1 files changed, 28 insertions, 1 deletions
diff --git a/test/js/web/fetch/blob.test.ts b/test/js/web/fetch/blob.test.ts
index ba44f8c1b..ea8d86a7a 100644
--- a/test/js/web/fetch/blob.test.ts
+++ b/test/js/web/fetch/blob.test.ts
@@ -1,6 +1,6 @@
import { test, expect } from "bun:test";
-test("Blob.slice", () => {
+test("Blob.slice", async () => {
const blob = new Blob(["Bun", "Foo"]);
const b1 = blob.slice(0, 3, "Text/HTML");
expect(b1 instanceof Blob).toBeTruthy();
@@ -26,6 +26,33 @@ test("Blob.slice", () => {
expect(blob.slice(null, "-123").size).toBe(6);
expect(blob.slice(0, 10).size).toBe(blob.size);
expect(blob.slice("text/plain;charset=utf-8").type).toBe("text/plain;charset=utf-8");
+
+ // test Blob.slice().slice(), issue#6252
+ expect(await blob.slice(0, 4).slice(0, 3).text()).toBe("Bun");
+ expect(await blob.slice(0, 4).slice(1, 3).text()).toBe("un");
+ expect(await blob.slice(1, 4).slice(0, 3).text()).toBe("unF");
+ expect(await blob.slice(1, 4).slice(1, 3).text()).toBe("nF");
+ expect(await blob.slice(1, 4).slice(2, 3).text()).toBe("F");
+ expect(await blob.slice(1, 4).slice(3, 3).text()).toBe("");
+ expect(await blob.slice(1, 4).slice(4, 3).text()).toBe("");
+ // test negative start
+ expect(await blob.slice(1, 4).slice(-1, 3).text()).toBe("F");
+ expect(await blob.slice(1, 4).slice(-2, 3).text()).toBe("nF");
+ expect(await blob.slice(1, 4).slice(-3, 3).text()).toBe("unF");
+ expect(await blob.slice(1, 4).slice(-4, 3).text()).toBe("unF");
+ expect(await blob.slice(1, 4).slice(-5, 3).text()).toBe("unF");
+ expect(await blob.slice(-1, 4).slice(-1, 3).text()).toBe("");
+ expect(await blob.slice(-2, 4).slice(-1, 3).text()).toBe("");
+ expect(await blob.slice(-3, 4).slice(-1, 3).text()).toBe("F");
+ expect(await blob.slice(-4, 4).slice(-1, 3).text()).toBe("F");
+ expect(await blob.slice(-5, 4).slice(-1, 3).text()).toBe("F");
+ expect(await blob.slice(-5, 4).slice(-2, 3).text()).toBe("nF");
+ expect(await blob.slice(-5, 4).slice(-3, 3).text()).toBe("unF");
+ expect(await blob.slice(-5, 4).slice(-4, 3).text()).toBe("unF");
+ expect(await blob.slice(-4, 4).slice(-3, 3).text()).toBe("nF");
+ expect(await blob.slice(-5, 4).slice(-4, 3).text()).toBe("unF");
+ expect(await blob.slice(-3, 4).slice(-2, 3).text()).toBe("F");
+ expect(await blob.slice(-blob.size, 4).slice(-blob.size, 3).text()).toBe("Bun");
});
test("new Blob", () => {