local
$^W = 1;
BEGIN { use_ok(
'HTML::Element::Tiny'
) }
my
$tree
= HTML::Element::Tiny->new(
[
div
=>
[
ul
=> {
id
=>
'mylist'
,
class
=>
'menu foo'
},
map
({ [
li
=>
"hello $_"
] }
qw(alice bob sue trent)
),
],
]
);
is(
$tree
->parent,
undef
,
'no parent for root'
);
is(
scalar
$tree
->children, 1,
"root has one child"
,
);
my
$div
=
$tree
->find_one({
-tag
=>
'div'
});
is(
$div
->tag,
'div'
,
"find found a div"
);
is(
$div
,
$tree
,
"it is the tree"
);
my
$ul
=
$tree
->find_one({
id
=>
'mylist'
});
is(
$ul
->tag,
'ul'
,
"find found an ul"
);
is(
$ul
->id,
'mylist'
,
"it has the right id"
);
is(
$ul
->parent,
$div
,
"it has the right parent"
);
for
(
qw(menu foo)
) {
is(
$tree
->find_one({
class
=>
$_
}),
$ul
,
"it can be found by class '$_'"
);
}
is(
$tree
->find_one({
class
=>
"menu foo"
}),
$ul
,
"it can be found by classes 'menu foo'"
);
for
my
$elem
(
$tree
,
$div
,
$ul
) {
for
my
$child
(
$elem
->children) {
is(
$child
->parent,
$elem
,
"child has parent"
);
}
}
my
$p
= HTML::Element::Tiny->new([
p
=>
"new node"
]);
is(
$p
->parent,
undef
);
$tree
->append(
$p
);
is(
$p
->parent,
$tree
,
"did not clone element without parent"
);
$tree
->append(
$p
);
is(
$tree
->find({
-tag
=>
'p'
})->size, 2,
"cloned element with parent"
);
$tree
->prepend([
p
=>
"new node 3"
]);
is(
$tree
->find({
-tag
=>
'p'
})->size, 3,
"new elem from lol"
);
is(
$tree
->remove_child(
$tree
->find({
-tag
=>
'p'
}))->size, 3,
"removed 3 p tags"
);
is(
$tree
->find({
-tag
=>
'p'
})->size, 0,
"no p elems left"
);
is(
$p
->parent,
undef
,
"removed child's parent is undef"
);
is(
$tree
->remove_child(0)->size, 1,
"removed 1 child by index"
);
is(
$tree
->children, 0,
"removed only child"
);
is(
$ul
->parent,
undef
,
"removed child's parent is undef"
);