13 isa => 'Test::Builder',
21 package Test::Builder::Subclass;
22 our @ISA = qw(Test::Builder);
25 can_ok(Class => 'tb');
28 Class->new(tb => Test::Builder->new);
32 Class->new(obj => Test::Builder->new);
36 # Test::Builder was a bizarre choice, because it's a singleton. Because of
37 # that calling new on T:B:S won't work. Blessing directly -- rjbs,
39 Class->new(tb => (bless {} => 'Test::Builder::Subclass'));
43 my $class = Class->new;
44 $class->tb(Test::Builder->new);
45 isa_ok($class->tb, 'Test::Builder');
50 } qr/Attribute \(tb\) does not pass the type constraint because: Validation failed for 'Test::Builder' with value 3/;
53 my $class = Class->new;
55 } qr/Attribute \(tb\) does not pass the type constraint because: Validation failed for 'Test::Builder' with value 3/;
58 Class->new(tb => Class->new);
59 } qr/Attribute \(tb\) does not pass the type constraint because: Validation failed for 'Test::Builder' with value Class=HASH\(\w+\)/;
62 Class->new(obj => 42);
63 } qr/Attribute \(obj\) does not pass the type constraint because: Validation failed for 'UNIVERSAL' with value 42/;
78 } qr/Attribute \(oops\) does not pass the type constraint because: Validation failed for 'Int' with value yikes/;
81 Other->new(oops => 10);
84 # ClassName coverage tests
90 package Bx; # 'B' conflicts the B module
97 our @ISA = 'Mouse::Object';
108 no warnings 'once'; # work around 5.6.2
113 package ClassNameTests;
122 for ('Bx', 'D'..'E', 'G::H') {
124 ClassNameTests->new(class => $_);
128 my $obj = ClassNameTests->new;
134 ClassNameTests->new(class => 'A');
135 } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' with value A/;
138 my $obj = ClassNameTests->new;
140 } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' with value A/;
143 ClassNameTests->new(class => 'C');
144 } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' with value C/;
147 my $obj = ClassNameTests->new;
149 } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' with value C/;
151 for ('F', 'G', 'I', 'Z') {
153 ClassNameTests->new(class => $_);
154 } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' with value $_/;
157 my $obj = ClassNameTests->new;
159 } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' with value $_/;
163 # Check that Roles can be used in 'isa' and they are constrained with
177 (isa => 'SausageRole',
184 $hs = HasSausage->new(sausage => DoesSausage->new);
187 $hs->sausage(DoesSausage->new);
190 HasSausage->new(sausage => Class->new);
191 } qr/^Attribute \(sausage\) does not pass the type constraint because: Validation failed for 'SausageRole' with value Class=/;
193 $hs->sausage(Class->new);
194 } qr/^Attribute \(sausage\) does not pass the type constraint because: Validation failed for 'SausageRole' with value Class=/;