8 use MooseX::Types -declare => [ 'ClassyType', 'NoClass' ];
10 class_type 'ClassyClass';
12 subtype ClassyType, as 'ClassyClass';
14 subtype NoClass, as 'Item', where { 1 };
19 ok(!eval { MyTypes::ClassyType->new }, 'new without class loaded explodes');
21 like($@, qr/does not provide/, 'right exception');
23 ok(!eval { MyTypes::NoClass->new }, 'new on non-class type');
25 like($@, qr/non-class-type/, 'right exception');
34 sub check { die "FAIL" }
36 package ClassyClassConsumer;
38 BEGIN { MyTypes->import('ClassyType') }
42 is => 'ro', isa => ClassyType, default => sub { ClassyType->new }
47 ok(my $o = ClassyClassConsumer->new, "Constructor happy");
49 is(ref($o->om_nom), 'ClassyClass', 'Attribute happy');
51 ok(ClassyClassConsumer->new(om_nom => ClassyClass->new), 'Constructor happy');
53 ok(!eval { ClassyClassConsumer->new(om_nom => 3) }, 'Type checked');