test
'branch with no chidren'
=>
sub
{
my
$branch
= branch {};
isa_ok(
$branch
,
'Data::TreeValidator::Branch'
,
'branch {} creates a branch'
);
is(
$branch
->children, 0,
'branch {} has no children'
);
};
test
'branch with children'
=>
sub
{
my
$branch
= branch {
first_name
=> leaf,
last_name
=> leaf,
details
=> branch {},
};
isa_ok(
$branch
=> Branch,
'branch { ... } creates a branch'
);
is(
$branch
->
children
=> 3,
'branch { ... } has children'
);
ok(
defined
$branch
->child(
'first_name'
),
'has the "first_name" child'
);
ok(
defined
$branch
->child(
'last_name'
),
'has the "last_name" child'
);
ok(
defined
$branch
->child(
'details'
),
'has the "details" branch'
);
ok(!
defined
$branch
->child(
'missing'
),
'does not have the "missing" child'
);
};
test
'simple leaf'
=>
sub
{
my
$leaf
= leaf;
isa_ok(
$leaf
, Leaf,
'leaf() creates a leaf'
);
is(
$leaf
->constraints, 0,
'leaf has no constraints'
);
is(
$leaf
->transformations, 0,
'leaf has no transformations'
);
};
test
'leaf with constraints'
=>
sub
{
my
$constraint
=
sub
{ };
my
$leaf
= leaf(
constraints
=> [
$constraint
] );
isa_ok(
$leaf
=> Leaf,
'leaf() creates a leaf'
);
is(
$leaf
->
constraints
=> 1,
'leaf has 1 constraint'
);
is((
$leaf
->constraints)[0] =>
$constraint
,
'leaf has the constraint'
);
is(
$leaf
->transformations, 0,
'leaf has no transformations'
);
};
test
'leaf with transformations'
=>
sub
{
local
$TODO
=
"Sugar for transformations"
;
fail(
'Not yet implemented'
);
};
test
'repeating branches'
=>
sub
{
my
$branch
= repeating {};
isa_ok(
$branch
=> RepeatingBranch,
'repeating {} creates a repeating branch'
);
is(
$branch
->
children
=> 0,
'branch has no children'
);
};
run_me;
done_testing;