#!/usr/bin/env perl
use strict;
use warnings;
-use Test::More tests => 34;
+use Test::More;
use Test::Exception;
do {
isa => 'Test::Builder',
);
+ has obj => (
+ is => 'rw',
+ isa => 'UNIVERSAL',
+ );
+
package Test::Builder::Subclass;
our @ISA = qw(Test::Builder);
};
};
lives_ok {
+ Class->new(obj => Test::Builder->new);
+};
+
+lives_ok {
# Test::Builder was a bizarre choice, because it's a singleton. Because of
# that calling new on T:B:S won't work. Blessing directly -- rjbs,
# 2008-12-04
throws_ok {
Class->new(tb => 3);
-} qr/Attribute \(tb\) does not pass the type constraint because: Validation failed for 'Test::Builder' failed with value 3/;
+} qr/Attribute \(tb\) does not pass the type constraint because: Validation failed for 'Test::Builder' with value 3/;
throws_ok {
my $class = Class->new;
$class->tb(3);
-} qr/Attribute \(tb\) does not pass the type constraint because: Validation failed for 'Test::Builder' failed with value 3/;
+} qr/Attribute \(tb\) does not pass the type constraint because: Validation failed for 'Test::Builder' with value 3/;
throws_ok {
Class->new(tb => Class->new);
-} qr/Attribute \(tb\) does not pass the type constraint because: Validation failed for 'Test::Builder' failed with value Class=HASH\(\w+\)/;
+} qr/Attribute \(tb\) does not pass the type constraint because: Validation failed for 'Test::Builder' with value Class=HASH\(\w+\)/;
+
+throws_ok {
+ Class->new(obj => 42);
+} qr/Attribute \(obj\) does not pass the type constraint because: Validation failed for 'UNIVERSAL' with value 42/;
do {
package Other;
throws_ok {
Other->new;
-} qr/Attribute \(oops\) does not pass the type constraint because: Validation failed for 'Int' failed with value yikes/;
+} qr/Attribute \(oops\) does not pass the type constraint because: Validation failed for 'Int' with value yikes/;
lives_ok {
Other->new(oops => 10);
throws_ok {
ClassNameTests->new(class => 'A');
-} qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' failed with value A/;
+} qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' with value A/;
throws_ok {
my $obj = ClassNameTests->new;
$obj->class('A');
-} qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' failed with value A/;
+} qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' with value A/;
throws_ok {
ClassNameTests->new(class => 'C');
-} qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' failed with value C/;
+} qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' with value C/;
throws_ok {
my $obj = ClassNameTests->new;
$obj->class('C');
-} qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' failed with value C/;
+} qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' with value C/;
for ('F', 'G', 'I', 'Z') {
throws_ok {
ClassNameTests->new(class => $_);
- } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' failed with value $_/;
+ } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' with value $_/;
throws_ok {
my $obj = ClassNameTests->new;
$obj->class($_);
- } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' failed with value $_/;
+ } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' with value $_/;
};
};
throws_ok {
HasSausage->new(sausage => Class->new);
-} qr/^Attribute \(sausage\) does not pass the type constraint because: Validation failed for 'SausageRole' failed with value Class=/;
+} qr/^Attribute \(sausage\) does not pass the type constraint because: Validation failed for 'SausageRole' with value Class=/;
throws_ok {
$hs->sausage(Class->new);
-} qr/^Attribute \(sausage\) does not pass the type constraint because: Validation failed for 'SausageRole' failed with value Class=/;
+} qr/^Attribute \(sausage\) does not pass the type constraint because: Validation failed for 'SausageRole' with value Class=/;
+done_testing;