aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/buffer.test.js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-08-18 21:09:26 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-08-18 21:09:26 -0700
commit0e4db0b28fb73b0db45bf727e295def014dd691e (patch)
treefc69e772e1b4c141669b54e0b2c5cb3a8cb17293 /test/bun.js/buffer.test.js
parentd150a2f4ddc10597e4531fd3c55b62bb0ecbf02c (diff)
downloadbun-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.js45
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);