• 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.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