Remove code that handled method providers now that all native traits use inlining
[gitmo/Moose.git] / t / 070_native_traits / 001_trait_counter.t
CommitLineData
e3c07b19 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
a28e50e4 6use Test::More;
e3c07b19 7use Test::Moose 'does_ok';
8
ed3ec87c 9my %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
32my $page = MyHomePage->new();
d50fc84a 33isa_ok( $page, 'MyHomePage' );
e3c07b19 34
ed3ec87c 35can_ok( $page, $_ ) for sort keys %handles;
e3c07b19 36
d50fc84a 37is( $page->counter, 0, '... got the default value' );
e3c07b19 38
39$page->inc_counter;
d50fc84a 40is( $page->counter, 1, '... got the incremented value' );
e3c07b19 41
42$page->inc_counter;
d50fc84a 43is( $page->counter, 2, '... got the incremented value (again)' );
e3c07b19 44
45$page->dec_counter;
d50fc84a 46is( $page->counter, 1, '... got the decremented value' );
e3c07b19 47
48$page->reset_counter;
d50fc84a 49is( $page->counter, 0, '... got the original value' );
e3c07b19 50
59de9de4 51$page->set_counter(5);
d50fc84a 52is( $page->counter, 5, '... set the value' );
59de9de4 53
54$page->inc_counter(2);
d50fc84a 55is( $page->counter, 7, '... increment by arg' );
59de9de4 56
57$page->dec_counter(5);
d50fc84a 58is( $page->counter, 2, '... decrement by arg' );
59de9de4 59
ed3ec87c 60$page->inc_counter_2;
61is( $page->counter, 4, '... curried increment' );
e3c07b19 62
ed3ec87c 63$page->dec_counter_2;
64is( $page->counter, 2, '... curried deccrement' );
d50fc84a 65
ed3ec87c 66$page->set_counter_42;
67is( $page->counter, 42, '... curried set' );
e3c07b19 68
a28e50e4 69done_testing;