11 has one => (is => 'ro', lazy => 1, default => quote_sub q{ {} });
12 has two => (is => 'ro', lazy => 1, builder => '_build_two');
14 has three => (is => 'ro', default => quote_sub q{ {} });
15 has four => (is => 'ro', builder => '_build_four');
16 sub _build_four { {} }
17 has five => (is => 'ro', init_arg => undef, default => sub { {} });
18 has six => (is => 'ro', builder => 1);
20 has seven => (is => 'ro', required => 1, default => quote_sub q{ {} });
21 has eight => (is => 'ro', builder => '_build_eight', coerce => sub { $c_ran = 1; $_[0] });
22 sub _build_eight { {} }
23 has nine => (is => 'lazy', coerce => sub { $c_ran = 1; $_[0] });
24 sub _build_nine { {} }
25 has ten => (is => 'lazy', default => 5 );
26 has eleven => (is => 'ro', default => 5 );
27 has twelve => (is => 'lazy', default => 0 );
28 has thirteen => (is => 'ro', default => 0 );
29 has fourteen => (is => 'ro', required => 1, builder => '_build_fourteen');
30 sub _build_fourteen { {} }
36 is_deeply($h[$_], {}, "${attr}: empty hashref \$h[$_]") for 0..1;
38 isnt($h[0],$h[1], "${attr}: not the same hashref");
41 check one => map Foo->new->one, 1..2;
43 check two => map Foo->new->two, 1..2;
45 check three => map Foo->new->{three}, 1..2;
47 check four => map Foo->new->{four}, 1..2;
49 check five => map Foo->new->{five}, 1..2;
51 check six => map Foo->new->{six}, 1..2;
53 check seven => map Foo->new->{seven}, 1..2;
55 check fourteen => map Foo->new->{fourteen}, 1..2;
57 check eight => map Foo->new->{eight}, 1..2;
58 ok($c_ran, 'coerce defaults');
62 check nine => map Foo->new->nine, 1..2;
63 ok($c_ran, 'coerce lazy default');
65 is(Foo->new->ten, 5, 'non-ref default');
66 is(Foo->new->eleven, 5, 'eager non-ref default');
67 is(Foo->new->twelve, 0, 'false non-ref default');
68 is(Foo->new->thirteen, 0, 'eager false non-ref default');