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.strictEqual(written, 0); 30 31 written = fs.writevSync(fd, bufferArr, null); 32 assert.strictEqual(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.strictEqual(written, 0); 50 51 written = fs.writevSync(fd, bufferArr); 52 assert.strictEqual(written, expectedLength); 53 54 fs.closeSync(fd); 55 56 assert(Buffer.concat(bufferArr).equals(fs.readFileSync(filename))); 57} 58 59// fs.writevSync with empty array of buffers 60{ 61 const filename = getFileName(3); 62 const fd = fs.openSync(filename, 'w'); 63 const written = fs.writevSync(fd, []); 64 assert.strictEqual(written, 0); 65 fs.closeSync(fd); 66 67} 68 69/** 70 * Testing with wrong input types 71 */ 72{ 73 const filename = getFileName(4); 74 const fd = fs.openSync(filename, 'w'); 75 76 [false, 'test', {}, [{}], ['sdf'], null, undefined].forEach((i) => { 77 assert.throws( 78 () => fs.writevSync(fd, i, null), { 79 code: 'ERR_INVALID_ARG_TYPE', 80 name: 'TypeError' 81 } 82 ); 83 }); 84 85 fs.closeSync(fd); 86} 87 88// fs.writevSync with wrong fd types 89[false, 'test', {}, [{}], null, undefined].forEach((i) => { 90 assert.throws( 91 () => fs.writevSync(i), 92 { 93 code: 'ERR_INVALID_ARG_TYPE', 94 name: 'TypeError' 95 } 96 ); 97}); 98