use strict; local $^W = 1; use Test::More 'no_plan'; use HTML::Element::Tiny; my $tree = HTML::Element::Tiny->new( [ html => [ head => [ title => "Hello" ] ], [ body => [ div => { class => "stuff some" }, "some stuff" ], [ div => "more stuff", [ span => { id => "foo" }, " now with fooness" ] ], [ div => "this is the last of the stuff" ], [ div => "except for this stuff: ", [ table => map { [ tr => [ td => $_ ], [ td => $_ ], [ td => $_ ] ] } 1..60 ], ], ], ] ); SKIP: for my $type (qw(my Clone)) { unless ($type eq 'my' or $HTML::Element::Tiny::HAS{$type}) { skip "need $type $HTML::Element::Tiny::_modver{$type}", 500; } my $method = "_$type\_clone"; my $clone = $tree->$method; for my $elem ($clone->all->not({ -tag => '-text' })) { my $root = $elem; $root = $root->parent while $root->parent; is($root, $clone, "got from $elem to $clone"); ok( ! grep({ $_->parent != $elem } grep { $_->tag ne '-text' } $elem->children), "all $elem\'s children have it as a parent", ); } }