1 use Test::More tests => 48;
7 my $class = AccessorGroupsRO->new;
12 local $SIG{__WARN__} = sub {
13 if (shift =~ /DESTROY/i) {
18 $class->mk_group_ro_accessors('warnings', 'DESTROY');
22 # restore non-accessorized DESTROY
24 *AccessorGroupsRO::DESTROY = sub {};
27 foreach (qw/singlefield multiple1 multiple2/) {
29 my $alias = "_${name}_accessor";
31 can_ok($class, $name, $alias);
33 is($class->$name, undef);
34 is($class->$alias, undef);
37 $class->{$name} = 'a';
38 is($class->$name, 'a');
40 # alias gets same as name
41 is($class->$alias, 'a');
43 # die on set via name/alias
47 ok($@ =~ /cannot alter/);
52 ok($@ =~ /cannot alter/);
54 # value should be unchanged
55 is($class->$name, 'a');
56 is($class->$alias, 'a');
59 foreach (qw/lr1 lr2/) {
60 my $name = "$_".'name';
61 my $alias = "_${name}_accessor";
62 my $field = { lr1 => 'lr1;field', lr2 => q{lr2'field} }->{$_};
64 can_ok($class, $name, $alias);
65 ok(!$class->can($field));
67 is($class->$name, undef);
68 is($class->$alias, undef);
71 $class->{$field} = 'c';
72 is($class->$name, 'c');
74 # alias gets same as name
75 is($class->$alias, 'c');
77 # die on set via name/alias
81 ok($@ =~ /cannot alter/);
86 ok($@ =~ /cannot alter/);
88 # value should be unchanged
89 is($class->$name, 'c');
90 is($class->$alias, 'c');