Implement basic usage of "enum" type constraints
[gitmo/Mouse.git] / t / 041-enum.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More tests => 8;
5 use Test::Exception;
6
7 do {
8     package Shirt;
9     use Mouse;
10     use Mouse::Util::TypeConstraints 'enum';
11
12     enum 'Size' => qw(small medium large);
13
14     has size => (
15         is  => 'rw',
16         isa => 'Size',
17     );
18 };
19
20 ok(Shirt->new(size => 'small'));
21 ok(Shirt->new(size => 'medium'));
22 ok(Shirt->new(size => 'large'));
23
24 throws_ok { Shirt->new(size => 'extra small') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for 'Size' failed with value extra small/;
25 throws_ok { Shirt->new(size => 'Small') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for 'Size' failed with value Small/;
26 throws_ok { Shirt->new(size => '') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for 'Size' failed with value /;
27 throws_ok { Shirt->new(size => 'small ') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for 'Size' failed with value small /;
28 throws_ok { Shirt->new(size => ' small') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for 'Size' failed with value  small/;
29