Commit | Line | Data |
c2cc003f |
1 | |
2 | use strictures 1; |
3 | use Test::More; |
4 | use Test::Fatal; |
5 | |
6 | our @demolished; |
7 | package Foo; |
8 | use Moo; |
9 | |
10 | sub DEMOLISH { |
11 | my $self = shift; |
12 | push @::demolished, __PACKAGE__; |
13 | } |
14 | |
15 | package Foo::Sub; |
16 | use Moo; |
17 | extends 'Foo'; |
18 | |
19 | sub DEMOLISH { |
20 | my $self = shift; |
21 | push @::demolished, __PACKAGE__; |
22 | } |
23 | |
24 | package Foo::Sub::Sub; |
25 | use Moo; |
26 | extends 'Foo::Sub'; |
27 | |
28 | sub DEMOLISH { |
29 | my $self = shift; |
30 | push @::demolished, __PACKAGE__; |
31 | } |
32 | |
33 | package main; |
34 | { |
35 | my $foo = Foo->new; |
36 | } |
37 | is_deeply(\@demolished, ['Foo'], "Foo demolished properly"); |
38 | @demolished = (); |
39 | { |
40 | my $foo_sub = Foo::Sub->new; |
41 | } |
42 | is_deeply(\@demolished, ['Foo::Sub', 'Foo'], "Foo::Sub demolished properly"); |
43 | @demolished = (); |
44 | { |
45 | my $foo_sub_sub = Foo::Sub::Sub->new; |
46 | } |
47 | is_deeply(\@demolished, ['Foo::Sub::Sub', 'Foo::Sub', 'Foo'], |
48 | "Foo::Sub::Sub demolished properly"); |
49 | @demolished = (); |
50 | |
51 | done_testing; |