diff options
author | 2023-02-08 14:42:10 -0800 | |
---|---|---|
committer | 2023-02-08 14:42:10 -0800 | |
commit | 6fdbb25f9a04e7404e12ab4e157df99930c6dddd (patch) | |
tree | b4f405eff9eb518b909b3976c6f77f57f8419002 /test/bun.js | |
parent | b8c0554839832b1cf9695cb9e2375488565412d0 (diff) | |
download | bun-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')
-rw-r--r-- | test/bun.js/buffer.test.js | 20 |
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); } { |