Correct error message to include 'Maybe' as implemented parametric type.
[gitmo/Mouse.git] / t / 025-more-isa.t
index 132d57f..0be7603 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env perl
 use strict;
 use warnings;
-use Test::More tests => 29;
+use Test::More tests => 30;
 use Test::Exception;
 
 do {
@@ -12,6 +12,9 @@ do {
         is  => 'rw',
         isa => 'Test::Builder',
     );
+
+    package Test::Builder::Subclass;
+    our @ISA = qw(Test::Builder);
 };
 
 can_ok(Class => 'tb');
@@ -21,6 +24,13 @@ lives_ok {
 };
 
 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
+    Class->new(tb => (bless {} => 'Test::Builder::Subclass'));
+};
+
+lives_ok {
     my $class = Class->new;
     $class->tb(Test::Builder->new);
     isa_ok($class->tb, 'Test::Builder');
@@ -94,7 +104,7 @@ do {
     );
 };
 
-for ('A'..'E', 'G::H') {
+for ('B'..'E', 'G::H') {
     lives_ok {
         ClassNameTests->new(class => $_);
     };
@@ -105,6 +115,18 @@ for ('A'..'E', 'G::H') {
     };
 }
 
+TODO: {
+    local $TODO = "Moose throws errors here. Mouse does not";
+    throws_ok {
+        ClassNameTests->new(class => 'A');
+    } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' failed 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/;
+}
+
 for ('F', 'G', 'I', 'Z') {
     throws_ok {
         ClassNameTests->new(class => $_);