Commit | Line | Data |
e3c07b19 |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
a5209c26 |
6 | use Test::More tests => 16; |
e3c07b19 |
7 | use Test::Moose 'does_ok'; |
8 | |
e3c07b19 |
9 | { |
10 | package MyHomePage; |
11 | use Moose; |
a5209c26 |
12 | use Moose::AttributeHelpers; |
e3c07b19 |
13 | |
14 | has 'counter' => ( |
d50fc84a |
15 | traits => [qw/Counter/], |
16 | is => 'ro', |
17 | isa => 'Int', |
18 | default => 0, |
19 | handles => { |
0d103ac9 |
20 | inc_counter => 'inc', |
21 | dec_counter => 'dec', |
22 | reset_counter => 'reset', |
23 | set_counter => 'set' |
e3c07b19 |
24 | } |
25 | ); |
26 | } |
27 | |
28 | my $page = MyHomePage->new(); |
d50fc84a |
29 | isa_ok( $page, 'MyHomePage' ); |
e3c07b19 |
30 | |
d50fc84a |
31 | can_ok( $page, $_ ) for qw[ |
e3c07b19 |
32 | dec_counter |
33 | inc_counter |
34 | reset_counter |
59de9de4 |
35 | set_counter |
e3c07b19 |
36 | ]; |
37 | |
d50fc84a |
38 | is( $page->counter, 0, '... got the default value' ); |
e3c07b19 |
39 | |
40 | $page->inc_counter; |
d50fc84a |
41 | is( $page->counter, 1, '... got the incremented value' ); |
e3c07b19 |
42 | |
43 | $page->inc_counter; |
d50fc84a |
44 | is( $page->counter, 2, '... got the incremented value (again)' ); |
e3c07b19 |
45 | |
46 | $page->dec_counter; |
d50fc84a |
47 | is( $page->counter, 1, '... got the decremented value' ); |
e3c07b19 |
48 | |
49 | $page->reset_counter; |
d50fc84a |
50 | is( $page->counter, 0, '... got the original value' ); |
e3c07b19 |
51 | |
59de9de4 |
52 | $page->set_counter(5); |
d50fc84a |
53 | is( $page->counter, 5, '... set the value' ); |
59de9de4 |
54 | |
55 | $page->inc_counter(2); |
d50fc84a |
56 | is( $page->counter, 7, '... increment by arg' ); |
59de9de4 |
57 | |
58 | $page->dec_counter(5); |
d50fc84a |
59 | is( $page->counter, 2, '... decrement by arg' ); |
59de9de4 |
60 | |
e3c07b19 |
61 | # check the meta .. |
62 | |
63 | my $counter = $page->meta->get_attribute('counter'); |
d50fc84a |
64 | does_ok( $counter, 'Moose::AttributeHelpers::Trait::Counter' ); |
65 | |
66 | is( $counter->type_constraint->name, 'Int', |
67 | '... got the expected type constraint' ); |
68 | |
69 | is_deeply( |
70 | $counter->handles, |
71 | { |
72 | inc_counter => 'inc', |
73 | dec_counter => 'dec', |
74 | reset_counter => 'reset', |
75 | set_counter => 'set' |
76 | }, |
77 | '... got the right handles methods' |
78 | ); |
e3c07b19 |
79 | |