ignore required when default or builder is present
[gitmo/Moo.git] / t / accessor-default.t
CommitLineData
46389f86 1use strictures 1;
2use Test::More;
3
4{
5 package Foo;
6
7 use Sub::Quote;
b1eebd55 8 use Moo;
46389f86 9
10 has one => (is => 'ro', lazy => 1, default => quote_sub q{ {} });
11 has two => (is => 'ro', lazy => 1, builder => '_build_two');
12 sub _build_two { {} }
13 has three => (is => 'ro', default => quote_sub q{ {} });
649ac264 14 has four => (is => 'ro', builder => '_build_four');
46389f86 15 sub _build_four { {} }
d02da2bc 16 has five => (is => 'ro', init_arg => undef, default => sub { {} });
e8dc5201 17 has six => (is => 'ro', builder => 1);
18 sub _build_six { {} }
c9a5dcbd 19 has seven => (is => 'ro', required => 1, default => quote_sub q{ {} });
46389f86 20}
21
22sub check {
23 my ($attr, @h) = @_;
24
25 is_deeply($h[$_], {}, "${attr}: empty hashref \$h[$_]") for 0..1;
26
27 isnt($h[0],$h[1], "${attr}: not the same hashref");
28}
29
30check one => map Foo->new->one, 1..2;
31
32check two => map Foo->new->two, 1..2;
33
649ac264 34check three => map Foo->new->{three}, 1..2;
35
36check four => map Foo->new->{four}, 1..2;
37
d02da2bc 38check five => map Foo->new->{five}, 1..2;
39
e8dc5201 40check six => map Foo->new->{six}, 1..2;
41
c9a5dcbd 42check seven => map Foo->new->{seven}, 1..2;
43
46389f86 44done_testing;