aboutsummaryrefslogtreecommitdiff
path: root/test/js/node/buffer.test.js
diff options
context:
space:
mode:
authorGravatar Ai Hoshino <ambiguous404@gmail.com> 2023-07-02 08:01:52 +0800
committerGravatar GitHub <noreply@github.com> 2023-07-01 17:01:52 -0700
commit4720fa1207d374a2447d457ad478f9f8911b959a (patch)
treee8268b3c91ea992842682afd94f32747668a136f /test/js/node/buffer.test.js
parentdf10252979aa3d87a8d127707a23678b76a15583 (diff)
downloadbun-4720fa1207d374a2447d457ad478f9f8911b959a.tar.gz
bun-4720fa1207d374a2447d457ad478f9f8911b959a.tar.zst
bun-4720fa1207d374a2447d457ad478f9f8911b959a.zip
[WIP]Fix calling `Buffer.toString` with `(offset, length, encoding)` (#3467)
* Allow `toString` to be called with `(offset, length, encoding)`. Close: #3085 * handle undefined value * add tests for buffer.xxxSlice * fix parameters * fix offset and length
Diffstat (limited to '')
-rw-r--r--test/js/node/buffer.test.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/test/js/node/buffer.test.js b/test/js/node/buffer.test.js
index 697774e0a..e0d8f5486 100644
--- a/test/js/node/buffer.test.js
+++ b/test/js/node/buffer.test.js
@@ -2353,6 +2353,85 @@ it("Buffer.byteLength()", () => {
}
});
+it("Buffer.toString(encoding, start, end)", () => {
+ const buf = Buffer.from("0123456789", "utf8");
+
+ expect(buf.toString()).toStrictEqual("0123456789");
+ expect(buf.toString("utf8")).toStrictEqual("0123456789");
+ expect(buf.toString("utf8", 3)).toStrictEqual("3456789");
+ expect(buf.toString("utf8", 3, 4)).toStrictEqual("3");
+
+ expect(buf.toString("utf8", 3, 100)).toStrictEqual("3456789");
+ expect(buf.toString("utf8", 3, 1)).toStrictEqual("");
+ expect(buf.toString("utf8", 100, 200)).toStrictEqual("");
+ expect(buf.toString("utf8", 100, 1)).toStrictEqual("");
+});
+
+it("Buffer.toString(offset, length, encoding)", () => {
+ const buf = Buffer.from("0123456789", "utf8");
+
+ expect(buf.toString(3, 6, "utf8")).toStrictEqual("345678");
+ expect(buf.toString(3, 100, "utf8")).toStrictEqual("3456789");
+ expect(buf.toString(100, 200, "utf8")).toStrictEqual("");
+ expect(buf.toString(100, 50, "utf8")).toStrictEqual("");
+});
+
+it("Buffer.asciiSlice())", () => {
+ const buf = Buffer.from("0123456789", "ascii");
+
+ expect(buf.asciiSlice()).toStrictEqual("0123456789");
+ expect(buf.asciiSlice(3)).toStrictEqual("3456789");
+ expect(buf.asciiSlice(3, 4)).toStrictEqual("3");
+});
+
+it("Buffer.latin1Slice()", () => {
+ const buf = Buffer.from("âéö", "latin1");
+
+ expect(buf.latin1Slice()).toStrictEqual("âéö");
+ expect(buf.latin1Slice(1)).toStrictEqual("éö");
+ expect(buf.latin1Slice(1, 2)).toStrictEqual("é");
+});
+
+it("Buffer.utf8Slice()", () => {
+ const buf = Buffer.from("あいうえお", "utf8");
+
+ expect(buf.utf8Slice()).toStrictEqual("あいうえお");
+ expect(buf.utf8Slice(3)).toStrictEqual("いうえお");
+ expect(buf.utf8Slice(3, 6)).toStrictEqual("い");
+});
+
+it("Buffer.hexSlice()", () => {
+ const buf = Buffer.from("0123456789", "utf8");
+
+ expect(buf.hexSlice()).toStrictEqual("30313233343536373839");
+ expect(buf.hexSlice(3)).toStrictEqual("33343536373839");
+ expect(buf.hexSlice(3, 4)).toStrictEqual("33");
+});
+
+it("Buffer.ucs2Slice()", () => {
+ const buf = Buffer.from("あいうえお", "ucs2");
+
+ expect(buf.ucs2Slice()).toStrictEqual("あいうえお");
+ expect(buf.ucs2Slice(2)).toStrictEqual("いうえお");
+ expect(buf.ucs2Slice(2, 6)).toStrictEqual("いう");
+});
+
+it("Buffer.base64Slice()", () => {
+ const buf = Buffer.from("0123456789", "utf8");
+
+ expect(buf.base64Slice()).toStrictEqual("MDEyMzQ1Njc4OQ==");
+ expect(buf.base64Slice(3)).toStrictEqual("MzQ1Njc4OQ==");
+ expect(buf.base64Slice(3, 4)).toStrictEqual("Mw==");
+});
+
+it("Buffer.base64urlSlice()", () => {
+ const buf = Buffer.from("0123456789", "utf8");
+
+ expect(buf.base64urlSlice()).toStrictEqual("MDEyMzQ1Njc4OQ");
+ expect(buf.base64urlSlice(3)).toStrictEqual("MzQ1Njc4OQ");
+ expect(buf.base64urlSlice(3, 4)).toStrictEqual("Mw");
+});
+
it("should not crash on invalid UTF-8 byte sequence", () => {
const buf = Buffer.from([0xc0, 0xfd]);
expect(buf.length).toBe(2);