X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2FAccessorGroups.pm;h=1d70e57351c84f8a84c6634360048aa7a4ea18d0;hb=e0a942a728754d0ac3b3696bd72fe82cc888ceae;hp=240b76dfca5774e923a3eaae2431b80f1671cbec;hpb=fee7c68b86e9fde5f67765fe221c384ac649b5e8;p=p5sagit%2FClass-Accessor-Grouped.git diff --git a/t/lib/AccessorGroups.pm b/t/lib/AccessorGroups.pm index 240b76d..1d70e57 100644 --- a/t/lib/AccessorGroups.pm +++ b/t/lib/AccessorGroups.pm @@ -1,11 +1,9 @@ package AccessorGroups; use strict; use warnings; -use base 'Class::Accessor::Grouped'; +use base 'AccessorGroupsParent'; -__PACKAGE__->mk_group_accessors('simple', 'singlefield'); -__PACKAGE__->mk_group_accessors('multiple', qw/multiple1 multiple2/); -__PACKAGE__->mk_group_accessors('listref', [qw/lr1name lr1;field/], [qw/lr2name lr2'field/]); +__PACKAGE__->mk_group_accessors('simple', [ fieldname_torture => join ('', reverse map { chr($_) } (0..255) ) ]); sub get_simple { my $v = shift->SUPER::get_simple (@_); @@ -20,14 +18,28 @@ sub set_simple { $_[2]; } -sub new { - return bless {}, shift; -}; - -foreach (qw/multiple listref/) { - no strict 'refs'; - *{"get_$_"} = __PACKAGE__->can('get_simple'); - *{"set_$_"} = __PACKAGE__->can('set_simple'); +# a runtime Class::Method::Modifiers style around +# the eval/our combo is so that we do not need to rely on Sub::Name being available +my $orig_ra_cref = __PACKAGE__->can('runtime_around'); +our $around_cref = sub { + my $self = shift; + if (@_) { + my $val = shift; + $self->$orig_ra_cref($val . ' Extra tackled on'); + $val; + } + else { + my $val = $self->$orig_ra_cref; + $val =~ s/ Extra tackled on$// if defined $val; + $val; + } }; +{ + no warnings qw/redefine/; + eval <<'EOE'; + sub runtime_around { goto $around_cref }; + sub _runtime_around_accessor { goto $around_cref }; +EOE +} 1;