~ubuntu-branches/ubuntu/wily/libclass-accessor-grouped-perl/wily

« back to all changes in this revision

Viewing changes to t/accessors_xs_cachedwarn.t

  • Committer: Bazaar Package Importer
  • Author(s): gregor herrmann, Ansgar Burchardt, Antony Gelberg, gregor herrmann
  • Date: 2011-01-24 18:49:35 UTC
  • mfrom: (1.1.9 upstream)
  • Revision ID: james.westby@ubuntu.com-20110124184935-j6jm3u3vn42tklq0
Tags: 0.10002-1
[ Ansgar Burchardt ]
* Update my email address.

[ Antony Gelberg ]
* New upstream release

[ gregor herrmann ]
* debian/copyright: update formatting and list of packagers.
* debian/control: update build dependencies.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
use strict;
 
2
use warnings;
 
3
use Test::More;
 
4
use lib 't/lib';
 
5
 
 
6
BEGIN {
 
7
    require Class::Accessor::Grouped;
 
8
    my $xsa_ver = $Class::Accessor::Grouped::__minimum_xsa_version;
 
9
    eval {
 
10
        require Class::XSAccessor;
 
11
        Class::XSAccessor->VERSION ($xsa_ver);
 
12
    };
 
13
    plan skip_all => "Class::XSAccessor >= $xsa_ver not available"
 
14
      if $@;
 
15
}
 
16
 
 
17
use AccessorGroupsSubclass;
 
18
$Class::Accessor::Grouped::USE_XS = 1;
 
19
 
 
20
my $obj = AccessorGroupsSubclass->new;
 
21
my $obj2 = AccessorGroups->new;
 
22
my $deferred_stub = AccessorGroupsSubclass->can('singlefield');
 
23
 
 
24
my @w;
 
25
{
 
26
  local $SIG{__WARN__} = sub { push @w, @_ };
 
27
  is ($obj->$deferred_stub(1), 1, 'Set');
 
28
  is ($obj->$deferred_stub, 1, 'Get');
 
29
  is ($obj->$deferred_stub(2), 2, 'ReSet');
 
30
  is ($obj->$deferred_stub, 2, 'ReGet');
 
31
 
 
32
  is ($obj->singlefield, 2, 'Normal get');
 
33
  is ($obj2->singlefield, undef, 'Normal get on unrelated object');
 
34
}
 
35
 
 
36
is (@w, 3, '3 warnings total');
 
37
 
 
38
is (
 
39
  scalar (grep { $_ =~ /^\QDeferred version of method AccessorGroups::singlefield invoked more than once/ } @w),
 
40
  3,
 
41
  '3 warnings produced as expected on cached invocation during testing',
 
42
) or do {
 
43
  require Data::Dumper;
 
44
  diag "\n \$0 is: " . Data::Dumper->new([$0])->Useqq(1)->Terse(1)->Dump;
 
45
};
 
46
 
 
47
done_testing;