#!perl
use strict;
use warnings;
use Test::More;
use Config::Hosts;
my $hosts = Config::Hosts->new();
use Data::Dumper;
my $tmp_hosts = "/tmp/hosts";
$hosts->read_hosts('t/hosts');
plan(tests => (scalar keys %{$hosts->{_hosts}} ) * 6);
for my $host (keys %{$hosts->{_hosts}}) {
my $type = $hosts->determine_ip_or_host($host);
if ($type == $Config::Hosts::TYPE_IP) {
is($type, $Config::Hosts::TYPE_IP, "$host is a valid ip");
like($hosts->{_contents}[$hosts->{_hosts}{$host}{line}], qr/$host/i, "ip preserved");
isa_ok($hosts->{_hosts}{$host}{hosts}, 'ARRAY');
}
elsif ($type == $Config::Hosts::TYPE_HOST) {
is($type, $Config::Hosts::TYPE_HOST, "$host is a valid hostname");
like($hosts->{_contents}[$hosts->{_hosts}{$host}{line}], qr/$host/i, "hostname preserved");
ok(Config::Hosts::is_valid_ip($hosts->{_hosts}{$host}{ip}), "ip specified ok");
}
else {
fail("Invalid type $type");
}
}
$hosts->write_hosts($tmp_hosts);
$hosts->read_hosts($tmp_hosts);
for my $host (keys %{$hosts->{_hosts}}) {
my $type = $hosts->determine_ip_or_host($host);
if ($type == $Config::Hosts::TYPE_IP) {
is($type, $Config::Hosts::TYPE_IP, "$host is a valid ip");
like($hosts->{_contents}[$hosts->{_hosts}{$host}{line}], qr/$host/, "ip preserved");
isa_ok($hosts->{_hosts}{$host}{hosts}, 'ARRAY');
}
elsif ($type == $Config::Hosts::TYPE_HOST) {
is($type, $Config::Hosts::TYPE_HOST, "$host is a valid hostname");
like($hosts->{_contents}[$hosts->{_hosts}{$host}{line}], qr/$host/, "hostname preserved");
ok(Config::Hosts::is_valid_ip($hosts->{_hosts}{$host}{ip}), "ip specified ok");
}
else {
fail("Invalid type $type");
}
}
unlink $tmp_hosts;