Blame t/field3.t

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
}