X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F040_type_constraints%2F015_enum.t;h=756a13af398ad38c7ec2faaea791e57af639fd37;hb=fde8e43f95fe996fbc2a778aa259feeb04552171;hp=dab1d0ae85e0258423a25d3d29b7ce07d3be9529;hpb=0bdc9d38dfd3de07aad929f6629f8fa65d434c27;p=gitmo%2FMouse.git diff --git a/t/040_type_constraints/015_enum.t b/t/040_type_constraints/015_enum.t index dab1d0a..756a13a 100644 --- a/t/040_type_constraints/015_enum.t +++ b/t/040_type_constraints/015_enum.t @@ -1,19 +1,22 @@ #!/usr/bin/perl +# This is automatically generated by author/import-moose-test.pl. +# DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!! +use t::lib::MooseCompat; use strict; use warnings; -use Test::More 'no_plan'; +use Test::More; +$TODO = q{Mouse is not yet completed}; +use Test::Exception; use Scalar::Util (); -use lib 't/lib'; use Mouse::Util::TypeConstraints; -use MooseCompat; enum Letter => 'a'..'z', 'A'..'Z'; enum Language => 'Perl 5', 'Perl 6', 'PASM', 'PIR'; # any others? ;) -enum Metacharacter => '*', '+', '?', '.', '|', '(', ')', '[', ']', '\\'; +enum Metacharacter => ['*', '+', '?', '.', '|', '(', ')', '[', ']', '\\']; my @valid_letters = ('a'..'z', 'A'..'Z'); @@ -47,19 +50,46 @@ ok(!Metacharacter($_), "'$_' is not a metacharacter") my $anon_enum = enum \@valid_languages; isa_ok($anon_enum, 'Mouse::Meta::TypeConstraint'); -#is($anon_enum->name, '__ANON__', '... got the right name'); -#is($anon_enum->parent->name, 'Str', '... got the right parent name'); +is($anon_enum->name, '__ANON__', '... got the right name'); +is($anon_enum->parent->name, 'Str', '... got the right parent name'); ok($anon_enum->check($_), "'$_' is a language") for @valid_languages; -#ok( !$anon_enum->equals( enum [qw(foo bar)] ), "doesn't equal a diff enum" ); -#ok( $anon_enum->equals( $anon_enum ), "equals itself" ); -#ok( $anon_enum->equals( enum \@valid_languages ), "equals duplicate" ); +ok( !$anon_enum->equals( enum [qw(foo bar)] ), "doesn't equal a diff enum" ); +ok( $anon_enum->equals( $anon_enum ), "equals itself" ); +ok( $anon_enum->equals( enum \@valid_languages ), "equals duplicate" ); -#ok( !$anon_enum->is_subtype_of('Object'), 'enum not a subtype of Object'); +ok( !$anon_enum->is_subtype_of('Object'), 'enum not a subtype of Object'); ok( !$anon_enum->is_a_type_of('Object'), 'enum not type of Object'); -#ok( !$anon_enum->is_subtype_of('ThisTypeDoesNotExist'), 'enum not a subtype of nonexistant type'); +ok( !$anon_enum->is_subtype_of('ThisTypeDoesNotExist'), 'enum not a subtype of nonexistant type'); ok( !$anon_enum->is_a_type_of('ThisTypeDoesNotExist'), 'enum not type of nonexistant type'); +# validation +throws_ok { Mouse::Meta::TypeConstraint->new(name => 'ZeroValues', values => []) } + qr/You must have at least two values to enumerate through/; + +throws_ok { Mouse::Meta::TypeConstraint->new(name => 'OneValue', values => [ 'a' ]) } + qr/You must have at least two values to enumerate through/; + +throws_ok { Mouse::Meta::TypeConstraint->new(name => 'ReferenceInEnum', values => [ 'a', {} ]) } + qr/Enum values must be strings, not 'HASH\(0x\w+\)'/; + +throws_ok { Mouse::Meta::TypeConstraint->new(name => 'UndefInEnum', values => [ 'a', undef ]) } + qr/Enum values must be strings, not undef/; + +throws_ok { + package Foo; + use Mouse; + use Mouse::Util::TypeConstraints; + + has error => ( + is => 'ro', + isa => enum ['a', 'aa', 'aaa'], # should be parenthesized! + default => 'aa', + ); +} qr/enum called with an array reference and additional arguments\. Did you mean to parenthesize the enum call's parameters\?/; + + +done_testing;