use strict;
use Test;
BEGIN { plan tests => 34; }

use Net::IPv6Addr;
ok(1);

my $x;
# Test ipv6_chkip with garbage.
$x = Net::IPv6Addr::ipv6_chkip("Obvious Garbage");
ok(not defined $x);

# Test ipv6_chkip with preferred style, too many :
$x = Net::IPv6Addr::ipv6_chkip("0:1:2:3:4:5:6:7:8");
ok(not defined $x);

# Test ipv6_chkip with preferred style, not enough :
$x = Net::IPv6Addr::ipv6_chkip("0:1:2:3:4:5:6");
ok(not defined $x);

# Test ipv6_chkip with preferred style, bad digits.
$x = Net::IPv6Addr::ipv6_chkip("0:1:2:3:4:5:6:x");
ok(not defined $x);

# Test ipv6_chkip with preferred style, adjacent :
$x = Net::IPv6Addr::ipv6_chkip("0:1:2:3:4:5:6::7");
ok(not defined $x);

# Test ipv6_chkip with preferred style, too many digits.
$x = Net::IPv6Addr::ipv6_chkip("0:1:2:3:4:5:6:789abcdef");
ok(not defined $x);

# Test ipv6_chkip with preferred style.
$x = Net::IPv6Addr::ipv6_chkip("0:1:2:3:4:5:6:789a");
ok(ref $x, 'CODE');

# Test ipv6_chkip with compressed style, bad digits.
$x = Net::IPv6Addr::ipv6_chkip("0:1:2:3::x"); 
ok(not defined $x);

# Test ipv6_chkip with compressed style, too many adjacent :
$x = Net::IPv6Addr::ipv6_chkip("0:1:2:::3"); 
ok(not defined $x);

# Test ipv6_chkip with compressed style, too many digits.
$x = Net::IPv6Addr::ipv6_chkip("0:1:2:3::abcde"); 
ok(not defined $x);

# Test ipv6_chkip with compressed style, too many :
$x = Net::IPv6Addr::ipv6_chkip("0:1:2:3:4:5:6:7:8"); 
ok(not defined $x);

# Test ipv6_chkip with compressed style, not enough :
$x = Net::IPv6Addr::ipv6_chkip("0:1"); 
ok(not defined $x);

# Test ipv6_chkip with compressed style.
$x = Net::IPv6Addr::ipv6_chkip("0:1:2:3::f"); 
ok(ref $x, 'CODE');

# Test ipv6_chkip with ipv4 style, bad ipv6 digits.
$x = Net::IPv6Addr::ipv6_chkip("0:0:0:0:0:x:10.0.0.1"); 
ok(not defined $x);

# Test ipv6_chkip with ipv4 style, bad ipv4 digits.
$x = Net::IPv6Addr::ipv6_chkip("0:0:0:0:0:0:10.0.0.x"); 
ok(not defined $x);

# Test ipv6_chkip with ipv4 style, adjacent :
$x = Net::IPv6Addr::ipv6_chkip("0:0:0:0:0::0:10.0.0.1"); 
ok(not defined $x);

# Test ipv6_chkip with ipv4 style, too many ipv6 digits.
$x = Net::IPv6Addr::ipv6_chkip("0:0:0:0:0:00000:10.0.0.1"); 
ok(not defined $x);

# Test ipv6_chkip with ipv4 style, too many :
$x = Net::IPv6Addr::ipv6_chkip("0:0:0:0:0:0:0:10.0.0.1"); 
ok(not defined $x);

# Test ipv6_chkip with ipv4 style, not enough :
$x = Net::IPv6Addr::ipv6_chkip("0:0:0:0:0:10.0.0.1"); 
ok(not defined $x);

# Test ipv6_chkip with ipv4 style, too many .
$x = Net::IPv6Addr::ipv6_chkip("0:0:0:0:0:0:10.0.0.0.1"); 
ok(not defined $x);

# Test ipv6_chkip with ipv4 style, not enough .
$x = Net::IPv6Addr::ipv6_chkip("0:0:0:0:0:0:10.0.1"); 
ok(not defined $x);

# Test ipv6_chkip with ipv4 style, adjacent .
$x = Net::IPv6Addr::ipv6_chkip("0:0:0:0:0:0:10..0.0.1"); 
ok(not defined $x);

# Test ipv6_chkip with ipv4 style.
$x = Net::IPv6Addr::ipv6_chkip("0:0:0:0:0:0:10.0.0.1"); 
ok(ref $x, 'CODE');

# Test ipv6_chkip with compressed ipv4 style, bad ipv6 digits.
$x = Net::IPv6Addr::ipv6_chkip("::fffx:192.168.0.1"); 
ok(not defined $x);

# Test ipv6_chkip with compressed ipv4 style, bad ipv4 digits.
$x = Net::IPv6Addr::ipv6_chkip("::ffff:192.168.0.x"); 
ok(not defined $x);

# Test ipv6_chkip with compressed ipv4 style, too many adjacent :
$x = Net::IPv6Addr::ipv6_chkip(":::ffff:192.168.0.1"); 
ok(not defined $x);

# Test ipv6_chkip with compressed ipv4 style, too many ipv6 digits.
$x = Net::IPv6Addr::ipv6_chkip("::fffff:192.168.0.1"); 
ok(not defined $x);

# Test ipv6_chkip with compressed ipv4 style, too many ipv4 digits.
$x = Net::IPv6Addr::ipv6_chkip("::ffff:1923.168.0.1"); 
ok(not defined $x);

# Test ipv6_chkip with compressed ipv4 style, not enough :
$x = Net::IPv6Addr::ipv6_chkip(":ffff:192.168.0.1"); 
ok(not defined $x);

# Test ipv6_chkip with compressed ipv4 style, too many .
$x = Net::IPv6Addr::ipv6_chkip("::ffff:192.168.0.1.2"); 
ok(not defined $x);

# Test ipv6_chkip with compressed ipv4 style, not enough .
$x = Net::IPv6Addr::ipv6_chkip("::ffff:192.168.0"); 
ok(not defined $x);

# Test ipv6_chkip with compressed ipv4 style, adjacent .
$x = Net::IPv6Addr::ipv6_chkip("::ffff:192.168..0.1"); 
ok(not defined $x);

# Test ipv6_chkip with compressed ipv4 style.
$x = Net::IPv6Addr::ipv6_chkip("::ffff:192.168.0.1"); 
ok(ref $x, 'CODE');
