remove useless shebangs in tests
[gitmo/MooseX-Getopt.git] / t / 107_union_bug.t
1 use strict;
2 use warnings;
3
4 use Test::More;
5
6 {
7     package example;
8
9     use Moose;
10     use Moose::Util::TypeConstraints;
11     with qw(
12         MooseX::Getopt
13     );
14
15     subtype 'ResultSet'
16         => as 'DBIx::Class::ResultSet';
17
18     subtype 'ResultList'
19         => as 'ArrayRef[Int]';
20
21     MooseX::Getopt::OptionTypeMap->add_option_type_to_map(
22             'ResultList'  => '=s',
23     );
24
25     coerce 'ResultList'
26         => from 'Str'
27         => via {
28             return [ grep { m/^\d+$/ } split /\D/,$_ ]; # <- split string into arrayref
29         };
30
31     has 'results' => (
32         is              => 'rw',
33         isa             => 'ResultList | ResultSet', # <- union constraint
34         coerce          => 1,
35     );
36
37     has 'other' => (
38         is              => 'rw',
39         isa             => 'Str',
40     );
41 }
42
43 # Without MooseX::Getopt
44 {
45     my $example = example->new({
46         results => '1234,5678,9012',
47         other   => 'test',
48     });
49     isa_ok($example, 'example');
50     is_deeply($example->results, [qw(1234 5678 9012)], 'result as expected');
51 }
52
53 # With MooseX::Getopt
54 {
55     local @ARGV = ('--results','1234,5678,9012','--other','test');
56     my $example = example->new_with_options;
57     isa_ok($example, 'example');
58
59     is($example->other,'test');
60     is_deeply($example->results, [qw(1234 5678 9012)], 'result as expected');
61 }
62
63 done_testing;
64