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