%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
// Flags: --expose-internals 'use strict'; const common = require('../common'); const { ok, strictEqual, throws, } = require('assert'); const { SocketAddress, } = require('net'); const { InternalSocketAddress, } = require('internal/socketaddress'); const { internalBinding } = require('internal/test/binding'); const { SocketAddress: _SocketAddress, AF_INET } = internalBinding('block_list'); { 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' }); { // Test that the internal helper class InternalSocketAddress correctly // inherits from SocketAddress and that it does not throw when its properties // are accessed. const address = '127.0.0.1'; const port = 8080; const flowlabel = 0; const handle = new _SocketAddress(address, port, AF_INET, flowlabel); const addr = new InternalSocketAddress(handle); ok(addr instanceof SocketAddress); strictEqual(addr.address, address); strictEqual(addr.port, port); strictEqual(addr.family, 'ipv4'); strictEqual(addr.flowlabel, flowlabel); }