Blame t/super.t

Packit 69e8b9
use lib 'lib';
Packit 69e8b9
Packit 69e8b9
package Foo;
Packit 69e8b9
use strict;
Packit 69e8b9
use Spiffy -base;
Packit 69e8b9
field 'xxx';
Packit 69e8b9
field 'dog';
Packit 69e8b9
field 'bog';
Packit 69e8b9
Packit 69e8b9
sub new {
Packit 69e8b9
    my $self = super;
Packit 69e8b9
    $self->xxx('XXX');
Packit 69e8b9
    return $self;
Packit 69e8b9
}
Packit 69e8b9
Packit 69e8b9
sub poodle {
Packit 69e8b9
    my $self = shift;
Packit 69e8b9
    my $count = shift;
Packit 69e8b9
    $self->dog("$count poodle");
Packit 69e8b9
}
Packit 69e8b9
Packit 69e8b9
sub doodle {
Packit 69e8b9
    my $self = shift;
Packit 69e8b9
    my $count = shift;
Packit 69e8b9
    $self->bog("$count doodle");
Packit 69e8b9
}
Packit 69e8b9
Packit 69e8b9
package Bar;
Packit 69e8b9
use strict;
Packit 69e8b9
BEGIN { Foo->base }
Packit 69e8b9
Packit 69e8b9
sub poodle {
Packit 69e8b9
    my $self = shift;
Packit 69e8b9
    super;
Packit 69e8b9
    $self->dog($self->dog . ' dogs');
Packit 69e8b9
}
Packit 69e8b9
Packit 69e8b9
sub doodle {
Packit 69e8b9
    my $self = shift;
Packit 69e8b9
    eval 'eval "super"';
Packit 69e8b9
    $self->bog($self->bog . ' bogs');
Packit 69e8b9
}
Packit 69e8b9
Packit 69e8b9
package main;
Packit 69e8b9
use strict;
Packit 69e8b9
use Test::More tests => 3;
Packit 69e8b9
Packit 69e8b9
my $f = Bar->new;
Packit 69e8b9
is($f->{xxx}, 'XXX');
Packit 69e8b9
Packit 69e8b9
$f->poodle(3);
Packit 69e8b9
is($f->{dog}, '3 poodle dogs');
Packit 69e8b9
Packit 69e8b9
$f->doodle(4);
Packit 69e8b9
is($f->{bog}, '4 doodle bogs');