From 6fdbb25f9a04e7404e12ab4e157df99930c6dddd Mon Sep 17 00:00:00 2001 From: Dylan Conway <35280289+dylan-conway@users.noreply.github.com> Date: Wed, 8 Feb 2023 14:42:10 -0800 Subject: 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 --- test/bun.js/buffer.test.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'test/bun.js/buffer.test.js') 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); } { -- cgit v1.2.3