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