Codebase list libnet-ip-xs-perl / run/bcb67185-3bdb-4404-aab2-655bc28317d3/upstream t / 35-normalize.t
run/bcb67185-3bdb-4404-aab2-655bc28317d3/upstream

Tree @run/bcb67185-3bdb-4404-aab2-655bc28317d3/upstream (Download .tar.gz)

35-normalize.t @run/bcb67185-3bdb-4404-aab2-655bc28317d3/upstreamraw · history · blame

#!/usr/bin/env perl

use warnings;
use strict;

use Test::More tests => 53;

use Net::IP::XS qw(ip_normalize);

my @data = (
    ['1.0.0.1/32' => ['1.0.0.1', '1.0.0.1']],
    ['0.0.0.0/24' => ['0.0.0.0', '0.0.0.255']],
    ['0.0.0.0/0' =>  ['0.0.0.0', '255.255.255.255']],
    ['1.2/16' => ['1.2.0.0', '1.2.255.255']],
    ['0::0/0' => ['0000:0000:0000:0000:0000:0000:0000:0000',
                  'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff']],
    ['AAAA::/16' => ['aaaa:0000:0000:0000:0000:0000:0000:0000',
                  'aaaa:ffff:ffff:ffff:ffff:ffff:ffff:ffff']],
    ['1:2:3:4::/64' => ['0001:0002:0003:0004:0000:0000:0000:0000',
                  '0001:0002:0003:0004:ffff:ffff:ffff:ffff']],
    ['0.0.0.0/32,' => ['0.0.0.0', '0.0.0.1']],
    ['0.0.0.0/32||||' => []],
    ['2401:4600::/33k' => []],
    ['1.2.3.4/24asdf' => []],
    ['0.0.0.0/32,/32,/32' => ['0.0.0.0', '0.0.0.2']],
    ['0/8,/8,/8' => ['0.0.0.0', '2.255.255.255']],
    ['0/8,/8,/8,/24' => ['0.0.0.0', '3.0.0.255']],
    ['asdf/asdf' => []],
    ['-asdf' => []],
    ['-' => []],
    ['255-' => []],
    ['255-    ' => []],
    ['- ' => []],
    ['asdf - 128.0.0.1' => []],
    ['0' => ['0.0.0.0']],
    ['0::0' => ['0000:0000:0000:0000:0000:0000:0000:0000']],

    ['0.0.0.0-1.0.0.0' => ['0.0.0.0', '1.0.0.0']],
    ['0-255' => ['0.0.0.0', '255.0.0.0']],
    ['0-255.255' => ['0.0.0.0', '255.255.0.0']],
    ['1.2.3.4     -   5.6.7.8' => ['1.2.3.4', '5.6.7.8']],
    ['0::0-1::1' =>
        ['0000:0000:0000:0000:0000:0000:0000:0000',
         '0001:0000:0000:0000:0000:0000:0000:0001']],
    ['abcd::-abce::' => ['abcd:0000:0000:0000:0000:0000:0000:0000',
                         'abce:0000:0000:0000:0000:0000:0000:0000']],
    ['0.0.0.0 + 1' => ['0.0.0.0', '0.0.0.1']],
    ['0.0.0.0 + 255' => ['0.0.0.0', '0.0.0.255']],
    ['0.0.0.0 + 256' => ['0.0.0.0', '0.0.1.0']],
    ['1.0.0.0 + 65535' => ['1.0.0.0', '1.0.255.255']],
    ['0.0.0.0+1' => ['0.0.0.0', '0.0.0.1']],
    ['0.0.0.0+255' => ['0.0.0.0', '0.0.0.255']],
    ['0.0.0.0+256' => ['0.0.0.0', '0.0.1.0']],
    ['1.0.0.0+65535' => ['1.0.0.0', '1.0.255.255']],
    ['1.0.0.0+1234567812389123578457847543278547345' => []],
    ['0::0 + 65536' => ['0000:0000:0000:0000:0000:0000:0000:0000',
                        '0000:0000:0000:0000:0000:0000:0001:0000']],
    ['0000:: - FFFF::' => ['0000:0000:0000:0000:0000:0000:0000:0000',
                           'ffff:0000:0000:0000:0000:0000:0000:0000']],
    ['0::0/0' => ['0000:0000:0000:0000:0000:0000:0000:0000',
                  'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff']],
    ['0::0/128,/128,/128,/128,/128,/128' => [
        '0000:0000:0000:0000:0000:0000:0000:0000',
        '0000:0000:0000:0000:0000:0000:0000:0005']],
    ['1' x 2500 => []],
    ['abcd::/ab' => []],
    ['abcd::/1' => []],
    ['abcd::/200' => []],
    ['abcd::/-200' => []],
    ['1.2.3.4/ab' => []],
    ['1.2.3.4/100' => []],
    ['1.2.3.4/-100' => []],
    ['1.2.3.4/0' => []],
    ['1.2.3.4 + ABCD' => []],
    ['ZZZZ' => []],
);

for my $entry (@data) {
    my ($arg, $res) = @{$entry};
    my @res_t = ip_normalize($arg);
    is_deeply(\@res_t, $res, "Got normalized result for $arg");
}

1;