%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const common = require('../common'); const assert = require('assert'); const path = require('path'); const fs = require('fs'); const tmpdir = require('../common/tmpdir'); tmpdir.refresh(); const expected = 'ümlaut. Лорем 運務ホソモ指及 आपको करने विकास 紙読決多密所 أضف'; let cnt = 0; const getFileName = () => path.join(tmpdir.path, `readv_${++cnt}.txt`); const exptectedBuff = Buffer.from(expected); const allocateEmptyBuffers = (combinedLength) => { const bufferArr = []; // Allocate two buffers, each half the size of exptectedBuff bufferArr[0] = Buffer.alloc(Math.floor(combinedLength / 2)); bufferArr[1] = Buffer.alloc(combinedLength - bufferArr[0].length); return bufferArr; }; const getCallback = (fd, bufferArr) => { return common.mustSucceed((bytesRead, buffers) => { assert.deepStrictEqual(bufferArr, buffers); const expectedLength = exptectedBuff.length; assert.deepStrictEqual(bytesRead, expectedLength); fs.closeSync(fd); assert(Buffer.concat(bufferArr).equals(exptectedBuff)); }); }; // fs.readv with array of buffers with all parameters { const filename = getFileName(); const fd = fs.openSync(filename, 'w+'); fs.writeSync(fd, exptectedBuff); const bufferArr = allocateEmptyBuffers(exptectedBuff.length); const callback = getCallback(fd, bufferArr); fs.readv(fd, bufferArr, 0, callback); } // fs.readv with array of buffers without position { const filename = getFileName(); fs.writeFileSync(filename, exptectedBuff); const fd = fs.openSync(filename, 'r'); const bufferArr = allocateEmptyBuffers(exptectedBuff.length); const callback = getCallback(fd, bufferArr); fs.readv(fd, bufferArr, callback); } /** * Testing with incorrect arguments */ const wrongInputs = [false, 'test', {}, [{}], ['sdf'], null, undefined]; { const filename = getFileName(2); fs.writeFileSync(filename, exptectedBuff); const fd = fs.openSync(filename, 'r'); wrongInputs.forEach((wrongInput) => { assert.throws( () => fs.readv(fd, wrongInput, null, common.mustNotCall()), { code: 'ERR_INVALID_ARG_TYPE', name: 'TypeError' } ); }); fs.closeSync(fd); } { // fs.readv with wrong fd argument wrongInputs.forEach((wrongInput) => { assert.throws( () => fs.readv(wrongInput, common.mustNotCall()), { code: 'ERR_INVALID_ARG_TYPE', name: 'TypeError' } ); }); }