Merge branch 'master' into attribute_helpers
[gitmo/Moose.git] / t / 070_native_traits / 011_counter_with_defaults.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 12;
7 use Test::Moose;
8
9 {
10     package MyHomePage;
11     use Moose;
12
13     has 'counter' => ( traits => ['Counter'] );
14 }
15
16 my $page = MyHomePage->new();
17 isa_ok( $page, 'MyHomePage' );
18
19 can_ok( $page, $_ ) for qw[
20     dec_counter
21     inc_counter
22     reset_counter
23 ];
24
25 is( $page->counter, 0, '... got the default value' );
26
27 $page->inc_counter;
28 is( $page->counter, 1, '... got the incremented value' );
29
30 $page->inc_counter;
31 is( $page->counter, 2, '... got the incremented value (again)' );
32
33 $page->dec_counter;
34 is( $page->counter, 1, '... got the decremented value' );
35
36 $page->reset_counter;
37 is( $page->counter, 0, '... got the original value' );
38
39 # check the meta ..
40
41 my $counter = $page->meta->get_attribute('counter');
42 does_ok( $counter, 'Moose::Meta::Attribute::Native::Trait::Counter' );
43
44 is( $counter->type_constraint->name, 'Num',
45     '... got the expected default type constraint' );
46
47 is_deeply(
48     $counter->handles,
49     {
50         'inc_counter'   => 'inc',
51         'dec_counter'   => 'dec',
52         'reset_counter' => 'reset',
53         'set_counter'   => 'set',
54     },
55     '... got the right default handles methods'
56 );
57