| 'use strict'; |
| |
| const common = require('../common'); |
| const fixtures = require('../common/fixtures'); |
| const fs = require('fs'); |
| const assert = require('assert'); |
| const filepath = fixtures.path('x.txt'); |
| |
| const expected = Buffer.from('xyz\n'); |
| const defaultBufferAsync = Buffer.alloc(16384); |
| const bufferAsOption = Buffer.allocUnsafe(expected.byteLength); |
| |
| function testValid(message, ...options) { |
| const paramsMsg = `${message} (as params)`; |
| const paramsFilehandle = fs.openSync(filepath, 'r'); |
| fs.read(paramsFilehandle, ...options, common.mustSucceed((bytesRead, buffer) => { |
| assert.strictEqual(bytesRead, expected.byteLength, paramsMsg); |
| assert.deepStrictEqual(defaultBufferAsync.byteLength, buffer.byteLength, paramsMsg); |
| fs.closeSync(paramsFilehandle); |
| })); |
| |
| const optionsMsg = `${message} (as options)`; |
| const optionsFilehandle = fs.openSync(filepath, 'r'); |
| fs.read(optionsFilehandle, bufferAsOption, ...options, common.mustSucceed((bytesRead, buffer) => { |
| assert.strictEqual(bytesRead, expected.byteLength, optionsMsg); |
| assert.deepStrictEqual(bufferAsOption.byteLength, buffer.byteLength, optionsMsg); |
| fs.closeSync(optionsFilehandle); |
| })); |
| } |
| |
| testValid('Not passing in any object'); |
| testValid('Passing in a null', null); |
| testValid('Passing in an empty object', common.mustNotMutateObjectDeep({})); |
| testValid('Passing in an object', common.mustNotMutateObjectDeep({ |
| offset: 0, |
| length: bufferAsOption.byteLength, |
| position: 0, |
| })); |