Stop Moose::Meta::Attribute::Native::Trait::Code from creating reader methods by...
[gitmo/Moose.git] / t / 070_native_traits / 209_trait_code.t
1 use strict;
2 use warnings;
3
4 use Test::More;
5
6 {
7     package Thingy;
8     use Moose;
9
10     has callback => (
11         traits   => ['Code'],
12         isa      => 'CodeRef',
13         required => 1,
14         handles  => { 'invoke_callback' => 'execute' },
15     );
16
17     has callback_method => (
18         traits   => ['Code'],
19         isa      => 'CodeRef',
20         required => 1,
21         handles  => { 'invoke_method_callback' => 'execute_method' },
22     );
23
24     has multiplier => (
25         traits   => ['Code'],
26         isa      => 'CodeRef',
27         required => 1,
28         handles  => { 'multiply' => 'execute' },
29     );
30 }
31
32 my $i = 0;
33 my $thingy = Thingy->new(
34     callback        => sub { ++$i },
35     multiplier      => sub { $_[0] * 2 },
36     callback_method => sub { shift->multiply(@_) },
37 );
38
39 is($i, 0);
40 $thingy->invoke_callback;
41 is($i, 1);
42 is($thingy->multiply(3), 6);
43 is($thingy->invoke_method_callback(3), 6);
44
45 ok(!$thingy->can($_), "Code trait didn't create reader method for $_")
46     for qw(callback callback_method multiplier);
47
48 done_testing;