Convert all tests to done_testing.
[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;
ca01a97b 7use Test::Exception;
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');
47 dies_ok {
48 $foo->get_foo(100);
49 } '... 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');
55 dies_ok {
56 $foo->get_lazy_foo(100);
d03bd989 57 } '... 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;