uploadin
[gitmo/Moose.git] / t / 030_attribute_reader_generation.t
CommitLineData
ca01a97b 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More tests => 14;
7use Test::Exception;
8
9BEGIN {
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