diff options
author | James M Snell <jasnell@gmail.com> | 2021-03-25 12:19:30 -0700 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2021-04-02 06:16:40 -0700 |
commit | 0b90d352948393e5f92ceb2ef749c643b1002a68 (patch) | |
tree | af799b4214eb4d855b6582fadc0f17d2e724ac84 /test/parallel/test-socketaddress.js | |
parent | fb9257f6597f0581592826d236cfc7196afebaca (diff) | |
download | node-new-0b90d352948393e5f92ceb2ef749c643b1002a68.tar.gz |
net: add SocketAddress class
Signed-off-by: James M Snell <jasnell@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/37917
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'test/parallel/test-socketaddress.js')
-rw-r--r-- | test/parallel/test-socketaddress.js | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/test/parallel/test-socketaddress.js b/test/parallel/test-socketaddress.js new file mode 100644 index 0000000000..4caf46dd3e --- /dev/null +++ b/test/parallel/test-socketaddress.js @@ -0,0 +1,110 @@ +'use strict'; + +const common = require('../common'); +const { + ok, + strictEqual, + throws, +} = require('assert'); +const { + SocketAddress, +} = require('net'); + +{ + const sa = new SocketAddress(); + strictEqual(sa.address, '127.0.0.1'); + strictEqual(sa.port, 0); + strictEqual(sa.family, 'ipv4'); + strictEqual(sa.flowlabel, 0); + + const mc = new MessageChannel(); + mc.port1.onmessage = common.mustCall(({ data }) => { + ok(SocketAddress.isSocketAddress(data)); + + strictEqual(data.address, '127.0.0.1'); + strictEqual(data.port, 0); + strictEqual(data.family, 'ipv4'); + strictEqual(data.flowlabel, 0); + + mc.port1.close(); + }); + mc.port2.postMessage(sa); +} + +{ + const sa = new SocketAddress({}); + strictEqual(sa.address, '127.0.0.1'); + strictEqual(sa.port, 0); + strictEqual(sa.family, 'ipv4'); + strictEqual(sa.flowlabel, 0); +} + +{ + const sa = new SocketAddress({ + address: '123.123.123.123', + }); + strictEqual(sa.address, '123.123.123.123'); + strictEqual(sa.port, 0); + strictEqual(sa.family, 'ipv4'); + strictEqual(sa.flowlabel, 0); +} + +{ + const sa = new SocketAddress({ + address: '123.123.123.123', + port: 80 + }); + strictEqual(sa.address, '123.123.123.123'); + strictEqual(sa.port, 80); + strictEqual(sa.family, 'ipv4'); + strictEqual(sa.flowlabel, 0); +} + +{ + const sa = new SocketAddress({ + family: 'ipv6' + }); + strictEqual(sa.address, '::'); + strictEqual(sa.port, 0); + strictEqual(sa.family, 'ipv6'); + strictEqual(sa.flowlabel, 0); +} + +{ + const sa = new SocketAddress({ + family: 'ipv6', + flowlabel: 1, + }); + strictEqual(sa.address, '::'); + strictEqual(sa.port, 0); + strictEqual(sa.family, 'ipv6'); + strictEqual(sa.flowlabel, 1); +} + +[1, false, 'hello'].forEach((i) => { + throws(() => new SocketAddress(i), { + code: 'ERR_INVALID_ARG_TYPE' + }); +}); + +[1, false, {}, [], 'test'].forEach((family) => { + throws(() => new SocketAddress({ family }), { + code: 'ERR_INVALID_ARG_VALUE' + }); +}); + +[1, false, {}, []].forEach((address) => { + throws(() => new SocketAddress({ address }), { + code: 'ERR_INVALID_ARG_TYPE' + }); +}); + +[-1, false, {}, []].forEach((port) => { + throws(() => new SocketAddress({ port }), { + code: 'ERR_SOCKET_BAD_PORT' + }); +}); + +throws(() => new SocketAddress({ flowlabel: -1 }), { + code: 'ERR_OUT_OF_RANGE' +}); |