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

use Test::More;

use Graphics::Primitive::Component;
use Graphics::Primitive::Container;

BEGIN {
    use_ok('Graphics::Primitive::Driver');
    use_ok('DummyDriver');
}

my $driver = DummyDriver->new;
isa_ok($driver, 'DummyDriver');

my $container = Graphics::Primitive::Container->new(class => 'container');
my $comp = Graphics::Primitive::Component->new(class => 'component');
my $comp_call = 0;
$comp->callback(sub { $comp_call = $_[0]->class });

$container->add_component($comp, 'c');

my $cont_call = 0;
use Data::Dumper;
$container->callback(sub { $cont_call = $_[0]->class });

$driver->prepare($container);
$driver->finalize($container);

cmp_ok($cont_call, 'eq', 'container', 'container callback fired');
cmp_ok($comp_call, 'eq', 'component', 'component callback fired');

done_testing;