|
Packit |
69e8b9 |
use lib 't', 'lib';
|
|
Packit |
69e8b9 |
use strict;
|
|
Packit |
69e8b9 |
use warnings;
|
|
Packit |
69e8b9 |
|
|
Packit |
69e8b9 |
package Foo;
|
|
Packit |
69e8b9 |
use Spiffy -Base;
|
|
Packit |
69e8b9 |
my $test1 = field test1 => [];
|
|
Packit |
69e8b9 |
my $test2 = field test2 => {};
|
|
Packit |
69e8b9 |
my $test3 = field test3 => [1..4];
|
|
Packit |
69e8b9 |
my $test4 = field test4 => {1..4};
|
|
Packit |
69e8b9 |
my $test5 = field test5 => -weaken;
|
|
Packit |
69e8b9 |
my $test6 = field test6 => -init => '$self->setup(@_)';
|
|
Packit |
69e8b9 |
my $test7 = field test7 => -weak => -init => '$self->setup(@_)';
|
|
Packit |
69e8b9 |
|
|
Packit |
69e8b9 |
package main;
|
|
Packit |
69e8b9 |
use Test::More tests => 7;
|
|
Packit |
69e8b9 |
|
|
Packit |
69e8b9 |
my @expected = map { s/\r//g; $_ } split /\.\.\.\r?\n/, join '', <DATA>;
|
|
Packit |
69e8b9 |
|
|
Packit |
69e8b9 |
my $i = 1;
|
|
Packit |
69e8b9 |
for my $expected (@expected) {
|
|
Packit |
69e8b9 |
is(eval '$test' . $i++, $expected);
|
|
Packit |
69e8b9 |
}
|
|
Packit |
69e8b9 |
|
|
Packit |
69e8b9 |
__DATA__
|
|
Packit |
69e8b9 |
sub {
|
|
Packit |
69e8b9 |
$_[0]->{test1} = []
|
|
Packit |
69e8b9 |
unless exists $_[0]->{test1};
|
|
Packit |
69e8b9 |
return $_[0]->{test1} unless $#_ > 0;
|
|
Packit |
69e8b9 |
$_[0]->{test1} = $_[1];
|
|
Packit |
69e8b9 |
return $_[0]->{test1};
|
|
Packit |
69e8b9 |
}
|
|
Packit |
69e8b9 |
...
|
|
Packit |
69e8b9 |
sub {
|
|
Packit |
69e8b9 |
$_[0]->{test2} = {}
|
|
Packit |
69e8b9 |
unless exists $_[0]->{test2};
|
|
Packit |
69e8b9 |
return $_[0]->{test2} unless $#_ > 0;
|
|
Packit |
69e8b9 |
$_[0]->{test2} = $_[1];
|
|
Packit |
69e8b9 |
return $_[0]->{test2};
|
|
Packit |
69e8b9 |
}
|
|
Packit |
69e8b9 |
...
|
|
Packit |
69e8b9 |
sub {
|
|
Packit |
69e8b9 |
$_[0]->{test3} = [
|
|
Packit |
69e8b9 |
1,
|
|
Packit |
69e8b9 |
2,
|
|
Packit |
69e8b9 |
3,
|
|
Packit |
69e8b9 |
4
|
|
Packit |
69e8b9 |
]
|
|
Packit |
69e8b9 |
|
|
Packit |
69e8b9 |
unless exists $_[0]->{test3};
|
|
Packit |
69e8b9 |
return $_[0]->{test3} unless $#_ > 0;
|
|
Packit |
69e8b9 |
$_[0]->{test3} = $_[1];
|
|
Packit |
69e8b9 |
return $_[0]->{test3};
|
|
Packit |
69e8b9 |
}
|
|
Packit |
69e8b9 |
...
|
|
Packit |
69e8b9 |
sub {
|
|
Packit |
69e8b9 |
$_[0]->{test4} = {
|
|
Packit |
69e8b9 |
'1' => 2,
|
|
Packit |
69e8b9 |
'3' => 4
|
|
Packit |
69e8b9 |
}
|
|
Packit |
69e8b9 |
|
|
Packit |
69e8b9 |
unless exists $_[0]->{test4};
|
|
Packit |
69e8b9 |
return $_[0]->{test4} unless $#_ > 0;
|
|
Packit |
69e8b9 |
$_[0]->{test4} = $_[1];
|
|
Packit |
69e8b9 |
return $_[0]->{test4};
|
|
Packit |
69e8b9 |
}
|
|
Packit |
69e8b9 |
...
|
|
Packit |
69e8b9 |
sub {
|
|
Packit |
69e8b9 |
$_[0]->{test5} = '-weaken'
|
|
Packit |
69e8b9 |
|
|
Packit |
69e8b9 |
unless exists $_[0]->{test5};
|
|
Packit |
69e8b9 |
return $_[0]->{test5} unless $#_ > 0;
|
|
Packit |
69e8b9 |
$_[0]->{test5} = $_[1];
|
|
Packit |
69e8b9 |
return $_[0]->{test5};
|
|
Packit |
69e8b9 |
}
|
|
Packit |
69e8b9 |
...
|
|
Packit |
69e8b9 |
sub {
|
|
Packit |
69e8b9 |
return $_[0]->{test6} = do { my $self = $_[0]; $self->setup(@_) }
|
|
Packit |
69e8b9 |
unless $#_ > 0 or defined $_[0]->{test6};
|
|
Packit |
69e8b9 |
return $_[0]->{test6} unless $#_ > 0;
|
|
Packit |
69e8b9 |
$_[0]->{test6} = $_[1];
|
|
Packit |
69e8b9 |
return $_[0]->{test6};
|
|
Packit |
69e8b9 |
}
|
|
Packit |
69e8b9 |
...
|
|
Packit |
69e8b9 |
sub {
|
|
Packit |
69e8b9 |
return do {
|
|
Packit |
69e8b9 |
$_[0]->{test7} = do { my $self = $_[0]; $self->setup(@_) };
|
|
Packit |
69e8b9 |
Scalar::Util::weaken($_[0]->{test7}) if ref $_[0]->{test7};
|
|
Packit |
69e8b9 |
$_[0]->{test7};
|
|
Packit |
69e8b9 |
} unless $#_ > 0 or defined $_[0]->{test7};
|
|
Packit |
69e8b9 |
return $_[0]->{test7} unless $#_ > 0;
|
|
Packit |
69e8b9 |
$_[0]->{test7} = $_[1];
|
|
Packit |
69e8b9 |
Scalar::Util::weaken($_[0]->{test7}) if ref $_[0]->{test7};
|
|
Packit |
69e8b9 |
return $_[0]->{test7};
|
|
Packit |
69e8b9 |
}
|