Commit | Line | Data |
5c6054f9 |
1 | use strict; |
2 | use warnings; |
1f314cdc |
3 | |
9fbb5be9 |
4 | use Test::More tests => 22; |
5 | use Test::NoWarnings 1.04 ':early'; |
5c6054f9 |
6 | use Moose (); |
7 | use Moose::Meta::Class; |
8 | |
9 | foreach my $role (qw/ |
10 | MooseX::Getopt |
11 | MooseX::Getopt::GLD |
12 | MooseX::Getopt::Basic |
13 | /) { |
14 | Class::MOP::load_class($role); |
15 | |
16 | my $meta = Moose::Meta::Class->create_anon_class( |
17 | superclasses => ['Moose::Object'], |
18 | ); |
19 | $meta->add_attribute('BigD', traits => ['Getopt'], isa => 'Bool', |
20 | cmd_aliases => ['D'], is => 'ro'); |
21 | $meta->add_attribute('SmallD', traits => ['Getopt'], isa => 'Bool', |
2557b526 |
22 | cmd_aliases => ['d'], is => 'ro'); |
5c6054f9 |
23 | $role->meta->apply($meta); |
24 | |
25 | { |
26 | my $obj = $meta->name->new_with_options( |
27 | { argv => ["-d"], no_ignore_case => 1} |
28 | ); |
29 | |
30 | ok((! $obj->BigD), "BigD was not set for argv -d on $role"); |
31 | ok($obj->SmallD, "SmallD was set for argv -d on $role"); |
32 | |
33 | } |
34 | ok($meta->name->new_with_options({ argv => ['-d'], no_ignore_case => 1}) |
35 | ->SmallD, |
36 | "SmallD was set for argv -d on $role"); |
37 | { |
38 | local @ARGV = ('-d'); |
39 | ok($meta->name->new_with_options()->SmallD, |
40 | "SmallD was set for ARGV on $role"); |
41 | } |
42 | |
43 | ok($meta->name->new_with_options({ argv => ['-D'], no_ignore_case => 1}) |
44 | ->BigD, |
45 | "BigD was set for argv -d on $role"); |
46 | |
47 | { |
48 | my $obj = $meta->name->new_with_options( |
49 | { argv => ['-D', "-d"], no_ignore_case => 1} |
50 | ); |
51 | |
52 | ok($obj->BigD, "BigD was set for argv -D -d on $role"); |
53 | ok($obj->SmallD, "SmallD was set for argv -D -d on $role"); |
54 | |
55 | } |
56 | } |
57 | |