#!./perl
BEGIN {
chdir
't'
if
-d
't'
;
@INC
=
'../lib'
;
require
"./test.pl"
;
eval
'use Errno'
;
die
$@
if
$@ and !is_miniperl();
}
my
@bad_salts
=
(
[
''
,
'zero-length'
],
[
'a'
,
'length 1'
],
[
'!a'
,
'bad first character'
],
[
'a!'
,
'bad second character'
],
[
'@a'
,
'fencepost before A'
],
[
'[a'
,
'fencepost after Z'
],
[
'`a'
,
'fencepost before a'
],
[
'{a'
,
'fencepost after z'
],
[
'-a'
,
'fencepost before .'
],
[
':a'
,
'fencepost after 9'
],
);
my
@good_salts
=
qw(aa zz AA ZZ .. 99)
;
plan
tests
=> 2 *
@bad_salts
+ 1 +
@good_salts
;
for
my
$bad_salt
(
@bad_salts
) {
my
(
$salt
,
$what
) =
@$bad_salt
;
$! = 0;
is(
crypt
(
"abc"
,
$salt
),
undef
,
"bad salt ($what)"
);
is(0+$!,
&Errno::EINVAL
,
"check errno ($what)"
);
}
is(
crypt
(
"abcdef"
,
"ab"
),
"abDMWw5NL.afs"
,
"sanity check result"
);
for
my
$good_salt
(
@good_salts
) {
isnt(
crypt
(
"abcdef"
,
$good_salt
),
undef
,
"good salt $good_salt"
);
}