X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F025-more-isa.t;h=f092bede9eb2d9f4845b65619608f6b594ada609;hb=59089ec36675c7df1998945b1446c37794f88306;hp=a457fa79ad54c145ec2b4e031e1c0aa1a92dfd07;hpb=3301fa546394abbef62f5a7f9bbfc1c49ae6eb50;p=gitmo%2FMouse.git diff --git a/t/025-more-isa.t b/t/025-more-isa.t index a457fa7..f092bed 100644 --- a/t/025-more-isa.t +++ b/t/025-more-isa.t @@ -1,8 +1,8 @@ #!/usr/bin/env perl use strict; use warnings; -use Test::More tests => 7; -use Test::Exception; +use Test::More tests => 29; +use Mouse::Util ':test'; do { package Class; @@ -39,3 +39,80 @@ 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+\)/; +do { + package Other; + use Mouse; + + has oops => ( + isa => 'Int', + default => "yikes", + ); +}; + +throws_ok { + Other->new; +} qr/Attribute \(oops\) does not pass the type constraint because: Validation failed for 'Int' failed with value yikes/; + +lives_ok { + Other->new(oops => 10); +}; + +# ClassName coverage tests + +do { + package A; + our @VERSION; + + package B; + our $VERSION = 1; + + package C; + our %ISA; + + package D; + our @ISA = 'Mouse::Object'; + + package E; + sub foo {} + + package F; + + package G::H; + sub bar {} + + package I; + our $NOT_CODE = 1; +}; + +do { + package ClassNameTests; + use Mouse; + + has class => ( + is => 'rw', + isa => 'ClassName', + ); +}; + +for ('A'..'E', 'G::H') { + lives_ok { + ClassNameTests->new(class => $_); + }; + + lives_ok { + my $obj = ClassNameTests->new; + $obj->class($_); + }; +} + +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 $_/; + + 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 $_/; +}; +