Release 0.10014
[p5sagit/Class-Accessor-Grouped.git] / t / illegal_name.t
CommitLineData
ed606987 1use Test::More;
6c6bc8c2 2use Test::Exception;
3use strict;
4use warnings;
5use lib 't/lib';
6
7use AccessorGroupsSubclass;
8
9{
10 my $warned = 0;
11 local $SIG{__WARN__} = sub {
12 $_[0] =~ /unwise/ ? $warned++ : warn(@_)
13 };
14
15 for (qw/DESTROY AUTOLOAD CLONE/) {
16 AccessorGroupsSubclass->mk_group_accessors(warnings => $_);
17 }
18
19 is($warned, 3, 'Correct amount of unise warnings');
20}
21
ed606987 22if (eval { require Sub::Name } ) {
6c6bc8c2 23 my $warned = 0;
24 local $SIG{__WARN__} = sub {
25 $_[0] =~ /Installing illegal accessor/ ? $warned++ : warn(@_)
26 };
27
28 for (qw/666_one 666_two/) {
29 no warnings qw/once/;
30 no strict 'refs';
31
32 local $ENV{CAG_ILLEGAL_ACCESSOR_NAME_OK} = 1;
33 AccessorGroupsSubclass->mk_group_accessors(warnings => $_);
34 }
35
36 is($warned, 1, 'Correct amount of illegal installation warnings');
37};
38
39throws_ok { AccessorGroupsSubclass->mk_group_accessors(simple => '2wrvwrv;') }
40 qr/Illegal accessor name/;
41
42throws_ok {
43 local $ENV{CAG_ILLEGAL_ACCESSOR_NAME_OK} = 1;
44 AccessorGroupsSubclass->mk_group_accessors(simple => "2wr\0vwrv;")
45} qr/nulls should never appear/;
ed606987 46
47done_testing;