Add my name to Changes
[gitmo/Mouse.git] / t / 025-more-isa.t
old mode 100644 (file)
new mode 100755 (executable)
index 0be7603..022c89c
@@ -1,7 +1,7 @@
 #!/usr/bin/env perl
 use strict;
 use warnings;
-use Test::More tests => 30;
+use Test::More tests => 34;
 use Test::Exception;
 
 do {
@@ -54,6 +54,7 @@ do {
     use Mouse;
 
     has oops => (
+        is      => 'bare',
         isa     => 'Int',
         default => "yikes",
     );
@@ -138,3 +139,37 @@ for ('F', 'G', 'I', 'Z') {
     } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' failed with value $_/;
 };
 
+
+# Check that Roles can be used in 'isa' and they are constrained with
+# 'does'
+do {
+    package SausageRole;
+    use Mouse::Role;
+
+    package DoesSausage;
+    use Mouse;
+    with 'SausageRole';
+
+    package HasSausage;
+    use Mouse;
+
+    has sausage =>
+        (isa => 'SausageRole',
+         is => 'rw');
+
+};
+
+my $hs;
+lives_ok {
+    $hs = HasSausage->new(sausage => DoesSausage->new);    
+};
+lives_ok {
+    $hs->sausage(DoesSausage->new);
+};
+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=/;
+throws_ok {
+    $hs->sausage(Class->new);   
+} qr/^Attribute \(sausage\) does not pass the type constraint because: Validation failed for 'SausageRole' failed with value Class=/;
+