IOC
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
t/032_IOC_Service_SetterInjection_test.t view on Meta::CPAN
#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 37;
use Test::Exception;
BEGIN {
use_ok('IOC::Service::SetterInjection');
use_ok('IOC::Container');
}
{ # create a package for a dummy service
package Logger;
sub new {
my ($class) = @_;
return bless {} => $class;
}
sub setLogFileHandle {
my ($self, $file_handle) = @_;
Test::More::is($file_handle, 'LogFileHandle', '... got the right log file handle');
}
sub setLogFileFormat {
my ($self, $file_format) = @_;
Test::More::is($file_format, 'LogFileFormat', '... got the right log file format');
}
}
can_ok("IOC::Service::SetterInjection", 'new');
{
my $container = IOC::Container->new();
isa_ok($container, 'IOC::Container');
$container->register(IOC::Service->new('log_file_handle' => sub { 'LogFileHandle' }));
$container->register(IOC::Service->new('log_file_format' => sub { 'LogFileFormat' }));
my $service = IOC::Service::SetterInjection->new('logger' =>
('Logger', 'new', [
{ setLogFileHandle => 'log_file_handle' },
{ setLogFileFormat => 'log_file_format' }
]));
isa_ok($service, 'IOC::Service::SetterInjection');
isa_ok($service, 'IOC::Service');
$service->setContainer($container);
can_ok($service, 'instance');
my $instance = $service->instance();
isa_ok($instance, 'Logger');
}
{ # check getting service from the root
my $log_file_container = IOC::Container->new('LogFile');
isa_ok($log_file_container, 'IOC::Container');
$log_file_container->register(IOC::Service->new('handle' => sub { 'LogFileHandle' }));
$log_file_container->register(IOC::Service->new('format' => sub { 'LogFileFormat' }));
my $service = IOC::Service::SetterInjection->new('logger' =>
('Logger', 'new', [
{ setLogFileHandle => '/LogFile/handle' },
{ setLogFileFormat => '/LogFile/format' }
]));
isa_ok($service, 'IOC::Service::SetterInjection');
isa_ok($service, 'IOC::Service');
my $logging_container = IOC::Container->new('Logging');
$service->setContainer($logging_container);
my $container = IOC::Container->new('root');
$container->addSubContainer($logging_container);
$container->addSubContainer($log_file_container);
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.757 second using v1.00-cache-2.02-grep-82fe00e-cpan-d29e8ade9f55 )