• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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