1f3fbacb4305692ffbcc3f7cf30700d5d1dbe7f9
[gitmo/Role-Tiny.git] / t / accessor-default.t
1 use strictures 1;
2 use Test::More;
3
4 {
5   package Foo;
6
7   use Sub::Quote;
8   use Moo;
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{ {} });
14   has four => (is => 'ro', builder => '_build_four');
15   sub _build_four { {} }
16   has five => (is => 'ro', init_arg => undef, default => sub { {} });
17 }
18
19 sub check {
20   my ($attr, @h) = @_;
21
22   is_deeply($h[$_], {}, "${attr}: empty hashref \$h[$_]") for 0..1;
23
24   isnt($h[0],$h[1], "${attr}: not the same hashref");
25 }
26
27 check one => map Foo->new->one, 1..2;
28
29 check two => map Foo->new->two, 1..2;
30
31 check three => map Foo->new->{three}, 1..2;
32
33 check four => map Foo->new->{four}, 1..2;
34
35 check five => map Foo->new->{five}, 1..2;
36
37 done_testing;