#!perl
my
$empty
= Enbld::Target::AttributeCollector->new;
$empty
->add(
'SortedVersionList'
);
throws_ok {
$empty
->add(
'Version'
,
''
);
}
qr/ABORT:Attribute 'Version' isn't defined/
, 'empty parameter';
my
$fixed
= Enbld::Target::AttributeCollector->new;
$fixed
->add(
'VersionForm'
,
'\d{1,2}\.\d{1,2}(\.\d{1,2})?'
);
$fixed
->add(
'Version'
,
'1.13.1'
);
is(
$fixed
->Version,
'1.13.1'
,
'fixed parameter'
);
my
$coderef
= Enbld::Target::AttributeCollector->new;
$coderef
->add(
'VersionForm'
,
'\d{1,2}\.\d{1,2}(\.\d{1,2})?'
);
$coderef
->add(
'Version'
,
sub
{
return
'1.13.1'
} );
is(
$coderef
->Version,
'1.13.1'
,
'coderef parameter'
);
my
$invalid
= Enbld::Target::AttributeCollector->new;
$invalid
->add(
'VersionForm'
,
'\d{1,2}\.\d{1,2}(\.\d{1,2})?'
);
$invalid
->add(
'VersionCondition'
,
undef
);
$invalid
->add(
'Version'
,
'1.13.100'
);
throws_ok {
$invalid
->Version;
}
qr/NOT valid version string/
,
'invalid parameter'
;
my
$space
= Enbld::Target::AttributeCollector->new;
$space
->add(
'VersionForm'
,
'\d{1,2}\.\d{1,2}(\.\d{1,2})?'
);
$space
->add(
'Version'
,
'1. 3.1'
);
throws_ok {
$space
->Version;
}
qr/ABORT:Attribute 'Version' includes space character/
,
'including space'
;
my
$undef
= Enbld::Target::AttributeCollector->new;
$undef
->add(
'VersionForm'
,
'\d{1,2}\.\d{1,2}(\.\d{1,2})?'
);
$undef
->add(
'Version'
,
sub
{
return
} );
throws_ok {
$undef
->Version;
}
qr/ABORT:Attribute 'Version' is empty string/
,
'return undef'
;
my
$array
= Enbld::Target::AttributeCollector->new;
$array
->add(
'VersionForm'
,
'\d{1,2}\.\d{1,2}(\.\d{1,2})?'
);
$array
->add(
'Version'
,
sub
{
return
[
'1.13.1'
] } );
throws_ok {
$array
->Version;
}
qr/ABORT:Attribute 'Version' isn't scalar value/
, '
return
array reference';
subtest
'invalid Version Condition'
=>
sub
{
set_http_hook();
my
$invalid_condition
= Enbld::Target::AttributeCollector->new;
$invalid_condition
->add(
'VersionForm'
,
'\d\.\d'
);
$invalid_condition
->add(
'AllowedCondition'
);
$invalid_condition
->add(
'ArchiveName'
,
'TestApp'
);
$invalid_condition
->add(
'Extension'
,
'tar.gz'
);
$invalid_condition
->add(
'IndexParserForm'
);
$invalid_condition
->add(
'VersionCondition'
,
'1.2'
);
$invalid_condition
->add(
'VersionList'
);
$invalid_condition
->add(
'SortedVersionList'
);
$invalid_condition
->add(
'Version'
);
throws_ok {
$invalid_condition
->Version;
}
qr/ERROR:Invalid Version Condition:1/
,
'invalid condition'
;
done_testing();
};
done_testing();
sub
set_http_hook {
my
$html
=
do
{
local
$/; <DATA> };
Enbld::HTTP->register_get_hook(
sub
{
return
$html
} );
}