4 use Test::More tests => 20;
6 our ($class_demolish, $child_demolish) = (0, 0);
7 our ($class_demolishall, $child_demolishall) = (0, 0);
19 ++$::class_demolishall;
20 $self->SUPER::DEMOLISHALL(@_);
33 ++$::child_demolishall;
34 $self->SUPER::DEMOLISHALL(@_);
38 is($class_demolish, 0, "no calls to Class->DEMOLISH");
39 is($child_demolish, 0, "no calls to Child->DEMOLISH");
41 is($class_demolishall, 0, "no calls to Class->DEMOLISHALL");
42 is($child_demolishall, 0, "no calls to Child->DEMOLISHALL");
45 my $object = Class->new;
47 is($class_demolish, 0, "Class->new does not call Class->DEMOLISH");
48 is($child_demolish, 0, "Class->new does not call Child->DEMOLISH");
50 is($class_demolishall, 0, "Class->new does not call Class->DEMOLISHALL");
51 is($child_demolishall, 0, "Class->new does not call Child->DEMOLISHALL");
54 is($class_demolish, 1, "Class->DESTROY calls Class->DEMOLISH");
55 is($child_demolish, 0, "Class->DESTROY does not call Child->DEMOLISH");
57 is($class_demolishall, 1, "Class->DESTROY calls Class->DEMOLISHALL");
58 is($child_demolishall, 0, "no calls to Child->DEMOLISHALL");
61 my $child = Child->new;
63 is($class_demolish, 1, "Child->new does not call Class->DEMOLISH");
64 is($child_demolish, 0, "Child->new does not call Child->DEMOLISH");
66 is($class_demolishall, 1, "Child->DEMOLISHALL does not call Class->DEMOLISHALL (but not Child->new)");
67 is($child_demolishall, 0, "Child->new does not call Child->DEMOLISHALL");
70 is($child_demolish, 1, "Child->DESTROY calls Child->DEMOLISH");
71 is($class_demolish, 2, "Child->DESTROY also calls Class->DEMOLISH");
73 is($child_demolishall, 1, "Child->DESTROY calls Child->DEMOLISHALL");
74 is($class_demolishall, 2, "Child->DEMOLISHALL calls Class->DEMOLISHALL (but not Child->DESTROY)");