merge initializer branch, add test
[gitmo/Moose.git] / t / 020_attributes / 019_attribute_lazy_initializer.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 4;
7 use Test::Exception;
8
9 BEGIN {
10     use_ok('Moose');           
11 }
12
13 {
14     package Foo;
15     use Moose;
16     
17     has 'foo' => (
18         reader => 'get_foo',
19         writer => 'set_foo',
20         initializer => sub {
21             my ($self, $value, $name, $callback) = @_;
22             $callback->($value * 2);
23         },
24     );
25
26     has 'lazy_foo' => (
27         reader  => 'get_lazy_foo',
28         default => 10,
29         initializer => sub {
30             my ($self, $value, $name, $callback) = @_;
31             $callback->($value * 2);
32         },
33     );
34 }
35
36 {
37     my $foo = Foo->new(foo => 10);
38     isa_ok($foo, 'Foo');
39
40     is($foo->get_foo,      20, 'initial value set to 2x given value');
41     is($foo->get_lazy_foo, 20, 'initial lazy value set to 2x given value');
42 }
43
44
45