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