92 lines
1.9 KiB
Perl
92 lines
1.9 KiB
Perl
use strict;
|
|
use C4::Boolean;
|
|
|
|
use vars qw( @tests );
|
|
use vars qw( $loaded );
|
|
|
|
sub f ($) {
|
|
my($x) = @_;
|
|
my $it;
|
|
# Returns either the value returned prefixed with 'OK:',
|
|
# or the caught exception (string expected)
|
|
local($@);
|
|
eval {
|
|
$it = 'OK:' . C4::Boolean::true_p($x);
|
|
};
|
|
if ($@) {
|
|
$it = $@;
|
|
$it =~ s/ at \S+ line \d+$\.\n//s;
|
|
}
|
|
return $it;
|
|
}
|
|
|
|
BEGIN {
|
|
@tests = (
|
|
[
|
|
'control',
|
|
sub { C4::Boolean::INVALID_BOOLEAN_STRING_EXCEPTION },
|
|
'The given value does not seem to be interpretable as a Boolean value',
|
|
undef
|
|
|
|
# False strings
|
|
], [
|
|
'"0"', \&f, 'OK:0', '0'
|
|
], [
|
|
'"false"', \&f, 'OK:0', 'false'
|
|
], [
|
|
'"off"', \&f, 'OK:0', 'off'
|
|
], [
|
|
'"no"', \&f, 'OK:0', 'no'
|
|
|
|
# True strings
|
|
], [
|
|
'"1"', \&f, 'OK:1', '1'
|
|
], [
|
|
'"true"', \&f, 'OK:1', 'true'
|
|
], [
|
|
'"on"', \&f, 'OK:1', 'on'
|
|
], [
|
|
'"yes"', \&f, 'OK:1', 'yes'
|
|
], [
|
|
'"YES"', \&f, 'OK:1', 'YES' # verify case insensitivity
|
|
|
|
# Illegal strings
|
|
], [
|
|
'undef', \&f, C4::Boolean::INVALID_BOOLEAN_STRING_EXCEPTION, undef
|
|
], [
|
|
'"foo"', \&f, C4::Boolean::INVALID_BOOLEAN_STRING_EXCEPTION, 'foo'
|
|
],
|
|
);
|
|
}
|
|
|
|
BEGIN { $| = 1; printf "1..%d\n", scalar(@tests); }
|
|
END {print "not ok 1\n" unless $loaded;}
|
|
$loaded = 1;
|
|
|
|
|
|
# Run all tests in sequence
|
|
for (my $i = 1; $i <= scalar @tests; $i += 1) {
|
|
my $test = $tests[$i - 1];
|
|
my($title, $f, $expected, $input) = @$test;
|
|
die "not ok $i (malformed test case)\n"
|
|
unless @$test == 4 && ref $f eq 'CODE';
|
|
|
|
my $output = &$f($input);
|
|
if (
|
|
(!defined $output && !defined $expected)
|
|
|| (defined $output && defined $expected && $output eq $expected)
|
|
) {
|
|
print "ok $i - $title\n";
|
|
} else {
|
|
print "not ok $i - $title: got ",
|
|
(defined $output? "\"$output\"": 'undef'),
|
|
', expected ',
|
|
(defined $expected? "\"$expected\"": 'undef'),
|
|
"\n";
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|