2025-09-05 09:42:21 +02:00

169 lines
5.7 KiB
Perl
Executable File

#!/usr/bin/perl
use strict;
use warnings;
use Test::More qw{no_plan};
main();
sub main {
my $class = 'Fcm::CLI::Option';
use_ok($class);
test_simplest($class);
test_simplest_scalar_arg($class);
test_simplest_array_arg($class);
test_simplest_hash_arg($class);
test_simple($class);
test_simple_scalar_arg($class);
test_simple_array_arg($class);
test_simple_hash_arg($class);
test_long_letter($class);
}
################################################################################
# Tests simplest usage
sub test_simplest {
my ($class) = @_;
my $prefix = 'simplest';
my $option = $class->new({
delimiter => 'delimiter-value',
description => 'description value',
name => 'name-value',
});
isa_ok($option, $class);
is($option->get_delimiter(), 'delimiter-value', "$prefix: delimiter");
is($option->get_description(), 'description value', "$prefix: description");
is($option->get_name(), 'name-value', "$prefix: name");
is($option->get_letter(), undef, "$prefix: letter");
ok(!$option->has_arg(), "$prefix: has arg");
is($option->get_arg_for_getopt_long(), 'name-value', "$prefix: has arg");
}
################################################################################
# Tests simplest usage with a scalar argument
sub test_simplest_scalar_arg {
my ($class) = @_;
my $prefix = 'simplest scalar arg';
my $option = $class->new({
description => 'description value',
name => 'name-value',
has_arg => $class->SCALAR_ARG,
});
isa_ok($option, $class);
is($option->has_arg(), $class->SCALAR_ARG, "$prefix: has arg");
is($option->get_arg_for_getopt_long(), 'name-value=s', "$prefix: has arg");
}
################################################################################
# Tests simplest usage with array argument
sub test_simplest_array_arg {
my ($class) = @_;
my $prefix = 'simplest array arg';
my $option = $class->new({
description => 'description value',
name => 'name-value',
has_arg => $class->ARRAY_ARG,
});
isa_ok($option, $class);
is($option->has_arg(), $class->ARRAY_ARG, "$prefix: has arg");
is($option->get_arg_for_getopt_long(), 'name-value=s@', "$prefix: has arg");
}
################################################################################
# Tests simplest usage with hash argument
sub test_simplest_hash_arg {
my ($class) = @_;
my $prefix = 'simplest hash arg';
my $option = $class->new({
description => 'description value',
name => 'name-value',
has_arg => $class->HASH_ARG,
});
isa_ok($option, $class);
is($option->has_arg(), $class->HASH_ARG, "$prefix: has arg");
is($option->get_arg_for_getopt_long(), 'name-value=s%', "$prefix: has arg");
}
################################################################################
# Tests simple usage
sub test_simple {
my ($class) = @_;
my $prefix = 'simple';
my $option = $class->new({
description => 'description value',
name => 'name-value',
letter => 'n',
});
isa_ok($option, $class);
is($option->get_description(), 'description value', "$prefix: description");
is($option->get_name(), 'name-value', "$prefix: name");
is($option->get_letter(), 'n', "$prefix: letter");
is($option->has_arg(), $class->NO_ARG, "$prefix: has arg");
is($option->get_arg_for_getopt_long(), 'name-value|n', "$prefix: has arg");
}
################################################################################
# Tests simple usage with a scalar argument
sub test_simple_scalar_arg {
my ($class) = @_;
my $prefix = 'simple scalar arg';
my $option = $class->new({
description => 'description value',
name => 'name-value',
letter => 'n',
has_arg => $class->SCALAR_ARG,
});
isa_ok($option, $class);
is($option->has_arg(), $class->SCALAR_ARG, "$prefix: has arg");
is($option->get_arg_for_getopt_long(), 'name-value|n=s', "$prefix: has arg");
}
################################################################################
# Tests simplest usage with array argument
sub test_simple_array_arg {
my ($class) = @_;
my $prefix = 'simple array arg';
my $option = $class->new({
description => 'description value',
name => 'name-value',
letter => 'n',
has_arg => $class->ARRAY_ARG,
});
isa_ok($option, $class);
is($option->has_arg(), $class->ARRAY_ARG, "$prefix: has arg");
is($option->get_arg_for_getopt_long(), 'name-value|n=s@', "$prefix: has arg");
}
################################################################################
# Tests simplest usage with hash argument
sub test_simple_hash_arg {
my ($class) = @_;
my $prefix = 'simple hash arg';
my $option = $class->new({
description => 'description value',
name => 'name-value',
letter => 'n',
has_arg => $class->HASH_ARG,
});
isa_ok($option, $class);
is($option->has_arg(), $class->HASH_ARG, "$prefix: has arg");
is($option->get_arg_for_getopt_long(), 'name-value|n=s%', "$prefix: has arg");
}
################################################################################
# Tests longer than 1 letter
sub test_long_letter {
my ($class) = @_;
my $prefix = 'long letter';
my $option = $class->new({
name => 'name-value',
letter => 'name',
});
isa_ok($option, $class);
is($option->get_letter(), 'n', "$prefix: letter");
is($option->get_arg_for_getopt_long(), 'name-value|n', "$prefix: has arg");
}
__END__