#!/usr/bin/perl -w
our
$tests
;
BEGIN { ++
$INC
{
'tests.pm'
} }
sub
tests'VERSION {
$tests
+=
pop
};
plan
tests
=>
$tests
;
my
$doc
= new HTML::DOM;
$doc
->
write
(
'<title>A</title><body>hole<div>bunch<i>o’</i>stuff</div>'
);
$doc
->
close
;
weaken
$doc
;
is
$doc
,
undef
,
'poof'
;
$doc
= new HTML::DOM;
$doc
->
write
(
'stuff'
);
$doc
->
open
;
weaken
$doc
;
is
$doc
,
undef
,
'poof after open'
;
$doc
= new HTML::DOM;
$doc
->
write
(
'<table></table>'
);
$doc
->
close
;
(
my
$table
=
$doc
->getElementsByTagName(
'table'
)->[0])->caption(
$doc
->createElement(
'caption'
)
);
weaken
$table
;
undef
$doc
;
is
$table
,
undef
,
'poof after unshift_content (implied by table->caption)'
;
$doc
= new HTML::DOM;
$doc
->
write
(
'<body>stuff'
);
$doc
->
close
;
my
$body
=
$doc
->body;
weaken
$body
;
undef
$doc
;
is
$body
,
undef
,
'poof after splice_content (text nodes are added that way)'
;
$doc
= new HTML::DOM;
$doc
->
write
(
" "
);
$doc
->
close
;
{
my
$copy
=
$doc
;
weaken
$doc
;
undef
$copy
;
is
$doc
,
undef
,
'poof after $doc->write(" "); $doc->close'
;
}
$doc
= new HTML::DOM;
{
my
$elem
=
$doc
->createElement(
"body"
);
$elem
->setAttribute(
"onload"
,
"foo"
);
my
$a
=
$elem
->getAttributeNode(
'onload'
);
scalar
$a
->childNodes;
my
$a_copy
=
$a
;
weaken
$a
;
undef
$a_copy
;
undef
$elem
;
is
$a
,
undef
,
'poof after $attr->childNodes'
;
}
{
my
$elem
=
$doc
->createElement(
"body"
);
$elem
->setAttribute(
"onload"
,
"foo"
);
my
$t
=
$doc
->createTextNode(
'yoo'
);
my
$a
=
$elem
->getAttributeNode(
'onload'
);
$a
->replaceChild(
$t
,
$a
->firstChild);
my
$a_copy
=
$a
;
weaken
$a
;
undef
$a_copy
,
undef
$elem
;
is
$a
,
undef
,
'poof after $attr->childNodes'
;
}
{
my
$node
=
$doc
->createElement(
"body"
);
$node
->innerHTML(
"<foo><bar>baz</bar></foo>"
);
my
$clone
=
$node
->cloneNode(
"deeep"
);
my
$other_ref
=
$clone
;
weaken
$clone
;
undef
$other_ref
;
is
$clone
,
undef
,
'pooof! on a deep clone'
;
}
{
my
$node
=
$doc
->createElement(
"body"
);
$node
->innerHTML(
"eioiu;"
);
$node
->replaceChild(
$doc
->createTextNode(
'Ooe'
),
$node
->firstChild);
my
$other_ref
=
$node
;
weaken
$node
;
undef
$other_ref
;
is
$node
,
undef
,
'poof after replaceChild'
;
}