75 lines
2.1 KiB
Perl
Executable File
75 lines
2.1 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use Fcm::CLI::Option;
|
|
use Test::More qw{no_plan};
|
|
|
|
main();
|
|
|
|
sub main {
|
|
my $class = 'Fcm::CLI::Subcommand';
|
|
use_ok($class);
|
|
test_constructor($class);
|
|
test_has_a_name($class);
|
|
test_as_string($class);
|
|
}
|
|
|
|
################################################################################
|
|
# Tests the constructor
|
|
sub test_constructor {
|
|
my ($class) = @_;
|
|
my $prefix = 'constructor';
|
|
my %OPTION_OF = (
|
|
description => 'description value',
|
|
invoker_class => 'invoker_class value',
|
|
invoker_config => 'invoker_config value',
|
|
is_vc => 'is_vc value',
|
|
names => 'names value',
|
|
options => 'options value',
|
|
synopsis => 'synopsis value',
|
|
usage => 'usage value',
|
|
);
|
|
my $subcommand = Fcm::CLI::Subcommand->new(\%OPTION_OF);
|
|
isa_ok($subcommand, $class, $prefix);
|
|
for my $key (keys(%OPTION_OF)) {
|
|
my $getter = index($key, 'is') == 0 ? $key : "get_$key";
|
|
is($subcommand->$getter(), $OPTION_OF{$key}, "$prefix: $getter");
|
|
}
|
|
}
|
|
|
|
################################################################################
|
|
# Tests match a string name to a subcommand
|
|
sub test_has_a_name {
|
|
my ($class) = @_;
|
|
my $prefix = 'has a name';
|
|
my @NAMES = ('foo', 'bar', 'baz');
|
|
my $subcommand = $class->new({names => \@NAMES});
|
|
for my $name (@NAMES) {
|
|
ok($subcommand->has_a_name($name), "$prefix: $name");
|
|
}
|
|
for my $name (qw{egg ham mayo}) {
|
|
ok(!$subcommand->has_a_name($name), "$prefix: $name");
|
|
}
|
|
}
|
|
|
|
################################################################################
|
|
# Tests string representation of a subcommand
|
|
sub test_as_string {
|
|
my ($class) = @_;
|
|
my $prefix = 'as string';
|
|
my %OPTION_OF = (
|
|
'foo (bar, baz)' => ['foo', 'bar', 'baz'],
|
|
'foo (bar)' => ['foo', 'bar'],
|
|
'foo' => ['foo'],
|
|
q{} => [],
|
|
);
|
|
for my $key (keys(%OPTION_OF)) {
|
|
my $subcommand = $class->new({names => $OPTION_OF{$key}});
|
|
is($subcommand->as_string(), $key, "$prefix: $key");
|
|
}
|
|
}
|
|
|
|
__END__
|