Redid conversion to Test::Fatal
[gitmo/Moose.git] / t / 020_attributes / 001_attribute_reader_generation.t
CommitLineData
ca01a97b 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
a28e50e4 6use Test::More;
b10dde3a 7use Test::Fatal;
ca01a97b 8
7ff56534 9
ca01a97b 10{
11 package Foo;
ca01a97b 12 use Moose;
d03bd989 13
ca01a97b 14 eval {
15 has 'foo' => (
16 reader => 'get_foo'
17 );
18 };
19 ::ok(!$@, '... created the reader method okay');
d03bd989 20
ca01a97b 21 eval {
22 has 'lazy_foo' => (
d03bd989 23 reader => 'get_lazy_foo',
24 lazy => 1,
ca01a97b 25 default => sub { 10 }
26 );
27 };
d03bd989 28 ::ok(!$@, '... created the lazy reader method okay') or warn $@;
aa4c3a8d 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');
ca01a97b 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');
b10dde3a 47 isnt( exception {
ca01a97b 48 $foo->get_foo(100);
b10dde3a 49 }, undef, '... get_foo is a read-only' );
d03bd989 50
ca01a97b 51 ok(!exists($foo->{lazy_foo}), '... no value in get_lazy_foo slot');
d03bd989 52
ca01a97b 53 can_ok($foo, 'get_lazy_foo');
54 is($foo->get_lazy_foo(), 10, '... got an deferred value');
b10dde3a 55 isnt( exception {
ca01a97b 56 $foo->get_lazy_foo(100);
b10dde3a 57 }, undef, '... get_lazy_foo is a read-only' );
ca01a97b 58}
59
60{
312e0f0c 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, "Moose::Meta::Attribute" );
67
68 ok( $attr->is_lazy, "it's lazy" );
69
70 is( $attr->get_raw_value($foo), undef, "raw value" );
71
72 is( $attr->get_value($foo), 10, "lazy value" );
73
74 is( $attr->get_raw_value($foo), 10, "raw value" );
75}
76
77{
ca01a97b 78 my $foo = Foo->new(foo => 10, lazy_foo => 100);
79 isa_ok($foo, 'Foo');
80
81 is($foo->get_foo(), 10, '... got the correct value');
d03bd989 82 is($foo->get_lazy_foo(), 100, '... got the correct value');
ca01a97b 83}
84
a28e50e4 85done_testing;