Commit | Line | Data |
e3c07b19 |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
a28e50e4 |
6 | use Test::More; |
e3c07b19 |
7 | use Test::Moose 'does_ok'; |
8 | |
ed3ec87c |
9 | my %handles = ( |
10 | inc_counter => 'inc', |
11 | inc_counter_2 => [ inc => 2 ], |
12 | dec_counter => 'dec', |
13 | dec_counter_2 => [ dec => 2 ], |
14 | reset_counter => 'reset', |
15 | set_counter => 'set', |
16 | set_counter_42 => [ set => 42 ], |
17 | ); |
18 | |
e3c07b19 |
19 | { |
20 | package MyHomePage; |
21 | use Moose; |
22 | |
23 | has 'counter' => ( |
0f93f5d2 |
24 | traits => ['Counter'], |
d50fc84a |
25 | is => 'ro', |
26 | isa => 'Int', |
27 | default => 0, |
ed3ec87c |
28 | handles => \%handles, |
e3c07b19 |
29 | ); |
30 | } |
31 | |
32 | my $page = MyHomePage->new(); |
d50fc84a |
33 | isa_ok( $page, 'MyHomePage' ); |
e3c07b19 |
34 | |
ed3ec87c |
35 | can_ok( $page, $_ ) for sort keys %handles; |
e3c07b19 |
36 | |
d50fc84a |
37 | is( $page->counter, 0, '... got the default value' ); |
e3c07b19 |
38 | |
39 | $page->inc_counter; |
d50fc84a |
40 | is( $page->counter, 1, '... got the incremented value' ); |
e3c07b19 |
41 | |
42 | $page->inc_counter; |
d50fc84a |
43 | is( $page->counter, 2, '... got the incremented value (again)' ); |
e3c07b19 |
44 | |
45 | $page->dec_counter; |
d50fc84a |
46 | is( $page->counter, 1, '... got the decremented value' ); |
e3c07b19 |
47 | |
48 | $page->reset_counter; |
d50fc84a |
49 | is( $page->counter, 0, '... got the original value' ); |
e3c07b19 |
50 | |
59de9de4 |
51 | $page->set_counter(5); |
d50fc84a |
52 | is( $page->counter, 5, '... set the value' ); |
59de9de4 |
53 | |
54 | $page->inc_counter(2); |
d50fc84a |
55 | is( $page->counter, 7, '... increment by arg' ); |
59de9de4 |
56 | |
57 | $page->dec_counter(5); |
d50fc84a |
58 | is( $page->counter, 2, '... decrement by arg' ); |
59de9de4 |
59 | |
ed3ec87c |
60 | $page->inc_counter_2; |
61 | is( $page->counter, 4, '... curried increment' ); |
e3c07b19 |
62 | |
ed3ec87c |
63 | $page->dec_counter_2; |
64 | is( $page->counter, 2, '... curried deccrement' ); |
d50fc84a |
65 | |
ed3ec87c |
66 | $page->set_counter_42; |
67 | is( $page->counter, 42, '... curried set' ); |
e3c07b19 |
68 | |
a28e50e4 |
69 | done_testing; |