Resolve a failing test file
[gitmo/Mouse.git] / t / 020_attributes / 001_attribute_reader_generation.t
CommitLineData
4060c871 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
0dc63056 6use Test::More;
4060c871 7use Test::Exception;
8
9
4060c871 10{
11 package Foo;
12 use Mouse;
13
14 eval {
15 has 'foo' => (
16 reader => 'get_foo'
17 );
18 };
19 ::ok(!$@, '... created the reader method okay');
20
21 eval {
22 has 'lazy_foo' => (
23 reader => 'get_lazy_foo',
24 lazy => 1,
25 default => sub { 10 }
26 );
27 };
28 ::ok(!$@, '... created the lazy reader method okay') or warn $@;
29
30 my $warn;
31
32 eval {
33 local $SIG{__WARN__} = sub { $warn = $_[0] };
34 has 'mtfnpy' => (
35 reder => 'get_mftnpy'
36 );
37 };
38 ::ok($warn, '... got a warning for mispelled attribute argument');
39}
40
41{
42 my $foo = Foo->new;
43 isa_ok($foo, 'Foo');
44
45 can_ok($foo, 'get_foo');
46 is($foo->get_foo(), undef, '... got an undefined value');
47 dies_ok {
48 $foo->get_foo(100);
49 } '... get_foo is a read-only';
50
51 ok(!exists($foo->{lazy_foo}), '... no value in get_lazy_foo slot');
52
53 can_ok($foo, 'get_lazy_foo');
54 is($foo->get_lazy_foo(), 10, '... got an deferred value');
55 dies_ok {
56 $foo->get_lazy_foo(100);
57 } '... get_lazy_foo is a read-only';
58}
59
60{
61 my $foo = Foo->new;
62 isa_ok($foo, 'Foo');
63
64 my $attr = $foo->meta->find_attribute_by_name("lazy_foo");
65
66 isa_ok( $attr, "Mouse::Meta::Attribute" );
67
68 ok( $attr->is_lazy, "it's lazy" );
69
0dc63056 70 note 'skip Moose specific features';
71 last;
4060c871 72 is( $attr->get_raw_value($foo), undef, "raw value" );
73
74 is( $attr->get_value($foo), 10, "lazy value" );
75
76 is( $attr->get_raw_value($foo), 10, "raw value" );
77}
78
79{
80 my $foo = Foo->new(foo => 10, lazy_foo => 100);
81 isa_ok($foo, 'Foo');
82
83 is($foo->get_foo(), 10, '... got the correct value');
84 is($foo->get_lazy_foo(), 100, '... got the correct value');
85}
86
0dc63056 87done_testing;