eval
qq(use ICANN::RST::Graph;)
if
(
eval
qq(use GraphViz2 ; 1)
);
sub
name {
$_
[0]->{
'Name'
} }
sub
description { ICANN::RST::Text->new(
$_
[0]->{
'Description'
}) }
sub
graph { ICANN::RST::Graph->new(
$_
[0]->cases) }
sub
plans {
my
$self
=
shift
;
my
%plans
;
foreach
my
$plan
(
$self
->spec->plans) {
foreach
my
$suite
(
$plan
->suites) {
$plans
{
$plan
->id} =
$plan
if
(
$self
->id eq
$suite
->id && !
defined
(
$plans
{
$plan
->id}));
}
}
return
sort
{
$a
->order <=>
$b
->order }
values
(
%plans
);
}
sub
cases {
my
$self
=
shift
;
my
@cases
;
if
(
'ARRAY'
eq
ref
(
$self
->{
'Test-Cases'
})) {
@cases
=
map
{
$self
->spec->case(
$_
) } @{
$self
->{
'Test-Cases'
}};
}
elsif
(
defined
(
$self
->{
'Test-Cases'
})) {
@cases
=
grep
{
$_
->id =~ /
$self
->{
'Test-Cases'
}/ }
$self
->spec->cases;
}
return
sort
{
$a
->id cmp
$b
->id }
@cases
;
}
sub
inputs {
my
$self
=
shift
;
my
%inputs
;
foreach
my
$id
(@{
$self
->{
'Input-Parameters'
}}) {
$inputs
{
$id
} =
$self
->spec->input(
$id
);
}
foreach
my
$case
(
$self
->cases) {
foreach
my
$input
(
$case
->inputs) {
$inputs
{
$input
->id} =
$input
unless
(
defined
(
$inputs
{
$input
->id}));
}
}
return
sort
{
$a
->id cmp
$b
->id }
values
(
%inputs
);
}
sub
resources {
my
$self
=
shift
;
my
%resources
;
foreach
my
$id
(@{
$self
->{
'Resources'
}}) {
$resources
{
$id
} =
$self
->spec->resource(
$id
);
}
foreach
my
$case
(
$self
->cases) {
foreach
my
$resource
(
$case
->resources) {
$resources
{
$resource
->id} =
$resource
unless
(
defined
(
$resources
{
$resource
->id}));
}
}
return
sort
{
$a
->id cmp
$b
->id }
values
(
%resources
);
}
sub
errors {
my
$self
=
shift
;
my
%errors
;
foreach
my
$case
(
$self
->cases) {
foreach
my
$error
(
$case
->errors) {
$errors
{
$error
->id} =
$error
unless
(
defined
(
$errors
{
$error
->id}));
}
}
return
sort
{
$a
->id cmp
$b
->id }
values
(
%errors
);
}
1;