# vim: filetype=perl :
use strict;
use warnings;
use Test::More tests => 15; # last test to print
#use Test::More 'no_plan'; # substitute with previous line when done
use Test::Exception;
use Mac::CocoaDialog;
my $module = 'Mac::CocoaDialog';
my $runmod = $module . '::Runner';
my $cocoa;
lives_ok { $cocoa = $module->new(path => $^X) }
'factory constructor lives';
isa_ok($cocoa, $module);
my $bubble;
lives_ok { $bubble = $cocoa->bubble() } 'factory method lives';
isa_ok($bubble, $runmod);
is_deeply([$bubble->command_line()],
['bubble'], "runner's command line init");
my @params = (
text => 'whatever',
something_isolated => undef,
little_list => [qw( what a mess )],
);
while (@params) {
my ($k, $v) = splice @params, 0, 2;
my $rval;
lives_ok {
no strict 'refs';
$rval = $bubble->$k(!defined($v) ? () : ref($v) ? @$v : $v);
}
'runner method lives';
is($rval, $bubble, 'runner method returns runner');
} ## end while (@params)
is_deeply(
[$bubble->command_line()],
[
qw(
bubble
--text whatever
--something-isolated
--little-list what a mess
)
],
"runner's command line at the end"
);
is_deeply([$bubble->command_line(qw( ciao a tutti ))],
[qw( ciao a tutti )], "runner's command line overriding");
is_deeply(
[$bubble->command_line(ciao => {text => [qw( whatever it is )],})],
[qw( ciao --text whatever it is )],
"runner's command line overriding with hash"
);
is_deeply(
[$bubble->command_line()],
[
qw(
bubble
--text whatever
--something-isolated
--little-list what a mess
)
],
"runner's internal command line still safe"
);