The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'

######################### We start with some black magic to print on failure.
# Change 1..1 below to 1..last_test_to_print .
# (It may become useful if the test is moved to ./t subdirectory.)
$| = 1;
END {print "1..1\nnot ok 1\n" unless $test;}

#use diagnostics;
use NetAddr::IP::Util qw(
	ipv6_n2d
	inet_aton
	ipv6_aton
	inet_4map6
);

$test = 1;

sub ok {
  print "ok $test\n";
  ++$test;
}

# Insert your test code below (better if it prints "ok 13"
# (correspondingly "not ok 13") depending on the success of chunk 13
# of the test code):
print "1..6\n";

my @stuff = qw(
	192.168.1.1
	1.2.3.4
	::3.4.5.6
	::FFFF:4.5.6.7
	::1:5.4.3.2
	::FEFF:4.3.2.1
);

  my $p4 = '0:0:0:0:0:FFFF:';
  my $p6 = '0:0:0:0:0:';

  foreach(0..$#stuff) {
    my $pass = 1;
    my $result;
    my $bstr;
    $pass = 0 if $_ > 3;
    if ($stuff[$_] =~ /\:/) {
      $bstr = ipv6_aton($stuff[$_]);
      my $prefix = ($stuff[$_] =~ /^\:\:F/)
	? $p6 : $p4;
      ($result = $stuff[$_]) =~ s/\:\:/$prefix/;
    }
    else {
      $bstr = inet_aton($stuff[$_]);
      $result = $p4 . $stuff[$_];
    }
    my $rv = inet_4map6($bstr);
    if ($pass && ! $rv) {
      print "failed to return valid address\nnot ";
    }
    elsif ($pass) {
      $rv = ipv6_n2d($rv);
      print "got: $rv, exp: $result\nnot " unless $rv eq $result;
    }
    else {
      print 'unknown return ', ipv6_n2d($rv), "\nnot " if $rv;
    }
    &ok;
  }