Commit | Line | Data |
b841b2a3 |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
471c4f09 |
6 | use Test::More tests => 1; |
b841b2a3 |
7 | use Test::Exception; |
8 | |
9 | BEGIN { |
10 | use_ok('Moose'); |
11 | } |
e9bb8a31 |
12 | |
13 | =pod |
14 | |
15 | ==> AtLeast.pm <== |
16 | package BAST::Web::Model::Constraint::AtLeast; |
17 | |
18 | use strict; |
19 | use warnings; |
20 | use Moose; |
21 | use BAST::Web::Model::Constraint; |
22 | |
23 | extends 'BAST::Web::Model::Constraint'; |
24 | |
25 | has 'value' => (isa => 'Num', is => 'ro'); |
26 | |
27 | sub validate { |
28 | my ($self, $field) = @_; |
29 | if ($self->validation_value($field) >= $self->value) { |
30 | return undef; |
31 | } else { |
32 | return $self->error_message; |
33 | } |
34 | } |
35 | |
36 | sub error_message { 'must be at least '.shift->value; } |
37 | |
38 | 1; |
39 | |
40 | ==> NoMoreThan.pm <== |
41 | package BAST::Web::Model::Constraint::NoMoreThan; |
42 | |
43 | use strict; |
44 | use warnings; |
45 | use Moose; |
46 | use BAST::Web::Model::Constraint; |
47 | |
48 | extends 'BAST::Web::Model::Constraint'; |
49 | |
50 | has 'value' => (isa => 'Num', is => 'ro'); |
51 | |
52 | sub validate { |
53 | my ($self, $field) = @_; |
54 | if ($self->validation_value($field) <= $self->value) { |
55 | return undef; |
56 | } else { |
57 | return $self->error_message; |
58 | } |
59 | } |
60 | |
61 | sub error_message { 'must be no more than '.shift->value; } |
62 | |
63 | 1; |
64 | |
65 | ==> OnLength.pm <== |
66 | package BAST::Web::Model::Constraint::OnLength; |
67 | |
68 | use strict; |
69 | use warnings; |
70 | use Moose; |
71 | |
72 | has 'units' => (isa => 'Str', is => 'ro'); |
73 | |
74 | override 'value' => sub { |
75 | return length(super()); |
76 | }; |
77 | |
78 | override 'error_message' => sub { |
79 | my $self = shift; |
80 | return super().' '.$self->units; |
81 | }; |
82 | |
83 | 1; |
84 | |
85 | package BAST::Web::Model::Constraint::LengthNoMoreThan; |
86 | |
87 | use strict; |
88 | use warnings; |
89 | use Moose; |
90 | use BAST::Web::Model::Constraint::NoMoreThan; |
91 | use BAST::Web::Model::Constraint::OnLength; |
92 | |
93 | extends 'BAST::Web::Model::Constraint::NoMoreThan'; |
94 | with 'BAST::Web::Model::Constraint::OnLength'; |
95 | |
96 | =cut |