BEGIN { $| = 1; print "1..4\n"; }
END { print "not ok 1\n" unless $loaded; }
use Fan::Param;
$loaded = 1;
print("ok 1\n");
$Fan::Param::LOG = 7;
sub proc {
local $_ = shift;
/proc/i ? $_ : undef;
}
%pkeys = (
key_any => '',
key_int => 'INTEGER',
key_bool => 'BOOLEAN',
key_code => 'CODE',
key_hash => 'HASH',
key_proc => \&proc,
);
$param = Fan::Param->new( param_name => 'TEST', param_keys => \%pkeys );
ref($param) && $param->isa('Fan::Param')
or print("not ok 2\n"), exit;
print("ok 2\n");
$success = eval { $param->setval('key_any', 'Anything is o.k.'), 'key_any' }
&& eval { $param->setval('key_proc', 'PROCEDURE'), 'key_proc' }
&& eval { $param->setval('key_hash', \%pkeys), 'key_hash' }
&& eval { $param->setval('key_code', \&proc), 'key_code' }
&& eval { $param->setval('key_bool', 'FALSE'), 'key_bool' };
$success or print("not ok 3: $@"), exit;
print("ok 3\n");
$failure = eval { $param->getval('not_a_key'), 'not_a_key' }
|| eval { $param->setval('key_int', 'no int'), 'key_proc' }
|| eval { $param->setval('key_proc', \%pkeys), 'key_proc' }
|| eval { $param->setval('key_hash', \&proc), 'key_hash' }
|| eval { $param->setval('key_code', 20), 'key_code' }
|| eval { $param->setval('key_bool', "must"), 'key_code' };
$failure and print("not ok 4 ($failure): $@\n"), exit;
print("ok 4\n");
syntax highlighted by Code2HTML, v. 0.9.1