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