87 lines
2.5 KiB
Perl
Executable File
87 lines
2.5 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use Fcm::CLI::Config::Default;
|
|
use Fcm::CLI::Subcommand;
|
|
use Test::More qw{no_plan};
|
|
|
|
main();
|
|
|
|
sub main {
|
|
my $class = 'Fcm::CLI::Config';
|
|
use_ok($class);
|
|
test_get_instance($class);
|
|
test_get_subcommand_of_string($class);
|
|
}
|
|
|
|
################################################################################
|
|
# Tests normal usage of getting an instance
|
|
sub test_get_instance {
|
|
my ($class) = @_;
|
|
my $prefix = 'constructor';
|
|
my $cli_config = $class->instance();
|
|
isa_ok($cli_config, $class, "$prefix");
|
|
is_deeply(
|
|
[$cli_config->get_core_subcommands()],
|
|
\@Fcm::CLI::Config::Default::CORE_SUBCOMMANDS,
|
|
"$prefix: default core",
|
|
);
|
|
is_deeply(
|
|
[$cli_config->get_vc_subcommands()],
|
|
\@Fcm::CLI::Config::Default::VC_SUBCOMMANDS,
|
|
"$prefix: default vc",
|
|
);
|
|
is_deeply(
|
|
[$cli_config->get_subcommands()],
|
|
[$cli_config->get_core_subcommands(), $cli_config->get_vc_subcommands()],
|
|
"$prefix: default",
|
|
);
|
|
is($class->instance(), $cli_config, "$prefix: same instance");
|
|
isnt($class->instance({}), $cli_config, "$prefix: not the same instance");
|
|
my $empty_cli_config = $class->instance({
|
|
core_subcommands => [],
|
|
vc_subcommands => [],
|
|
});
|
|
is_deeply(
|
|
[$empty_cli_config->get_core_subcommands()],
|
|
[],
|
|
"$prefix: empty core",
|
|
);
|
|
is_deeply(
|
|
[$empty_cli_config->get_vc_subcommands()],
|
|
[],
|
|
"$prefix: empty vc",
|
|
);
|
|
is_deeply(
|
|
[$empty_cli_config->get_subcommands()],
|
|
[],
|
|
"$prefix: empty",
|
|
);
|
|
}
|
|
|
|
################################################################################
|
|
# Tests getting a subcommand of a matching string
|
|
sub test_get_subcommand_of_string {
|
|
my ($class) = @_;
|
|
my $prefix = 'get_subcommand_of';
|
|
my $foo_subcommand = Fcm::CLI::Subcommand->new({names => ['food', 'foo']});
|
|
my $bar_subcommand = Fcm::CLI::Subcommand->new({names => ['barley', 'bar']});
|
|
my $cli_config = $class->instance({
|
|
core_subcommands => [$foo_subcommand, $bar_subcommand],
|
|
vc_subcommands => [],
|
|
});
|
|
for my $key ('food', 'foo') {
|
|
is($cli_config->get_subcommand_of($key), $foo_subcommand,
|
|
"$prefix: $key");
|
|
}
|
|
for my $key ('barley', 'bar') {
|
|
is($cli_config->get_subcommand_of($key), $bar_subcommand,
|
|
"$prefix: $key");
|
|
}
|
|
is($cli_config->get_subcommand_of('baz'), undef, "$prefix: baz");
|
|
}
|
|
|
|
__END__
|