diff options
author | 2022-08-18 21:09:26 -0700 | |
---|---|---|
committer | 2022-08-18 21:09:26 -0700 | |
commit | 0e4db0b28fb73b0db45bf727e295def014dd691e (patch) | |
tree | fc69e772e1b4c141669b54e0b2c5cb3a8cb17293 /test/bun.js/buffer.test.js | |
parent | d150a2f4ddc10597e4531fd3c55b62bb0ecbf02c (diff) | |
download | bun-0e4db0b28fb73b0db45bf727e295def014dd691e.tar.gz bun-0e4db0b28fb73b0db45bf727e295def014dd691e.tar.zst bun-0e4db0b28fb73b0db45bf727e295def014dd691e.zip |
Add string support to `Buffer.fill`
Diffstat (limited to 'test/bun.js/buffer.test.js')
-rw-r--r-- | test/bun.js/buffer.test.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/test/bun.js/buffer.test.js b/test/bun.js/buffer.test.js index 7a587a0a5..87937e65e 100644 --- a/test/bun.js/buffer.test.js +++ b/test/bun.js/buffer.test.js @@ -211,6 +211,51 @@ it("Buffer.copy", () => { expect(array1.join("")).toBe(array2.join("")); }); +export function fillRepeating(dstBuffer, start, end) { + let len = dstBuffer.length, // important: use indices length, not byte-length + sLen = end - start, + p = sLen; // set initial position = source sequence length + + // step 2: copy existing data doubling segment length per iteration + while (p < len) { + if (p + sLen > len) sLen = len - p; // if not power of 2, truncate last segment + dstBuffer.copyWithin(p, start, sLen); // internal copy + p += sLen; // add current length to offset + sLen <<= 1; // double length for next segment + } +} + +describe("Buffer.fill string", () => { + for (let text of [ + "hello world", + "1234567890", + "\uD83D\uDE00", + "ππππππ
ππ€£βΊοΈπππ", + ]) { + it(text, () => { + var input = new Buffer(1024); + input.fill(text); + var demo = new Uint8Array(1024); + var encoded = new TextEncoder().encode(text); + + demo.set(encoded); + fillRepeating(demo, 0, encoded.length); + expect(input.join("")).toBe(demo.join("")); + }); + } +}); + +it("Buffer.fill 1 char string", () => { + var input = new Buffer(1024); + input.fill("h"); + var demo = new Uint8Array(1024); + var encoded = new TextEncoder().encode("h"); + + demo.set(encoded); + fillRepeating(demo, 0, encoded.length); + expect(input.join("")).toBe(demo.join("")); +}); + it("Buffer.concat", () => { var array1 = new Uint8Array(128); array1.fill(100); |