b5a83da50afe0b85f87c3c41c12ccd792ee6c62d
[gitmo/Role-Tiny.git] / t / demolish-basics.t
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;