Add support for :all on MooseX::Types::Combine
[gitmo/MooseX-Types.git] / t / 18_combined_libs.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use FindBin;
5 use lib "$FindBin::Bin/lib";
6
7 use Test::More;
8 use Test::Fatal;
9
10 BEGIN { use_ok 'Combined', qw/Foo2Alias MTFNPY NonEmptyStr/ }
11
12 # test that a type from TestLibrary was exported
13 ok Foo2Alias;
14
15 # test that a type from TestLibrary2 was exported
16 ok MTFNPY;
17
18 is NonEmptyStr->name, 'TestLibrary2::NonEmptyStr',
19     'precedence for conflicting types is correct';
20
21 like exception { Combined->import('NonExistentType') },
22 qr/\Qmain asked for a type (NonExistentType) which is not found in any of the type libraries (TestLibrary TestLibrary2) combined by Combined/,
23 'asking for a non-existent type from a combined type library gives a useful error';
24
25 {
26     package BadCombined;
27
28     use base 'MooseX::Types::Combine';
29
30     ::like ::exception { __PACKAGE__->provide_types_from('Empty') },
31     qr/Cannot use Empty in a combined type library, it does not provide any types/,
32     'cannot combine types from a package which is not a type library';
33
34     ::like ::exception { __PACKAGE__->provide_types_from('DoesNotExist') },
35     qr/Can't locate DoesNotExist\.pm/,
36     'cannot combine types from a package which does not exist';
37 }
38
39 is exception { 'Combined'->import(':all') }, undef, ':all syntax works';
40
41 done_testing();