4 use Test::More tests => 34;
13 isa => 'Test::Builder',
16 package Test::Builder::Subclass;
17 our @ISA = qw(Test::Builder);
20 can_ok(Class => 'tb');
23 Class->new(tb => Test::Builder->new);
27 # Test::Builder was a bizarre choice, because it's a singleton. Because of
28 # that calling new on T:B:S won't work. Blessing directly -- rjbs,
30 Class->new(tb => (bless {} => 'Test::Builder::Subclass'));
34 my $class = Class->new;
35 $class->tb(Test::Builder->new);
36 isa_ok($class->tb, 'Test::Builder');
41 } qr/Attribute \(tb\) does not pass the type constraint because: Validation failed for 'Test::Builder' failed with value 3/;
44 my $class = Class->new;
46 } qr/Attribute \(tb\) does not pass the type constraint because: Validation failed for 'Test::Builder' failed with value 3/;
49 Class->new(tb => Class->new);
50 } qr/Attribute \(tb\) does not pass the type constraint because: Validation failed for 'Test::Builder' failed with value Class=HASH\(\w+\)/;
65 } qr/Attribute \(oops\) does not pass the type constraint because: Validation failed for 'Int' failed with value yikes/;
68 Other->new(oops => 10);
71 # ClassName coverage tests
77 package Bx; # 'B' conflicts the B module
84 our @ISA = 'Mouse::Object';
95 no warnings 'once'; # work around 5.6.2
100 package ClassNameTests;
109 for ('Bx', 'D'..'E', 'G::H') {
111 ClassNameTests->new(class => $_);
115 my $obj = ClassNameTests->new;
121 ClassNameTests->new(class => 'A');
122 } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' failed with value A/;
125 my $obj = ClassNameTests->new;
127 } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' failed with value A/;
130 ClassNameTests->new(class => 'C');
131 } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' failed with value C/;
134 my $obj = ClassNameTests->new;
136 } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' failed with value C/;
138 for ('F', 'G', 'I', 'Z') {
140 ClassNameTests->new(class => $_);
141 } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' failed with value $_/;
144 my $obj = ClassNameTests->new;
146 } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' failed with value $_/;
150 # Check that Roles can be used in 'isa' and they are constrained with
164 (isa => 'SausageRole',
171 $hs = HasSausage->new(sausage => DoesSausage->new);
174 $hs->sausage(DoesSausage->new);
177 HasSausage->new(sausage => Class->new);
178 } qr/^Attribute \(sausage\) does not pass the type constraint because: Validation failed for 'SausageRole' failed with value Class=/;
180 $hs->sausage(Class->new);
181 } qr/^Attribute \(sausage\) does not pass the type constraint because: Validation failed for 'SausageRole' failed with value Class=/;