The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More tests => 18;
use SVG;

# test: getFirstChild, getLastChild, getParent, getChildren

my $svg    = SVG->new;
my $parent = $svg->group();
my $child1 = $parent->text->cdata("I am the first child");
my $child2 = $parent->text->cdata("I am the second child");
my $child3 = $parent->text->cdata("I am the third child");

is( $parent->getFirstChild(), $child1, "getFirstChild" );
is( $child1->getParent(),     $parent, "getParent 1" );
is( $parent->getLastChild(),  $child3, "getLastChild" );
is( $child2->getParent(),     $parent, "getParent 2" );
ok( $parent->hasChildren(), "hasChildren" );

my @children = $parent->getChildren();
is( scalar(@children), 3,       "correct number of children" );
is( $children[0],      $child1, "getChildren 1" );
is( $children[1],      $child2, "getChildren 2" );
is( $children[2],      $child3, "getChildren 3" );

is( $parent->removeChild($child1),    $child1, 'removeChild1' );
is( $parent->removeChild($child3),    $child3, 'removeChild3' );
is( $parent->removeChild($child2),    $child2, 'removeChild2' );
is( $parent->removeChild($child1),    0,       'no such child' );
is( $parent->findChildIndex($child1), -1,      'child1 is gone' );

is( $parent->insertAtIndex( $child1, 0 ), 1 );
is( $parent->findChildIndex($child1), 0,  'child1 is back' );
is( $parent->removeAtIndex(0),        $child1 );
is( $parent->findChildIndex($child1), -1, 'child1 is gone again' );