#!/usr/bin/perl use warnings; use strict; use Test::More no_plan =>;#< use Getopt::Abridged; { my $go = Getopt::Abridged->new( 'w|world=s=World', 'g|greeting=s=Hello', 'foo=@s', 'bar=@s=this,that,then', 'baz=%s=foo=bar,x=8', 'v|verbose=1', 'q|quiet=!verbose', -positional => ['world'], ); ok($go, 'constructor'); { my $opt = $go->process([]); can_ok($opt, 'world'); can_ok($opt, 'greeting'); can_ok($opt, 'verbose'); is($opt->world, 'World'); is($opt->greeting, 'Hello'); is_deeply([$opt->bar], [qw(this that then)]); is_deeply({$opt->baz}, {foo => bar => x => 8}); is($opt->verbose, 1); } { my $opt = $go->process(['You']); is($opt->world, 'You'); } { my $opt = $go->process(['--verbose', '-g', 'bah']); is($opt->verbose, 1); is($opt->greeting, 'bah'); } { my $opt = $go->process(['-q']); is($opt->verbose, 0); } { my $opt = $go->process(['--quiet']); is($opt->verbose, 0); } } { # now with this conversion business my $was = Getopt::Abridged->can('process'); Getopt::Abridged->import('pod'); ok(Getopt::Abridged->can('process') != $was, 'replaced'); Getopt::Abridged->unimport(); ok(Getopt::Abridged->can('process') == $was, 'restored'); Getopt::Abridged->import('pod'); my $go = Getopt::Abridged->new( 'w|world=s=World', 'g|greeting=s=Hello', 'f|foo=@n', 'verbose', 'q|quiet=!verbose', ); eval {$go->process('foo') }; like($@, qr/should have no arguments/); my $string = ''; open(my $fh, '>', \$string) or die "cannot open string ref - $!"; # TODO a package variable is ok for testing, but not much of an API local $Getopt::Abridged::PODHANDLE = $Getopt::Abridged::PODHANDLE = $fh; is($go->process(), undef); my @exp = map({s/^ //; $_} split(/\n/, <<' ---')); =head1 Usage basic.t [options] =head1 Options =over =item -w, --world WORLD The world. DEFAULT: World =item -g, --greeting GREETING The greeting. DEFAULT: Hello =item -f, --foo FOO [--foo ...] (number) The foo. =item --verbose The verbose. DEFAULT: 0 =item -q, --quiet, --no-verbose The no_verbose. =item --version Print version number and quit. =item -h, --help Show help about options. =back =cut --- close($fh); my @got = split(/\n/, $string); is_deeply(\@got, \@exp); } # vim:ts=2:sw=2:et:sta