1+
2+ import * as dgram from '@socketsupply/io/dgram'
3+ //import dgram from 'dgram' //uncomment to tests the tests, should pass running node
4+ import { test } from 'tapzero'
5+
6+ test ( 'bind a dgram port and send a packet to it' , function ( t ) {
7+ var resolve
8+ var socket = dgram . createSocket ( 'udp4' ) , socket2
9+ // var p = ~~(Math.random()*0xffff)
10+ socket . on ( 'message' , function ( b ) {
11+ t . equal ( b . toString ( ) , 'hello!' )
12+ socket . close ( function ( ) { } )
13+ resolve ( )
14+ } )
15+ t . equal ( socket . bind ( ) , socket , 'bind returns this' ) //any port
16+
17+ socket . on ( 'listening' , function ( ) {
18+ var addr = socket . address ( )
19+ var p = addr . port
20+ t . equal ( addr . address , '0.0.0.0' )
21+ t . ok ( Number . isInteger ( addr . port ) )
22+ socket . send ( Buffer . from ( 'hello!' ) , p , '127.0.0.1' ) //any port
23+ } )
24+ return new Promise ( _resolve => resolve = _resolve )
25+ } )
26+
27+ test ( 'error if port is already bound' , function ( t ) {
28+ var resolve
29+ var socket = dgram . createSocket ( 'udp4' )
30+ var socket2 = dgram . createSocket ( 'udp4' )
31+ var received = [ ]
32+ socket . on ( 'message' , function ( b ) {
33+ console . log ( 'receive:' , b )
34+ socket . close ( function ( ) { } )
35+ resolve ( )
36+ } )
37+ t . equal ( socket . bind ( ) , socket , 'bind returns this' ) //any port
38+
39+ socket . on ( 'listening' , function ( ) {
40+ var addr = socket . address ( )
41+ var p = addr . port
42+ t . equal ( addr . address , '0.0.0.0' )
43+ t . ok ( Number . isInteger ( addr . port ) )
44+ socket2 . on ( 'error' , function ( err ) {
45+ t . equal ( err . code , 'EADDRINUSE' , 'address in use err' )
46+ socket . close ( )
47+ resolve ( )
48+ } )
49+ t . equal ( socket2 . bind ( p ) , socket2 )
50+ } )
51+ return new Promise ( _resolve => resolve = _resolve )
52+ } )
0 commit comments