1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
use lib 't', 'lib';
use strict;
use warnings;
package Foo;
use Spiffy -Base;
my $test1 = field test1 => [];
my $test2 = field test2 => {};
my $test3 = field test3 => [1..4];
my $test4 = field test4 => {1..4};
my $test5 = field test5 => -weaken;
my $test6 = field test6 => -init => '$self->setup(@_)';
package main;
use Test::More tests => 6;
my @expected = map { s/\r//g; $_ } split /\.\.\.\r?\n/, join '', <DATA>;
my $i = 1;
for my $expected (@expected) {
is(eval '$test' . $i++, $expected);
}
__DATA__
sub {
my $self = shift;
$self->{test1} = []
unless exists $self->{test1};
return $self->{test1} unless @_;
$self->{test1} = shift;
return $self->{test1};
}
...
sub {
my $self = shift;
$self->{test2} = {}
unless exists $self->{test2};
return $self->{test2} unless @_;
$self->{test2} = shift;
return $self->{test2};
}
...
sub {
my $self = shift;
$self->{test3} = [
1,
2,
3,
4
]
unless exists $self->{test3};
return $self->{test3} unless @_;
$self->{test3} = shift;
return $self->{test3};
}
...
sub {
my $self = shift;
$self->{test4} = {
'1' => 2,
'3' => 4
}
unless exists $self->{test4};
return $self->{test4} unless @_;
$self->{test4} = shift;
return $self->{test4};
}
...
sub {
my $self = shift;
$self->{test5} = '-weaken'
unless exists $self->{test5};
return $self->{test5} unless @_;
$self->{test5} = shift;
return $self->{test5};
}
...
sub {
my $self = shift;
return $self->{test6} = do { $self->setup(@_) }
unless @_ or defined $self->{test6};
return $self->{test6} unless @_;
$self->{test6} = shift;
return $self->{test6};
}
|