aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/buffer.test.js
diff options
context:
space:
mode:
authorGravatar Dylan Conway <35280289+dylan-conway@users.noreply.github.com> 2023-02-08 14:42:10 -0800
committerGravatar GitHub <noreply@github.com> 2023-02-08 14:42:10 -0800
commit6fdbb25f9a04e7404e12ab4e157df99930c6dddd (patch)
treeb4f405eff9eb518b909b3976c6f77f57f8419002 /test/bun.js/buffer.test.js
parentb8c0554839832b1cf9695cb9e2375488565412d0 (diff)
downloadbun-6fdbb25f9a04e7404e12ab4e157df99930c6dddd.tar.gz
bun-6fdbb25f9a04e7404e12ab4e157df99930c6dddd.tar.zst
bun-6fdbb25f9a04e7404e12ab4e157df99930c6dddd.zip
utf16 to utf8 conversion validation (#2001)
* use replacement character for invalid surrogate pairs * return index of non-ascii * non-allocating case * edge cases * function rename * oops * get length once, index counter
Diffstat (limited to 'test/bun.js/buffer.test.js')
-rw-r--r--test/bun.js/buffer.test.js20
1 files changed, 19 insertions, 1 deletions
diff --git a/test/bun.js/buffer.test.js b/test/bun.js/buffer.test.js
index d624b193c..dba55ffe8 100644
--- a/test/bun.js/buffer.test.js
+++ b/test/bun.js/buffer.test.js
@@ -761,7 +761,7 @@ it("Buffer.alloc", () => {
// Test unmatched surrogates not producing invalid utf8 output
// ef bf bd = utf-8 representation of unicode replacement character
// see https://codereview.chromium.org/121173009/
- const buf = Buffer.from("ab\ud800cd", "utf8");
+ let buf = Buffer.from("ab\ud800cd", "utf8");
assert.strictEqual(buf[0], 0x61);
assert.strictEqual(buf[1], 0x62);
assert.strictEqual(buf[2], 0xef);
@@ -769,6 +769,24 @@ it("Buffer.alloc", () => {
assert.strictEqual(buf[4], 0xbd);
assert.strictEqual(buf[5], 0x63);
assert.strictEqual(buf[6], 0x64);
+
+ buf = Buffer.from("abcd\ud800", "utf8");
+ expect(buf[0]).toBe(0x61);
+ expect(buf[1]).toBe(0x62);
+ expect(buf[2]).toBe(0x63);
+ expect(buf[3]).toBe(0x64);
+ expect(buf[4]).toBe(0xef);
+ expect(buf[5]).toBe(0xbf);
+ expect(buf[6]).toBe(0xbd);
+
+ buf = Buffer.from("\ud800abcd", "utf8");
+ expect(buf[0]).toBe(0xef);
+ expect(buf[1]).toBe(0xbf);
+ expect(buf[2]).toBe(0xbd);
+ expect(buf[3]).toBe(0x61);
+ expect(buf[4]).toBe(0x62);
+ expect(buf[5]).toBe(0x63);
+ expect(buf[6]).toBe(0x64);
}
{