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

use Test::More tests => 10; # 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 $cocoa;
lives_ok { $cocoa = $module->new(path => $^X) }
'factory constructor lives';
isa_ok($cocoa, $module);

lives_ok {$cocoa->push_params('bubble') } 'first push_params lives';

my @params = (
   text               => 'whatever',
   something_isolated => undef,
   little_list        => [qw( what a mess )],
);
while (@params) {
   my ($k, $v) = splice @params, 0, 2;
   lives_ok {
      no strict 'refs';
      $cocoa->push_params($k, !defined($v) ? () : ref($v) ? @$v : $v);
   }
   'further push_params lives';
} ## end while (@params)

is_deeply(
   [$cocoa->command_line()],
   [
      qw(
        bubble
        text whatever
        something_isolated
        little_list what a mess
        )
   ],
   "runner's command line at the end"
);

is_deeply([$cocoa->command_line(qw( ciao a tutti ))],
   [qw( ciao a tutti )], "runner's command line overriding");

is_deeply(
   [$cocoa->command_line(ciao => {text => [qw( whatever it is )],})],
   [qw( ciao --text whatever it is )],
   "runner's command line overriding with hash"
);

is_deeply(
   [$cocoa->command_line()],
   [
      qw(
        bubble
        text whatever
        something_isolated
        little_list what a mess
        )
   ],
   "runner's internal command line still safe"
);