diff --git a/lib/writer.js b/lib/writer.js index 302ae37d..03e35524 100644 --- a/lib/writer.js +++ b/lib/writer.js @@ -60,6 +60,15 @@ p.join = function() { return this.buffer.slice(0, this.offset); } +p.addString = function(string) { + var string = string || ""; + var len = Buffer.byteLength(string); + this._ensure(len); + this.buffer.write(string, this.offset); + this.offset += len; + return this; +} + p.getByteLength = function() { return this.offset; } diff --git a/test/unit/writer-tests.js b/test/unit/writer-tests.js index 3e0f08f8..32972de0 100644 --- a/test/unit/writer-tests.js +++ b/test/unit/writer-tests.js @@ -105,10 +105,27 @@ test('gets correct byte length', function() { test('can add arbitrary buffer to the end', function() { var subject = new Writer(4); subject.addCString("!!!") - var result = subject.add(Buffer("!!!")).join(); - assert.equalBuffers(result, [33, 33, 33, 0, 33, 33, 33]); + var result = subject.add(Buffer("@@@")).join(); + assert.equalBuffers(result, [33, 33, 33, 0, 0x40, 0x40, 0x40]); }) +test('can write normal string', function() { + var subject = new Writer(4); + var result = subject.addString("!").join(); + assert.equalBuffers(result, [33]); + test('can write cString too', function() { + var result = subject.addCString("!").join(); + assert.equalBuffers(result, [33, 33, 0]); + test('can resize', function() { + var result = subject.addString("!!").join(); + assert.equalBuffers(result, [33, 33, 0, 33, 33]); + }) + + }) + +}) + + test('clearing', function() { var subject = new Writer(); subject.addCString("@!!#!#");