#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
use File::Which;
BEGIN {
plan skip_all => "no openssl command found" unless File::Which::which("openssl");
plan 'no_plan';
}
use ok 'Crypt::Random::Source::Weak::openssl';
{
my $p = Crypt::Random::Source::Weak::openssl->new;
isa_ok( $p, "Crypt::Random::Source::Weak" );
isa_ok( $p, "Crypt::Random::Source::Base::Proc" );
isa_ok( $p, "Crypt::Random::Source::Weak::openssl" );
cmp_ok( $p->default_chunk_size, '>=', 1, "got some chunk size" );
is_deeply( $p->command, [ $p->openssl, qw(rand), $p->default_chunk_size ], "command" );
$p->openssl("foo");
is_deeply( $p->command, [ qw(foo rand), $p->default_chunk_size ], "command updated with trigger" );
$p->openssl("openssl");
ok( !$p->has_handle, "no handle yet" );
my $buf = $p->get(100);
is( length($buf), 100, "got requested bytes" );
# this test should fail around every few universes or so ;-)
cmp_ok( $buf, 'ne', $p->get(length($buf)), "random data differs" );
ok( $p->has_handle, "handle now open" );
ok( $p->close, "close" );
$p->default_chunk_size(3);
$buf = $p->get(10);
is( length($buf), 10, "got 10 byteswith really small chunk size" );
}