1'use strict'; 2 3require('../common'); 4const assert = require('assert'); 5const path = require('path'); 6const fs = require('fs'); 7const tmpdir = require('../common/tmpdir'); 8 9tmpdir.refresh(); 10 11const expected = 'ümlaut. Лорем 運務ホソモ指及 आपको करने विकास 紙読決多密所 أضف'; 12 13const getFileName = (i) => path.join(tmpdir.path, `writev_sync_${i}.txt`); 14 15/** 16 * Testing with a array of buffers input 17 */ 18 19// fs.writevSync with array of buffers with all parameters 20{ 21 const filename = getFileName(1); 22 const fd = fs.openSync(filename, 'w'); 23 24 const buffer = Buffer.from(expected); 25 const bufferArr = [buffer, buffer]; 26 const expectedLength = bufferArr.length * buffer.byteLength; 27 28 let written = fs.writevSync(fd, [Buffer.from('')], null); 29 assert.deepStrictEqual(written, 0); 30 31 written = fs.writevSync(fd, bufferArr, null); 32 assert.deepStrictEqual(written, expectedLength); 33 34 fs.closeSync(fd); 35 36 assert(Buffer.concat(bufferArr).equals(fs.readFileSync(filename))); 37} 38 39// fs.writevSync with array of buffers without position 40{ 41 const filename = getFileName(2); 42 const fd = fs.openSync(filename, 'w'); 43 44 const buffer = Buffer.from(expected); 45 const bufferArr = [buffer, buffer, buffer]; 46 const expectedLength = bufferArr.length * buffer.byteLength; 47 48 let written = fs.writevSync(fd, [Buffer.from('')]); 49 assert.deepStrictEqual(written, 0); 50 51 written = fs.writevSync(fd, bufferArr); 52 assert.deepStrictEqual(written, expectedLength); 53 54 fs.closeSync(fd); 55 56 assert(Buffer.concat(bufferArr).equals(fs.readFileSync(filename))); 57} 58 59/** 60 * Testing with wrong input types 61 */ 62{ 63 const filename = getFileName(3); 64 const fd = fs.openSync(filename, 'w'); 65 66 [false, 'test', {}, [{}], ['sdf'], null, undefined].forEach((i) => { 67 assert.throws( 68 () => fs.writevSync(fd, i, null), { 69 code: 'ERR_INVALID_ARG_TYPE', 70 name: 'TypeError' 71 } 72 ); 73 }); 74 75 fs.closeSync(fd); 76} 77 78// fs.writevSync with wrong fd types 79[false, 'test', {}, [{}], null, undefined].forEach((i) => { 80 assert.throws( 81 () => fs.writevSync(i), 82 { 83 code: 'ERR_INVALID_ARG_TYPE', 84 name: 'TypeError' 85 } 86 ); 87}); 88