7 my $test1 = field test1 => [];
8 my $test2 = field test2 => {};
9 my $test3 = field test3 => [1..4];
10 my $test4 = field test4 => {1..4};
11 my $test5 = field test5 => -weaken;
12 my $test6 = field test6 => -init => '$self->setup(@_)';
13 my $test7 = field test7 => -weak => -init => '$self->setup(@_)';
16 use Test::More tests => 7;
18 my @expected = map { s/\r//g; $_ } split /\.\.\.\r?\n/, join '', <DATA>;
21 for my $expected (@expected) {
22 is(eval '$test' . $i++, $expected);
28 unless exists $_[0]->{test1};
29 return $_[0]->{test1} unless $#_ > 0;
30 $_[0]->{test1} = $_[1];
31 return $_[0]->{test1};
36 unless exists $_[0]->{test2};
37 return $_[0]->{test2} unless $#_ > 0;
38 $_[0]->{test2} = $_[1];
39 return $_[0]->{test2};
50 unless exists $_[0]->{test3};
51 return $_[0]->{test3} unless $#_ > 0;
52 $_[0]->{test3} = $_[1];
53 return $_[0]->{test3};
62 unless exists $_[0]->{test4};
63 return $_[0]->{test4} unless $#_ > 0;
64 $_[0]->{test4} = $_[1];
65 return $_[0]->{test4};
69 $_[0]->{test5} = '-weaken'
71 unless exists $_[0]->{test5};
72 return $_[0]->{test5} unless $#_ > 0;
73 $_[0]->{test5} = $_[1];
74 return $_[0]->{test5};
78 return $_[0]->{test6} = do { my $self = $_[0]; $self->setup(@_) }
79 unless $#_ > 0 or defined $_[0]->{test6};
80 return $_[0]->{test6} unless $#_ > 0;
81 $_[0]->{test6} = $_[1];
82 return $_[0]->{test6};
87 $_[0]->{test7} = do { my $self = $_[0]; $self->setup(@_) };
88 Scalar::Util::weaken($_[0]->{test7}) if ref $_[0]->{test7};
90 } unless $#_ > 0 or defined $_[0]->{test7};
91 return $_[0]->{test7} unless $#_ > 0;
92 $_[0]->{test7} = $_[1];
93 Scalar::Util::weaken($_[0]->{test7}) if ref $_[0]->{test7};
94 return $_[0]->{test7};