Changelogging
[gitmo/Mouse.git] / t / 070_native_traits / 209_trait_code.t
1 use strict;
2 # This is automatically generated by author/import-moose-test.pl.
3 # DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!!
4 use t::lib::MooseCompat;
5 use warnings;
6
7 use Test::More;
8
9 {
10     package Thingy;
11     use Mouse;
12
13     has callback => (
14         traits   => ['Code'],
15         isa      => 'CodeRef',
16         required => 1,
17         handles  => { 'invoke_callback' => 'execute' },
18     );
19
20     has callback_method => (
21         traits   => ['Code'],
22         isa      => 'CodeRef',
23         required => 1,
24         handles  => { 'invoke_method_callback' => 'execute_method' },
25     );
26
27     has multiplier => (
28         traits   => ['Code'],
29         isa      => 'CodeRef',
30         required => 1,
31         handles  => { 'multiply' => 'execute' },
32     );
33 }
34
35 my $i = 0;
36 my $thingy = Thingy->new(
37     callback        => sub { ++$i },
38     multiplier      => sub { $_[0] * 2 },
39     callback_method => sub { shift->multiply(@_) },
40 );
41
42 is($i, 0);
43 $thingy->invoke_callback;
44 is($i, 1);
45 is($thingy->multiply(3), 6);
46 is($thingy->invoke_method_callback(3), 6);
47
48 ok(!$thingy->can($_), "Code trait didn't create reader method for $_")
49     for qw(callback callback_method multiplier);
50
51 done_testing;