6 use Test::More tests => 37;
9 use_ok('MooseX::Getopt');
16 with 'MooseX::Getopt';
19 metaclass => 'MooseX::Getopt::Meta::Attribute',
22 default => 'file.dat',
40 default => sub { [] },
46 default => sub { {} },
54 my $app = App->new_with_options;
57 ok(!$app->verbose, '... verbosity is off as expected');
58 is($app->length, 24, '... length is 24 as expected');
59 is($app->data, 'file.dat', '... data is file.dat as expected');
60 is_deeply($app->libs, [], '... libs is [] as expected');
61 is_deeply($app->details, {}, '... details is {} as expected');
65 local @ARGV = ('--verbose', '--length', 50);
67 my $app = App->new_with_options;
70 ok($app->verbose, '... verbosity is turned on as expected');
71 is($app->length, 50, '... length is 50 as expected');
72 is($app->data, 'file.dat', '... data is file.dat as expected');
73 is_deeply($app->libs, [], '... libs is [] as expected');
74 is_deeply($app->details, {}, '... details is {} as expected');
78 local @ARGV = ('--verbose', '-f', 'foo.txt');
80 my $app = App->new_with_options;
83 ok($app->verbose, '... verbosity is turned on as expected');
84 is($app->length, 24, '... length is 24 as expected');
85 is($app->data, 'foo.txt', '... data is foo.txt as expected');
86 is_deeply($app->libs, [], '... libs is [] as expected');
87 is_deeply($app->details, {}, '... details is {} as expected');
91 local @ARGV = ('--verbose', '--libs', 'libs/', '--libs', 'includes/lib');
93 my $app = App->new_with_options;
96 ok($app->verbose, '... verbosity is turned on as expected');
97 is($app->length, 24, '... length is 24 as expected');
98 is($app->data, 'file.dat', '... data is foo.txt as expected');
100 ['libs/', 'includes/lib'],
101 '... libs is [libs/, includes/lib] as expected');
102 is_deeply($app->details, {}, '... details is {} as expected');
106 local @ARGV = ('--details', 'os=mac', '--details', 'name=foo');
108 my $app = App->new_with_options;
111 ok(!$app->verbose, '... verbosity is turned on as expected');
112 is($app->length, 24, '... length is 24 as expected');
113 is($app->data, 'file.dat', '... data is foo.txt as expected');
114 is_deeply($app->libs, [], '... libs is [] as expected');
115 is_deeply($app->details,
116 { os => 'mac', name => 'foo' },
117 '... details is { os => mac, name => foo } as expected');
121 # Test negation on booleans too ...
122 local @ARGV = ('--noverbose');
124 my $app = App->new_with_options;
127 ok(!$app->verbose, '... verbosity is turned off as expected');
128 is($app->length, 24, '... length is 24 as expected');
129 is($app->data, 'file.dat', '... file is file.dat as expected');
130 is_deeply($app->libs, [], '... libs is [] as expected');
131 is_deeply($app->details, {}, '... details is {} as expected');