The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# $Id: param-checking.t,v 1.4 2007/04/12 14:53:28 drhyde Exp $
use strict;

my $warning;
BEGIN {
    $^W=1;
    $SIG{__WARN__} = sub {
        $warning = join('', @_);
        die("Caught a warning, making it fatal:\n$warning\n")
            if($warning !~ /^Net::Random: /);
    };
}

use Test::More tests => 8;
use Net::Random;

my $r;

eval { $r = Net::Random->new(ssl => 0, src => 'fourmilab.ch', max => 12, min => -1); };
ok(!$@, "no longer dies with min < 0");

eval { $r = Net::Random->new(); };
ok($@ =~ /Bad parameters to Net::Random->new/, "dies with no params");

eval { $r = Net::Random->new(ssl => 0, src => 'rubbish'); };
ok($@ =~ /Bad parameters to Net::Random->new/, "dies with bad source");

eval { $r = Net::Random->new(ssl => 0, src => 'fourmilab.ch', max => 1.2); };
ok($@ =~ /Bad parameters to Net::Random->new/, "dies with non-integer max");

eval { $r = Net::Random->new(ssl => 0, src => 'fourmilab.ch', max => 12, min => 1.2); };
ok($@ =~ /Bad parameters to Net::Random->new/, "dies with non-integer min");

eval { $r = Net::Random->new(ssl => 0, src => 'fourmilab.ch', max => 12, min => 13); };
ok($@ =~ /Bad parameters to Net::Random->new/, "dies with min > max");

eval { $r = Net::Random->new(ssl => 0, src => 'fourmilab.ch', max => 2 ** 32); };
ok($@ =~ /Bad parameters to Net::Random->new/, "dies with max > 2^32-1");

eval { $r = Net::Random->new(ssl => 0, src => 'fourmilab.ch', min => -2, max => 2 ** 32); };
ok($@ =~ /Bad parameters to Net::Random->new/, "dies with min-to-max range > 2^32-1");