Add tests for enum
[gitmo/Moose.git] / t / 040_type_constraints / 015_enum.t
CommitLineData
c4fe165f 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More tests => 97;
7
8use Scalar::Util ();
9
10BEGIN {
11 use_ok('Moose::Util::TypeConstraints');
12}
13
14enum Letter => 'a'..'z', 'A'..'Z';
15enum Language => 'Perl 5', 'Perl 6', 'PASM', 'PIR'; # any others? ;)
16enum Metacharacter => '*', '+', '?', '.', '|', '(', ')', '[', ']', '\\';
17
18my @valid_letters = ('a'..'z', 'A'..'Z');
19
20my @invalid_letters = qw/ab abc abcd/;
21push @invalid_letters, qw/0 4 9 ~ @ $ %/;
22push @invalid_letters, qw/l33t st3v4n 3num/;
23
24my @valid_languages = ('Perl 5', 'Perl 6', 'PASM', 'PIR');
25my @invalid_languages = ('Python', 'Ruby', 'Perl 666', 'PASM++');
26
27my @valid_metacharacters = (qw/* + ? . | ( ) [ ] /, '\\');
28my @invalid_metacharacters = qw/< > & % $ @ ! ~ `/;
29push @invalid_metacharacters, qw/.* fish(sticks)? atreides/;
30push @invalid_metacharacters, '^1?$|^(11+?)\1+$';
31
32Moose::Util::TypeConstraints->export_type_constraints_as_functions();
33
34ok(Letter($_), "'$_' is a letter") for @valid_letters;
35ok(!Letter($_), "'$_' is not a letter") for @invalid_letters;
36
37ok(Language($_), "'$_' is a language") for @valid_languages;
38ok(!Language($_), "'$_' is not a language") for @invalid_languages;
39
40ok(Metacharacter($_), "'$_' is a metacharacter") for @valid_metacharacters;
41ok(!Metacharacter($_), "'$_' is not a metacharacter")
42 for @invalid_metacharacters;
43