The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
# Test the constructor

use Test::More;
use Test::Trap;
use Test::Exception;

eval "use CLI::Startup";
plan skip_all => "Can't load CLI::Startup" if $@;

my $app;

# init() with basic option
{
    lives_ok { $app = CLI::Startup->new } "Default app object";
    lives_ok { $app->set_optspec({ foo => 'bar' }), $app->init } "with options";
    ok defined($app->get_optspec), "optspec is defined";
}

# init() with no options fails
{
    lives_ok { $app = CLI::Startup->new } "No-argument constructor";
    ok !defined($app->get_optspec), "No optspecs yet";
    throws_ok { $app->init } qr/without defining/, "init() with no options";
}

# Setting usage string in initializer
{
    lives_ok { $app = CLI::Startup->new({ usage => "usage", options => undef }) }
        "Constructor with usage but no options";
    ok $app->get_usage eq 'usage', "Usage set correctly";
}

# Setting default args in initializer
{
    lives_ok { $app = CLI::Startup->new({ options => undef, default_settings => { a => 1 }}) }
        "Constructor with default settings";
    is_deeply $app->get_default_settings, { a => 1 }, "Settings are correct";
}

done_testing();