#!/usr/bin/perl -w -I ..
#
# utils.pm tests
#
#
# Run with perl t/utils.t

use warnings;
use strict;
use Test::More;
use NPTest;

use lib ".";
use lib "..";
use utils;

my $hostname_checks = {
	"www.altinity.com" => 1,
	"www.888.com" => 1,
	"888.com" => 1,
	"host-hyphened.com" => 1,
	"rubbish" => 1,
	"-start.com" => 0,
	"nonfqdn-but-endsindot." => 1,
	"fqdn.and.endsindot." => 1,
	"lots.of.dots.dot.org" => 1,
	"endingwithdoubledots.." => 0,
	"toomany..dots" => 0,
	".start.with.dot" => 0,
	"10.20.30.40" => 1,
	"10.20.30.40.50" => 0,
	"10.20.30" => 0,
	"10.20.30.40." => 1,	# This is considered a hostname because of trailing dot. It probably won't exist though...
	"888." => 1,		# This is because it could be a domain
	"host.888." => 1,
	"where.did.that.!.come.from." => 0,
	"no.underscores_.com" => 0,
	"a.somecompany.com" => 1,
	"host.a.com" => 1,
	};

plan tests => ((scalar keys %$hostname_checks) + 4);

foreach my $h (sort keys %$hostname_checks) {
	is (utils::is_hostname($h), $hostname_checks->{$h}, "$h should return ".$hostname_checks->{$h});
}

is(utils::is_hostname(), 0, "No parameter errors");
is(utils::is_hostname(""), 0, "Empty string errors");
is(utils::is_hostname(0), 0, "0 also errors");
is(utils::is_hostname(1), 0, "1 also errors");
