File: accessors.t

package info (click to toggle)
libclass-accessor-grouped-perl 0.08001-1
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 220 kB
  • ctags: 134
  • sloc: perl: 1,678; makefile: 43
file content (79 lines) | stat: -rw-r--r-- 1,595 bytes parent folder | download
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
use Test::More tests => 58;
use strict;
use warnings;
use lib 't/lib';
use AccessorGroups;

my $class = AccessorGroups->new;

{
    my $warned = 0;

    local $SIG{__WARN__} = sub {
        if  (shift =~ /DESTROY/i) {
            $warned++;
        };
    };

    $class->mk_group_accessors('warnings', 'DESTROY');

    ok($warned);

    # restore non-accessorized DESTROY
    no warnings;
    *AccessorGroups::DESTROY = sub {};
};

foreach (qw/singlefield multiple1 multiple2/) {
    my $name = $_;
    my $alias = "_${name}_accessor";

    can_ok($class, $name, $alias);

    is($class->$name, undef);
    is($class->$alias, undef);

    # get/set via name
    is($class->$name('a'), 'a');
    is($class->$name, 'a');
    is($class->{$name}, 'a');

    # alias gets same as name
    is($class->$alias, 'a');

    # get/set via alias
    is($class->$alias('b'), 'b');
    is($class->$alias, 'b');
    is($class->{$name}, 'b');

    # alias gets same as name
    is($class->$name, 'b');
};

foreach (qw/lr1 lr2/) {
    my $name = "$_".'name';
    my $alias = "_${name}_accessor";
    my $field = "$_".'field';

    can_ok($class, $name, $alias);
    ok(!$class->can($field));

    is($class->$name, undef);
    is($class->$alias, undef);

    # get/set via name
    is($class->$name('c'), 'c');
    is($class->$name, 'c');
    is($class->{$field}, 'c');

    # alias gets same as name
    is($class->$alias, 'c');

    # get/set via alias
    is($class->$alias('d'), 'd');
    is($class->$alias, 'd');
    is($class->{$field}, 'd');

    # alias gets same as name
    is($class->$name, 'd');
};