6 use Test::More tests => 47;
9 use_ok('MooseX::Getopt');
16 with 'MooseX::Getopt';
19 metaclass => 'MooseX::Getopt::Meta::Attribute',
22 default => 'file.dat',
27 metaclass => 'MooseX::Getopt::Meta::Attribute',
31 cmd_aliases => [qw/ moocow m c /],
35 metaclass => 'MooseX::Getopt::Meta::Attribute',
57 default => sub { [] },
63 default => sub { {} },
71 my $app = App->new_with_options;
74 ok(!$app->verbose, '... verbosity is off as expected');
75 is($app->length, 24, '... length is 24 as expected');
76 is($app->data, 'file.dat', '... data is file.dat as expected');
77 is_deeply($app->libs, [], '... libs is [] as expected');
78 is_deeply($app->details, {}, '... details is {} as expected');
82 local @ARGV = ('--verbose', '--length', 50);
84 my $app = App->new_with_options;
87 ok($app->verbose, '... verbosity is turned on as expected');
88 is($app->length, 50, '... length is 50 as expected');
89 is($app->data, 'file.dat', '... data is file.dat as expected');
90 is_deeply($app->libs, [], '... libs is [] as expected');
91 is_deeply($app->details, {}, '... details is {} as expected');
95 local @ARGV = ('--verbose', '-f', 'foo.txt');
97 my $app = App->new_with_options;
100 ok($app->verbose, '... verbosity is turned on as expected');
101 is($app->length, 24, '... length is 24 as expected');
102 is($app->data, 'foo.txt', '... data is foo.txt as expected');
103 is_deeply($app->libs, [], '... libs is [] as expected');
104 is_deeply($app->details, {}, '... details is {} as expected');
108 local @ARGV = ('--verbose', '--libs', 'libs/', '--libs', 'includes/lib');
110 my $app = App->new_with_options;
113 ok($app->verbose, '... verbosity is turned on as expected');
114 is($app->length, 24, '... length is 24 as expected');
115 is($app->data, 'file.dat', '... data is foo.txt as expected');
116 is_deeply($app->libs,
117 ['libs/', 'includes/lib'],
118 '... libs is [libs/, includes/lib] as expected');
119 is_deeply($app->details, {}, '... details is {} as expected');
123 local @ARGV = ('--details', 'os=mac', '--details', 'name=foo');
125 my $app = App->new_with_options;
128 ok(!$app->verbose, '... verbosity is turned on as expected');
129 is($app->length, 24, '... length is 24 as expected');
130 is($app->data, 'file.dat', '... data is foo.txt as expected');
131 is_deeply($app->libs, [], '... libs is [] as expected');
132 is_deeply($app->details,
133 { os => 'mac', name => 'foo' },
134 '... details is { os => mac, name => foo } as expected');
138 # Test negation on booleans too ...
139 local @ARGV = ('--noverbose');
141 my $app = App->new_with_options;
144 ok(!$app->verbose, '... verbosity is turned off as expected');
145 is($app->length, 24, '... length is 24 as expected');
146 is($app->data, 'file.dat', '... file is file.dat as expected');
147 is_deeply($app->libs, [], '... libs is [] as expected');
148 is_deeply($app->details, {}, '... details is {} as expected');
151 # Test cmd_alias without cmd_flag
153 local @ARGV = ('--cow', '42');
154 my $app = App->new_with_options;
156 is($app->cow, 42, 'cmd_alias, but not using it');
159 local @ARGV = ('--moocow', '88');
160 my $app = App->new_with_options;
162 is($app->cow, 88, 'cmd_alias, using long one');
165 local @ARGV = ('-c', '99');
166 my $app = App->new_with_options;
168 is($app->cow, 99, 'cmd_alias, using short one');
171 # Test cmd_alias + cmd_flag
173 local @ARGV = ('--horsey', '123');
174 my $app = App->new_with_options;
176 is($app->horse, 123, 'cmd_alias+cmd_flag, using flag');
179 local @ARGV = ('-x', '321');
180 my $app = App->new_with_options;
182 is($app->horse, 321, 'cmd_alias+cmd_flag, using alias');