1'use strict';
2
3const common = require('../common');
4const assert = require('assert');
5const net = require('net');
6
7const truthyValues = [true, 1, 'true', {}, []];
8const falseyValues = [false, 0, ''];
9const genSetNoDelay = (desiredArg) => (enable) => {
10  assert.strictEqual(enable, desiredArg);
11};
12
13for (const value of truthyValues) {
14  const server = net.createServer();
15
16  server.listen(0, common.mustCall(function() {
17    const port = server.address().port;
18
19    const client = net.connect(
20      { port, noDelay: value },
21      common.mustCall(() => client.end())
22    );
23
24    client._handle.setNoDelay = common.mustCall(genSetNoDelay(true));
25
26    client.on('end', common.mustCall(function() {
27      server.close();
28    }));
29  }));
30}
31
32for (const value of falseyValues) {
33  const server = net.createServer();
34
35  server.listen(0, common.mustCall(function() {
36    const port = server.address().port;
37
38    const client = net.connect(
39      { port, noDelay: value },
40      common.mustCall(() => client.end())
41    );
42
43    client._handle.setNoDelay = common.mustNotCall();
44
45    client.on('end', common.mustCall(function() {
46      server.close();
47    }));
48  }));
49}
50