File: global-subclass.t

package info (click to toggle)
liblog-dispatchouli-perl 2.005-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 176 kB
  • sloc: perl: 489; makefile: 2
file content (40 lines) | stat: -rw-r--r-- 1,062 bytes parent folder | download | duplicates (7)
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
use strict;
use warnings;
use Test::More;

use Scalar::Util qw(refaddr);

use lib 't/lib';

# DDR - default default ref -- uses the default default_logger_ref
{ package DDR_P; use DDR::Parent '$Logger'; }
{ package DDR_C; use DDR::Child  '$Logger'; }

# SDR - shared default ref -- uses a default_logger_ref shared between classes
{ package SDR_P; use SDR::Parent '$Logger'; }
{ package SDR_C; use SDR::Child  '$Logger'; }

is(
  refaddr( $DDR_P::Logger ),
  refaddr( $DDR_C::Logger ),
  "DDR parent and child share logger storage",
);

# DDR::Child can store its default in a different place, but
# $DDR::Parent::Logger is already defined when we get here, so the logic is
# "already defined and not equal to *my* default, so it is untouched."
is($DDR_P::Logger->ident, 'DDR::Parent', "parent won the initialization race");

is(
  refaddr( $SDR_P::Logger ),
  refaddr( $SDR_C::Logger ),
  "SDR parent and child share logger storage",
);

is(
  $SDR_P::Logger->ident,
  'SDR::Parent',
  "SDR::Parent is initialized first, so its default wins",
);

done_testing;