Skip to content

Commit

Permalink
Add tests for reading and writing using Uint8Array
Browse files Browse the repository at this point in the history
  • Loading branch information
maxwellgerber committed Sep 1, 2018
1 parent c1cdeec commit 29f82dc
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/binding.js
Expand Up @@ -590,7 +590,7 @@ Binding.prototype.writeBuffer = function(
content = newContent;
}
var sourceEnd = Math.min(offset + length, buffer.length);
var written = buffer.copy(content, position, offset, sourceEnd);
var written = bufferFrom(buffer).copy(content, position, offset, sourceEnd);
file.setContent(content);
descriptor.setPosition(newLength);
return written;
Expand Down
22 changes: 22 additions & 0 deletions test/lib/binding.spec.js
Expand Up @@ -853,6 +853,15 @@ describe('Binding', function() {
assert.equal(String(buffer), 'two content');
});

it('reads into a Uint8Array', function() {
var binding = new Binding(system);
var fd = binding.open(path.join('mock-dir', 'three.bin'), flags('r'));
var buffer = new Uint8Array(3);
var read = binding.read(fd, buffer, 0, 3, 0);
assert.equal(read, 3);
assert.deepEqual(Array.from(buffer), [1, 2, 3]);
});

it('interprets null position as current position', function() {
var binding = new Binding(system);
var fd = binding.open(path.join('mock-dir', 'one.txt'), flags('r'));
Expand Down Expand Up @@ -913,6 +922,19 @@ describe('Binding', function() {
assert.equal(String(content), 'new content');
});

it('can take input from a Uint8Array', function() {
var binding = new Binding(system);
var fd = binding.open(path.join('mock-dir', 'new.txt'), flags('w'));
var buffer = Uint8Array.from([1, 2, 3, 4, 5]);
var written = binding.write(fd, buffer, 0, 5, 0);
assert.equal(written, 5);
var file = system.getItem(path.join('mock-dir', 'new.txt'));
assert.instanceOf(file, File);
var content = file.getContent();
assert.isTrue(Buffer.isBuffer(content));
assert.deepEqual(Array.from(content), [1, 2, 3, 4, 5]);
});

it('can overwrite a file', function() {
var binding = new Binding(system);
var fd = binding.open(path.join('mock-dir', 'one.txt'), flags('w'));
Expand Down

0 comments on commit 29f82dc

Please sign in to comment.