The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More;
use Test::TCP;

use UV;

my $port = empty_port();

my $server = UV::tcp_init();
UV::tcp_bind($server, '0.0.0.0', $port);
UV::listen($server, 128, sub {
    my $client = UV::tcp_init();
    my $r = UV::accept($server, $client);
    is $r, 0, 'accept ok';

    my ($host, $port) = UV::tcp_getpeername($client);
    is $host, '127.0.0.1';

    UV::close($server);
});

my ($host, $tcp_port) = UV::tcp_getsockname($server);

is $host, '0.0.0.0';
is $tcp_port, $port;

my $client = UV::tcp_init();
UV::tcp_connect($client, "127.0.0.1", $port, sub {
    my ($host, $tcp_port) = UV::tcp_getpeername($client);
    is $host, '127.0.0.1';
    is $tcp_port, $port;
});

UV::run;

done_testing;