This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update IO-Socket-IP to CPAN version 0.41
[perl5.git] / cpan / IO-Socket-IP / t / 17gai-flags.t
1 #!/usr/bin/perl
2
3 use v5;
4 use strict;
5 use warnings;
6
7 use Test::More;
8
9 use IO::Socket::IP;
10 use Socket 1.95 qw(
11    PF_INET SOCK_STREAM IPPROTO_TCP pack_sockaddr_in INADDR_ANY
12    AI_PASSIVE AI_NUMERICSERV
13 );
14
15 my $AI_ADDRCONFIG = eval { Socket::AI_ADDRCONFIG() } || 0;
16
17 my @gai_args;
18 my @gai_rets;
19
20 no strict 'refs';
21 no warnings 'redefine';
22
23 *{"IO::Socket::IP::getaddrinfo"} = sub {
24    push @gai_args, [ @_ ];
25    return @{ shift @gai_rets };
26 };
27
28 @gai_args = ();
29 @gai_rets = (
30    [ "", {
31          family   => PF_INET,
32          socktype => SOCK_STREAM,
33          protocol => IPPROTO_TCP,
34          addr     => pack_sockaddr_in( 80, INADDR_ANY )
35       } ],
36 );
37 IO::Socket::IP->new( LocalPort => "80" );
38
39 is_deeply( \@gai_args,
40            [ 
41               [ undef, "80", { flags => AI_PASSIVE|$AI_ADDRCONFIG, socktype => SOCK_STREAM, protocol => IPPROTO_TCP } ],
42            ],
43            '@gai_args for LocalPort => "80"' );
44
45 SKIP: {
46    skip "No AI_NUMERICSERV", 1 unless defined eval { AI_NUMERICSERV() };
47
48    @gai_args = ();
49    @gai_rets = (
50       [ "", {
51             family   => PF_INET,
52             socktype => SOCK_STREAM,
53             protocol => IPPROTO_TCP,
54             addr     => pack_sockaddr_in( 80, INADDR_ANY )
55          } ],
56    );
57    IO::Socket::IP->new( LocalPort => "80", GetAddrInfoFlags => AI_NUMERICSERV );
58
59    is_deeply( \@gai_args,
60               [ 
61                  [ undef, "80", { flags => AI_PASSIVE|AI_NUMERICSERV, socktype => SOCK_STREAM, protocol => IPPROTO_TCP } ],
62               ],
63               '@gai_args for LocalPort => "80", GetAddrInfoFlags => AI_NUMERICSERV' );
64 }
65
66 done_testing;