X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F015-demolish.t;h=123c2d228f7701b9ce48aaf1b41bdf7a416f21a2;hb=cc08dff9f13ae25057d4e84ddfacb4bdf44fea67;hp=a534c8b5134fbc4417ad8bad9b127183fc23e5dd;hpb=c3398f5bd45f2851b7cd40ca9823bcf7d2378469;p=gitmo%2FMouse.git diff --git a/t/015-demolish.t b/t/015-demolish.t index a534c8b..123c2d2 100644 --- a/t/015-demolish.t +++ b/t/015-demolish.t @@ -1,22 +1,21 @@ #!/usr/bin/env perl use strict; use warnings; -use Test::More tests => 20; +use Test::More tests => 5; -my ($class_demolish, $child_demolish) = (0, 0); -my ($class_demolishall, $child_demolishall) = (0, 0); +my @called; do { package Class; use Mouse; sub DEMOLISH { - ++$class_demolish; + push @called, 'Class::DEMOLISH'; } sub DEMOLISHALL { my $self = shift; - ++$class_demolishall; + push @called, 'Class::DEMOLISHALL'; $self->SUPER::DEMOLISHALL(@_); } @@ -25,51 +24,30 @@ do { extends 'Class'; sub DEMOLISH { - ++$child_demolish; + push @called, 'Child::DEMOLISH'; } sub DEMOLISHALL { my $self = shift; - ++$child_demolishall; + push @called, 'Child::DEMOLISHALL'; $self->SUPER::DEMOLISHALL(@_); } }; -is($class_demolish, 0, "no calls to Class->DEMOLISH"); -is($child_demolish, 0, "no calls to Child->DEMOLISH"); - -is($class_demolishall, 0, "no calls to Class->DEMOLISHALL"); -is($child_demolishall, 0, "no calls to Child->DEMOLISHALL"); +is_deeply([splice @called], [], "no DEMOLISH calls yet"); do { my $object = Class->new; - is($class_demolish, 0, "Class->new does not call Class->DEMOLISH"); - is($child_demolish, 0, "Class->new does not call Child->DEMOLISH"); - - is($class_demolishall, 0, "Class->new does not call Class->DEMOLISHALL"); - is($child_demolishall, 0, "Class->new does not call Child->DEMOLISHALL"); + is_deeply([splice @called], [], "no DEMOLISH calls yet"); }; -is($class_demolish, 1, "Class->DESTROY calls Class->DEMOLISH"); -is($child_demolish, 0, "Class->DESTROY does not call Child->DEMOLISH"); - -is($class_demolishall, 1, "Class->DESTROY calls Class->DEMOLISHALL"); -is($child_demolishall, 0, "no calls to Child->DEMOLISHALL"); +is_deeply([splice @called], ['Class::DEMOLISHALL', 'Class::DEMOLISH']); do { my $child = Child->new; + is_deeply([splice @called], [], "no DEMOLISH calls yet"); - is($class_demolish, 1, "Child->new does not call Class->DEMOLISH"); - is($child_demolish, 0, "Child->new does not call Child->DEMOLISH"); - - is($class_demolishall, 1, "Child->DEMOLISHALL does not call Class->DEMOLISHALL (but not Child->new)"); - is($child_demolishall, 0, "Child->new does not call Child->DEMOLISHALL"); }; -is($child_demolish, 1, "Child->DESTROY calls Child->DEMOLISH"); -is($class_demolish, 2, "Child->DESTROY also calls Class->DEMOLISH"); - -is($child_demolishall, 1, "Child->DESTROY calls Child->DEMOLISHALL"); -is($class_demolishall, 2, "Child->DEMOLISHALL calls Class->DEMOLISHALL (but not Child->DESTROY)"); - +is_deeply([splice @called], ['Child::DEMOLISHALL', 'Class::DEMOLISHALL', 'Child::DEMOLISH', 'Class::DEMOLISH']);