| 12
 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
 
 | use Test::More tests => 38;
use strict;
use warnings;
use lib 't/lib';
use AccessorGroupsWO;
my $class = AccessorGroupsWO->new;
{
    my $warned = 0;
    local $SIG{__WARN__} = sub {
        if  (shift =~ /DESTROY/i) {
            $warned++;
        };
    };
    $class->mk_group_wo_accessors('warnings', 'DESTROY');
    ok($warned);
    # restore non-accessorized DESTROY
    no warnings;
    *AccessorGroupsWO::DESTROY = sub {};
};
foreach (qw/singlefield multiple1 multiple2/) {
    my $name = $_;
    my $alias = "_${name}_accessor";
    can_ok($class, $name, $alias);
    # set via name
    is($class->$name('a'), 'a');
    is($class->{$name}, 'a');
    # alias sets same as name
    is($class->$alias('b'), 'b');
    is($class->{$name}, 'b');
    # die on get via name/alias
    eval {
        $class->$name;
    };
    ok($@ =~ /cannot access/);
    eval {
        $class->$alias;
    };
    ok($@ =~ /cannot access/);
};
foreach (qw/lr1 lr2/) {
    my $name = "$_".'name';
    my $alias = "_${name}_accessor";
    my $field = "$_".'field';
    can_ok($class, $name, $alias);
    ok(!$class->can($field));
    # set via name
    is($class->$name('c'), 'c');
    is($class->{$field}, 'c');
    # alias sets same as name
    is($class->$alias('d'), 'd');
    is($class->{$field}, 'd');
    # die on get via name/alias
    eval {
        $class->$name;
    };
    ok($@ =~ /cannot access/);
    eval {
        $class->$alias;
    };
    ok($@ =~ /cannot access/);
};
 |