Commit | Line | Data |
b2a6a381 |
1 | use strict; |
2 | use warnings; |
3 | use Test::More; |
4 | |
5 | BEGIN { |
6 | package MyTypes; |
7 | |
aa19f5d2 |
8 | use MooseX::Types::Moose qw( Item ); |
7f95d0bf |
9 | use MooseX::Types -declare => [ 'ClassyType', 'NoClass' ]; |
b2a6a381 |
10 | |
cabfc8ed |
11 | class_type 'ClassyClass'; |
12 | |
13 | subtype ClassyType, as 'ClassyClass'; |
14 | |
aa19f5d2 |
15 | subtype NoClass, as Item, where { 1 }; |
7f95d0bf |
16 | } |
17 | |
18 | BEGIN { |
19 | |
20 | ok(!eval { MyTypes::ClassyType->new }, 'new without class loaded explodes'); |
21 | |
22 | like($@, qr/does not provide/, 'right exception'); |
23 | |
24 | ok(!eval { MyTypes::NoClass->new }, 'new on non-class type'); |
25 | |
26 | like($@, qr/non-class-type/, 'right exception'); |
b2a6a381 |
27 | } |
28 | |
29 | BEGIN { |
30 | |
31 | package ClassyClass; |
32 | |
33 | use Moose; |
34 | |
ee3f4093 |
35 | sub check { die "FAIL" } |
36 | |
b2a6a381 |
37 | package ClassyClassConsumer; |
38 | |
39 | BEGIN { MyTypes->import('ClassyType') } |
40 | use Moose; |
41 | |
42 | has om_nom => ( |
43 | is => 'ro', isa => ClassyType, default => sub { ClassyType->new } |
44 | ); |
45 | |
46 | } |
47 | |
48 | ok(my $o = ClassyClassConsumer->new, "Constructor happy"); |
49 | |
50 | is(ref($o->om_nom), 'ClassyClass', 'Attribute happy'); |
51 | |
195d6241 |
52 | ok(ClassyClassConsumer->new(om_nom => ClassyClass->new), 'Constructor happy'); |
53 | |
cabfc8ed |
54 | ok(!eval { ClassyClassConsumer->new(om_nom => 3) }, 'Type checked'); |
55 | |
b2a6a381 |
56 | done_testing; |