From 6394aaa46277530dc673601e344c8dfbc32c912d Mon Sep 17 00:00:00 2001 From: RedDwarfian Date: Sat, 20 Jul 2019 22:36:16 -0400 Subject: [PATCH] [Implement] Buffer.writeUInt8 --- assembly/buffer/index.ts | 6 ++++++ assembly/node.d.ts | 2 ++ tests/buffer.spec.ts | 8 ++++++++ 3 files changed, 16 insertions(+) diff --git a/assembly/buffer/index.ts b/assembly/buffer/index.ts index 66866bf..86a5894 100644 --- a/assembly/buffer/index.ts +++ b/assembly/buffer/index.ts @@ -22,4 +22,10 @@ export class Buffer extends Uint8Array { result.dataLength = size; return result; } + + writeUInt8(value: u8, offset: i32 = 0): i32 { + if(offset > this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE); + store(this.dataStart + offset, value); + return offset + 1; + } } diff --git a/assembly/node.d.ts b/assembly/node.d.ts index 80075a8..5c1ebe7 100644 --- a/assembly/node.d.ts +++ b/assembly/node.d.ts @@ -3,4 +3,6 @@ declare class Buffer extends Uint8Array { static alloc(size: i32): Buffer; /** This method allocates a new Buffer of indicated size. This is unsafe because the data is not zeroed. */ static allocUnsafe(size: i32): Buffer; + /** Writes an inputted u8 value to the buffer, at the desired offset. */ + writeUInt8(value:u8, offset?:i32): i32; } diff --git a/tests/buffer.spec.ts b/tests/buffer.spec.ts index 1596845..e19ff74 100644 --- a/tests/buffer.spec.ts +++ b/tests/buffer.spec.ts @@ -42,4 +42,12 @@ describe("buffer", () => { // TODO: expectFn(() => { Buffer.allocUnsafe(-1); }).toThrow(); // TODO: expectFn(() => { Buffer.allocUnsafe(BLOCK_MAXSIZE + 1); }).toThrow(); }); + + test("#writeUInt8", () => { + let buff = new Buffer(5); + expect(buff.writeUInt8(4)).toBe(1); + expect(buff.writeUInt8(252,4)).toBe(5); + expect(buff[0]).toBe(4); + expect(buff[4]).toBe(252); + }); });