use strict;
use Test::More;
use Data::Dumper;
use Exception::Class::TryCatch;
use Getopt::Lucid ':all';
use Getopt::Lucid::Exception;
# Work around win32 console buffering that can show diags out of order
Test::More->builder->failure_output(*STDOUT) if $ENV{HARNESS_VERBOSE};
sub why {
my %vars = @_;
$Data::Dumper::Sortkeys = 1;
return "\n" . Data::Dumper->Dump([values %vars],[keys %vars]) . "\n";
}
#--------------------------------------------------------------------------#
# Test cases
#--------------------------------------------------------------------------#
my $spec = [
Switch("--ver-bose"),
Switch("--test"),
Switch("-r"),
];
plan tests => 2;
my $gl;
try eval { $gl = Getopt::Lucid->new($spec) };
catch my $err;
is( $err, undef, "spec should validate" );
SKIP: {
skip( "because spec did not validate", 1) if $err;
my @expect = sort qw(ver-bose test r);
my @got = sort $gl->names();
is_deeply( \@got, \@expect, "names() produces keywords") or
diag why( got => \@got, expected => \@expect );
}