Commit | Line | Data |
ca01a97b |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use Test::More tests => 14; |
7 | use Test::Exception; |
8 | |
9 | BEGIN { |
10 | use_ok('Moose'); |
11 | } |
12 | |
13 | { |
14 | package Foo; |
15 | use strict; |
16 | use warnings; |
17 | use Moose; |
18 | |
19 | eval { |
20 | has 'foo' => ( |
21 | reader => 'get_foo' |
22 | ); |
23 | }; |
24 | ::ok(!$@, '... created the reader method okay'); |
25 | |
26 | eval { |
27 | has 'lazy_foo' => ( |
28 | reader => 'get_lazy_foo', |
29 | lazy => 1, |
30 | default => sub { 10 } |
31 | ); |
32 | }; |
33 | ::ok(!$@, '... created the lazy reader method okay'); |
34 | } |
35 | |
36 | { |
37 | my $foo = Foo->new; |
38 | isa_ok($foo, 'Foo'); |
39 | |
40 | can_ok($foo, 'get_foo'); |
41 | is($foo->get_foo(), undef, '... got an undefined value'); |
42 | dies_ok { |
43 | $foo->get_foo(100); |
44 | } '... get_foo is a read-only'; |
45 | |
46 | ok(!exists($foo->{lazy_foo}), '... no value in get_lazy_foo slot'); |
47 | |
48 | can_ok($foo, 'get_lazy_foo'); |
49 | is($foo->get_lazy_foo(), 10, '... got an deferred value'); |
50 | dies_ok { |
51 | $foo->get_lazy_foo(100); |
52 | } '... get_lazy_foo is a read-only'; |
53 | } |
54 | |
55 | { |
56 | my $foo = Foo->new(foo => 10, lazy_foo => 100); |
57 | isa_ok($foo, 'Foo'); |
58 | |
59 | is($foo->get_foo(), 10, '... got the correct value'); |
60 | is($foo->get_lazy_foo(), 100, '... got the correct value'); |
61 | } |
62 | |
63 | |
64 | |