Blame t/10args.t

Packit 8bbd3c
#!/usr/bin/perl
Packit 8bbd3c
Packit 8bbd3c
use strict;
Packit 8bbd3c
use warnings;
Packit 8bbd3c
Packit 8bbd3c
use Test::More;
Packit 8bbd3c
Packit 8bbd3c
use IO::Socket::IP;
Packit 8bbd3c
Packit 8bbd3c
sub arguments_is {
Packit 8bbd3c
   my ($arg, $exp, $name) = @_;
Packit 8bbd3c
Packit 8bbd3c
   $arg = [$arg]
Packit 8bbd3c
   unless ref $arg;
Packit 8bbd3c
Packit 8bbd3c
   $name ||= join ' ', map { defined $_ ? $_ : 'undef' } @$arg;
Packit 8bbd3c
Packit 8bbd3c
   my $got = do {
Packit 8bbd3c
      no warnings 'redefine';
Packit 8bbd3c
      my $args;
Packit 8bbd3c
Packit 8bbd3c
      local *IO::Socket::IP::_io_socket_ip__configure = sub {
Packit 8bbd3c
         $args = $_[1];
Packit 8bbd3c
         return $_[0];
Packit 8bbd3c
      };
Packit 8bbd3c
Packit 8bbd3c
      IO::Socket::IP->new(@$arg);
Packit 8bbd3c
Packit 8bbd3c
      $args;
Packit 8bbd3c
   };
Packit 8bbd3c
Packit 8bbd3c
   is_deeply($got, $exp, $name);
Packit 8bbd3c
}
Packit 8bbd3c
Packit 8bbd3c
my @tests = (
Packit 8bbd3c
   [ [ '[::1]:80'               ], { PeerHost  => '::1',           PeerService => '80'    } ],
Packit 8bbd3c
   [ [ '[::1]:http'             ], { PeerHost  => '::1',           PeerService => 'http'  } ],
Packit 8bbd3c
   [ [ '[::1]'                  ], { PeerHost  => '::1',                                  } ],
Packit 8bbd3c
   [ [ '[::1]:'                 ], { PeerHost  => '::1',                                  } ],
Packit 8bbd3c
   [ [ '127.0.0.1:80'           ], { PeerHost  => '127.0.0.1',     PeerService => '80'    } ],
Packit 8bbd3c
   [ [ '127.0.0.1:http'         ], { PeerHost  => '127.0.0.1',     PeerService => 'http'  } ],
Packit 8bbd3c
   [ [ '127.0.0.1'              ], { PeerHost  => '127.0.0.1',                            } ],
Packit 8bbd3c
   [ [ '127.0.0.1:'             ], { PeerHost  => '127.0.0.1',                            } ],
Packit 8bbd3c
   [ [ 'localhost:80'           ], { PeerHost  => 'localhost',     PeerService => '80'    } ],
Packit 8bbd3c
   [ [ 'localhost:http'         ], { PeerHost  => 'localhost',     PeerService => 'http'  } ],
Packit 8bbd3c
   [ [ PeerHost  => '[::1]:80'  ], { PeerHost  => '::1',           PeerService => '80'    } ],
Packit 8bbd3c
   [ [ PeerHost  => '[::1]'     ], { PeerHost  => '::1'                                   } ],
Packit 8bbd3c
   [ [ LocalHost => '[::1]:80'  ], { LocalHost => '::1',           LocalService => '80'   } ],
Packit 8bbd3c
   [ [ LocalHost => undef       ], { LocalHost => undef                                   } ],
Packit 8bbd3c
Packit 8bbd3c
   # IO::Socket::INET is happy to take port from the *Host argument even if a *Port argument
Packit 8bbd3c
   # exists
Packit 8bbd3c
   [ [ PeerHost => '127.0.0.1:80', PeerPort => '80' ], { PeerHost => '127.0.0.1', PeerService => '80' } ],
Packit 8bbd3c
   # *Host argument should take precedence over *Service if both exist
Packit 8bbd3c
   [ [ PeerHost => '127.0.0.1:443', PeerPort => '80' ], { PeerHost => '127.0.0.1', PeerService => '443' } ],
Packit 8bbd3c
);
Packit 8bbd3c
Packit 8bbd3c
is_deeply( [ IO::Socket::IP->split_addr( "hostname:http" ) ],
Packit 8bbd3c
           [ "hostname",  "http" ],
Packit 8bbd3c
           "split_addr hostname:http" );
Packit 8bbd3c
Packit 8bbd3c
is_deeply( [ IO::Socket::IP->split_addr( "192.0.2.1:80" ) ],
Packit 8bbd3c
           [ "192.0.2.1", "80"   ],
Packit 8bbd3c
           "split_addr 192.0.2.1:80" );
Packit 8bbd3c
Packit 8bbd3c
is_deeply( [ IO::Socket::IP->split_addr( "[2001:db8::1]:80" ) ],
Packit 8bbd3c
           [ "2001:db8::1", "80" ],
Packit 8bbd3c
           "split_addr [2001:db8::1]:80" );
Packit 8bbd3c
Packit 8bbd3c
is_deeply( [ IO::Socket::IP->split_addr( "something.else" ) ],
Packit 8bbd3c
           [ "something.else", undef ],
Packit 8bbd3c
           "split_addr something.else" );
Packit 8bbd3c
Packit 8bbd3c
is( IO::Socket::IP->join_addr( "hostname", "http" ),
Packit 8bbd3c
    "hostname:http",
Packit 8bbd3c
    'join_addr hostname:http' );
Packit 8bbd3c
Packit 8bbd3c
is( IO::Socket::IP->join_addr( "192.0.2.1", 80 ),
Packit 8bbd3c
    "192.0.2.1:80",
Packit 8bbd3c
    'join_addr 192.0.2.1:80' );
Packit 8bbd3c
Packit 8bbd3c
is( IO::Socket::IP->join_addr( "2001:db8::1", 80 ),
Packit 8bbd3c
    "[2001:db8::1]:80",
Packit 8bbd3c
    'join_addr [2001:db8::1]:80' );
Packit 8bbd3c
Packit 8bbd3c
is( IO::Socket::IP->join_addr( "something.else", undef ),
Packit 8bbd3c
    "something.else",
Packit 8bbd3c
    'join_addr something.else' );
Packit 8bbd3c
Packit 8bbd3c
arguments_is(@$_) for @tests;
Packit 8bbd3c
Packit 8bbd3c
done_testing;