Implement basic usage of "enum" type constraints
[gitmo/Mouse.git] / t / 041-enum.t
CommitLineData
d44f0d03 1#!/usr/bin/env perl
2use strict;
3use warnings;
4use Test::More tests => 8;
5use Test::Exception;
6
7do {
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
20ok(Shirt->new(size => 'small'));
21ok(Shirt->new(size => 'medium'));
22ok(Shirt->new(size => 'large'));
23
24throws_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/;
25throws_ok { Shirt->new(size => 'Small') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for 'Size' failed with value Small/;
26throws_ok { Shirt->new(size => '') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for 'Size' failed with value /;
27throws_ok { Shirt->new(size => 'small ') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for 'Size' failed with value small /;
28throws_ok { Shirt->new(size => ' small') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for 'Size' failed with value small/;
29