X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F001_mouse%2F041-enum.t;fp=t%2F001_mouse%2F041-enum.t;h=5546f4f1f32dcbaaf3e3c3ef0f72c197d58427fe;hb=920139b3efca66d2caeeef306c97fa0da62c6b73;hp=0000000000000000000000000000000000000000;hpb=b644ef5d28f6076859080482d8b44727c1410e1c;p=gitmo%2FMouse.git diff --git a/t/001_mouse/041-enum.t b/t/001_mouse/041-enum.t new file mode 100644 index 0000000..5546f4f --- /dev/null +++ b/t/001_mouse/041-enum.t @@ -0,0 +1,40 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More tests => 16; +use Test::Exception; + +do { + package Shirt; + use Mouse; + use Mouse::Util::TypeConstraints 'enum'; + + enum 'Size' => qw(small medium large); + + has size => ( + is => 'rw', + isa => 'Size', + ); + + package Shirt::Anon; + use Mouse; + use Mouse::Util::TypeConstraints 'enum'; + + has size => ( + is => 'rw', + isa => enum ['small', 'medium', 'large'], + ); +}; + +for my $class ('Shirt', 'Shirt::Anon') { + ok($class->new(size => 'small')); + ok($class->new(size => 'medium')); + ok($class->new(size => 'large')); + + throws_ok { $class->new(size => 'extra small') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for '\S+' failed with value extra small/; + throws_ok { $class->new(size => 'Small') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for '\S+' failed with value Small/; + throws_ok { $class->new(size => '') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for '\S+' failed with value /; + throws_ok { $class->new(size => 'small ') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for '\S+' failed with value small /; + throws_ok { $class->new(size => ' small') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for '\S+' failed with value small/; +} +