Heray-Was-Here
Server : Apache
System : Linux vps103298.mylogin.co 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64
User : calvet ( 273824)
PHP Version : 7.4.33
Disable Function : NONE
Directory :  /usr/share/doc/perl-Mouse/t/001_mouse/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //usr/share/doc/perl-Mouse/t/001_mouse/041-enum.t
#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 19;
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+' with value extra small/;
    throws_ok { $class->new(size => 'Small') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for '\S+' with value Small/;
    throws_ok { $class->new(size => '') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for '\S+' with value /;
    throws_ok { $class->new(size => 'small ') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for '\S+' with value small /;
    throws_ok { $class->new(size => ' small') } qr/^Attribute \(size\) does not pass the type constraint because: Validation failed for '\S+' with value  small/;
}

use Mouse::Util::TypeConstraints qw(enum);

my $t = enum 'Foo', [qw(foo bar)];

ok $t->check('foo'), 'enum $name, $array_ref';
ok $t->check('bar');
ok!$t->check('baz');


Hry