App-Gimei
view release on metacpan or search on metacpan
use v5.36;
package t::CLI;
use App::Gimei::Runner;
use Capture::Tiny qw(capture);
use Class::Tiny qw(stdout stderr exit_code error_message);
sub run ( $class, @args ) {
my $self = $class->new;
my @capture = capture {
my $code = eval { App::Gimei::Runner->new->execute(@args) };
$self->exit_code($code);
$self->error_message($@);
};
$self->stdout( $capture[0] );
$self->stderr( $capture[1] );
return $self;
}
1;
} else {
is $cli->exit_code, 0, "$t->{Name} exit_code";
}
if ( ref( $t->{expected_stdout} ) eq 'Regexp' ) {
like $cli->stdout, $t->{expected_stdout}, "$t->{Name} stdout";
} else {
is $cli->stdout, $t->{expected_stdout}, "$t->{Name} stdout";
}
if ( ref( $t->{expected_stderr} ) eq 'Regexp' ) {
like $cli->stderr, $t->{expected_stderr}, "$t->{Name} stderr";
} else {
is $cli->stderr, $t->{expected_stderr}, "$t->{Name} stderr";
}
}
done_testing;
}
1;
t/option_h.t view on Meta::CPAN
use lib ".";
use t::Util qw(run);
my @tests = (
{
Name => 'long form',
args => ['-help'],
expected_error_message => '',
expected_stdout => qr/^Usage:/,
expected_stderr => '',
},
{
Name => 'short form',
args => ['-h'],
expected_error_message => '',
expected_stdout => qr/^Usage:/,
expected_stderr => '',
},
);
run(@tests);
t/option_n.t view on Meta::CPAN
use lib ".";
use t::Util qw(run);
my @tests = (
{
Name => 'number expected',
args => [ '-n', 'Alice' ],
expected_error_message =>
qr/Error: Value "Alice" invalid for option n \((integer )?number expected\)\n/,
expected_stdout => '',
expected_stderr => '',
},
{
Name => 'positive number expected',
args => [ '-n', '-1' ],
expected_error_message =>
"Error: value -1 invalid for option n (must be positive number)\n",
expected_stdout => '',
expected_stderr => '',
},
{
Name => '-n 1',
args => [ '-n', '1' ],
expected_error_message => '',
expected_stdout => qr/^\S+\s\S+$/,
expected_stderr => '',
},
{
Name => '-n 2',
args => [ '-n', '2', 'name:family' ],
expected_error_message => '',
expected_stdout => qr/^\S+\n\S+$/,
expected_stderr => '',
},
);
run(@tests);
t/option_sep.t view on Meta::CPAN
use v5.36;
use lib ".";
use t::Util qw(run);
my @tests = (
{
Name => '-sep :',
args => [ '-sep', ':' ],
expected_stdout => qr/^\S+\s\S+$/,
expected_stderr => '',
expected_error_message => '',
},
{
Name => '-sep : pref, city',
args => [ '-sep', ':', 'address:prefecture', 'address:city' ],
expected_stdout => qr/^[^:]+:[^:]+$/,
expected_stderr => '',
expected_error_message => '',
},
);
run(@tests);
t/option_v.t view on Meta::CPAN
use lib ".";
use t::Util qw(run);
my @tests = (
{
Name => 'long form',
args => ['-version'],
expected_error_message => '',
expected_stdout => "$App::Gimei::VERSION\n",
expected_stderr => '',
},
{
Name => 'short form',
args => ['-v'],
expected_error_message => '',
expected_stdout => "$App::Gimei::VERSION\n",
expected_stderr => '',
},
);
run(@tests);
use lib ".";
use t::Util qw(run);
my @tests = (
{
Name => 'default',
args => ['name'],
expected_error_message => '',
expected_stdout => qr/^\S+\s\S+$/,
expected_stderr => '',
},
{
Name => 'address->romaji',
args => ['address:romaji'],
expected_error_message =>
"Error: rendering romaji is not supported for address\n",
expected_stdout => '',
expected_stderr => '',
},
{
Name => 'gender',
args => ['name:gender'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'kanji',
args => ['name:kanji'],
expected_error_message => '',
expected_stdout => qr/^\S+\s\S+$/,
expected_stderr => '',
},
{
Name => 'hiragana',
args => ['name:family:hiragana'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'katakana',
args => ['address:katakana'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'unknown rendering',
args => ['address:prefecture:romaji'],
expected_error_message =>
"Error: rendering romaji is not supported for address\n",
expected_stdout => '',
expected_stderr => '',
},
);
run(@tests);
t/subtype.t view on Meta::CPAN
use lib ".";
use t::Util qw(run);
my @tests = (
{
Name => 'family',
args => ['name:family'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'last',
args => ['name:last'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'given',
args => ['male:given'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'first',
args => ['female:first'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'gender',
args => ['name:gender'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'sex',
args => ['name:sex'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'unknown',
args => ['female:unknown'],
expected_error_message => "Error: unknown subtype or rendering: unknown\n",
expected_stdout => '',
expected_stderr => '',
},
{
Name => 'prefecture',
args => ['address:prefecture'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'city',
args => ['address:city'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'town',
args => ['address:town'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'unknown',
args => ['address:unknown'],
expected_error_message => "Error: unknown subtype or rendering: unknown\n",
expected_stdout => '',
expected_stderr => '',
},
);
run(@tests);
t/word_type.t view on Meta::CPAN
use lib ".";
use t::Util qw(run);
my @tests = (
{
Name => 'default',
args => [],
expected_error_message => '',
expected_stdout => qr/^\S+\s\S+$/,
expected_stderr => '',
},
{
Name => 'name',
args => ['name'],
expected_error_message => '',
expected_stdout => qr/^\S+\s\S+$/,
expected_stderr => '',
},
{
Name => 'male',
args => ['male'],
expected_error_message => '',
expected_stdout => qr/^\S+\s\S+$/,
expected_stderr => '',
},
{
Name => 'female',
args => ['female'],
expected_error_message => '',
expected_stdout => qr/^\S+\s\S+$/,
expected_stderr => '',
},
{
Name => 'address',
args => ['address'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'not supported',
args => ['NOT_SUPPORTED'],
expected_error_message => "Error: unknown word_type: NOT_SUPPORTED\n",
expected_stdout => '',
expected_stderr => '',
},
);
run(@tests);
( run in 0.431 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )