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

use Rex::Helper::IP;

use Test::More tests => 16;

my $ok = 0;

my $ipv4        = "192.168.178.22";
my $ipv4_port   = "192.168.178.22:2222";
my $ipv4_port_s = "192.168.178.22/2222";

my $ipv6      = "fe80::a00:27ff:fe36:9377";
my $ipv6_port = "fe80::a00:27ff:fe36:9377/3333";

my $hostname        = "blah01";
my $hostname_port   = "blah01:4444";
my $hostname_port_s = "blah01/4444";

my ( $s, $p );

( $s, $p ) = Rex::Helper::IP::get_server_and_port($ipv4);
is( $s, "192.168.178.22", "got v4 ip" );
is( $p, undef,            "got no port from v4 ip" );

( $s, $p ) = ( undef, undef );
( $s, $p ) = Rex::Helper::IP::get_server_and_port($ipv4_port);
is( $s, "192.168.178.22", "got v4 ip with port" );
is( $p, 2222,             "got port from v4 ip with colon" );

( $s, $p ) = ( undef, undef );
( $s, $p ) = Rex::Helper::IP::get_server_and_port($ipv4_port_s);
is( $s, "192.168.178.22", "got v4 ip with port with slash" );
is( $p, 2222,             "got port from v4 ip with slash" );

( $s, $p ) = ( undef, undef );
( $s, $p ) = Rex::Helper::IP::get_server_and_port($ipv6);
is( $s, "fe80::a00:27ff:fe36:9377", "got v6 ip" );
is( $p, undef, "got no port from v6 ip" );

( $s, $p ) = ( undef, undef );
( $s, $p ) = Rex::Helper::IP::get_server_and_port($ipv6_port);
is( $s, "fe80::a00:27ff:fe36:9377", "got v6 ip with port" );
is( $p, 3333, "got port from v6 ip with colon" );

( $s, $p ) = Rex::Helper::IP::get_server_and_port($hostname);
is( $s, "blah01", "got hostname" );
is( $p, undef,    "got no port from hostname" );

( $s, $p ) = ( undef, undef );
( $s, $p ) = Rex::Helper::IP::get_server_and_port($hostname_port);
is( $s, "blah01", "got host with port" );
is( $p, 4444,     "got port from hostname with colon" );

( $s, $p ) = ( undef, undef );
( $s, $p ) = Rex::Helper::IP::get_server_and_port($hostname_port_s);
is( $s, "blah01", "got host with port with slash" );
is( $p, 4444,     "got port from host with slash" );