do all the renaming that was discussed
[gitmo/Moose.git] / t / 070_attribute_helpers / 201_trait_counter.t
CommitLineData
e3c07b19 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
a5209c26 6use Test::More tests => 16;
e3c07b19 7use Test::Moose 'does_ok';
8
e3c07b19 9{
10 package MyHomePage;
11 use Moose;
a5209c26 12 use Moose::AttributeHelpers;
e3c07b19 13
14 has 'counter' => (
0f93f5d2 15 traits => ['Counter'],
d50fc84a 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
28my $page = MyHomePage->new();
d50fc84a 29isa_ok( $page, 'MyHomePage' );
e3c07b19 30
d50fc84a 31can_ok( $page, $_ ) for qw[
e3c07b19 32 dec_counter
33 inc_counter
34 reset_counter
59de9de4 35 set_counter
e3c07b19 36];
37
d50fc84a 38is( $page->counter, 0, '... got the default value' );
e3c07b19 39
40$page->inc_counter;
d50fc84a 41is( $page->counter, 1, '... got the incremented value' );
e3c07b19 42
43$page->inc_counter;
d50fc84a 44is( $page->counter, 2, '... got the incremented value (again)' );
e3c07b19 45
46$page->dec_counter;
d50fc84a 47is( $page->counter, 1, '... got the decremented value' );
e3c07b19 48
49$page->reset_counter;
d50fc84a 50is( $page->counter, 0, '... got the original value' );
e3c07b19 51
59de9de4 52$page->set_counter(5);
d50fc84a 53is( $page->counter, 5, '... set the value' );
59de9de4 54
55$page->inc_counter(2);
d50fc84a 56is( $page->counter, 7, '... increment by arg' );
59de9de4 57
58$page->dec_counter(5);
d50fc84a 59is( $page->counter, 2, '... decrement by arg' );
59de9de4 60
e3c07b19 61# check the meta ..
62
63my $counter = $page->meta->get_attribute('counter');
a40b446a 64does_ok( $counter, 'Moose::Meta::Attribute::Trait::Native::Counter' );
d50fc84a 65
66is( $counter->type_constraint->name, 'Int',
67 '... got the expected type constraint' );
68
69is_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