#!/usr/bin/env perl
use strict;
use warnings;
-use Test::More tests => 10;
+use Test::More tests => 15;
+use Test::Mouse;
my @called;
is_deeply([splice @called], [], "no DEMOLISH calls yet");
-do {
- my $object = Class->new;
-
- is_deeply([splice @called], [], "no DEMOLISH calls yet");
-};
-
-is_deeply([splice @called], ['Class::DEMOLISH']);
-
-do {
- my $child = Child->new;
- is_deeply([splice @called], [], "no DEMOLISH calls yet");
-
-};
+with_immutable sub {
+ ok(Class->meta, Class->meta->is_immutable ? 'mutable' : 'immutable');
-is_deeply([splice @called], ['Child::DEMOLISH', 'Class::DEMOLISH']);
+ {
+ my $object = Class->new;
-Class->meta->make_immutable();
-Child->meta->make_immutable();
+ is_deeply([splice @called], [], "no DEMOLISH calls yet");
+ }
-is_deeply([splice @called], [], "no DEMOLISH calls yet");
+ is_deeply([splice @called], ['Class::DEMOLISH']);
-do {
- my $object = Class->new;
+ {
+ my $child = Child->new;
+ is_deeply([splice @called], [], "no DEMOLISH calls yet");
- is_deeply([splice @called], [], "no DEMOLISH calls yet");
-};
+ }
-is_deeply([splice @called], ['Class::DEMOLISH'], 'after make_immutable');
+ is_deeply([splice @called], ['Child::DEMOLISH', 'Class::DEMOLISH']);
-do {
- my $child = Child->new;
- is_deeply([splice @called], [], "no DEMOLISH calls yet");
+ {
+ my $child = Child->new;
+ $child->DEMOLISHALL();
-};
+ is_deeply([splice @called], ['Child::DEMOLISH', 'Class::DEMOLISH'], 'DEMOLISHALL');
+ }
-is_deeply([splice @called], ['Child::DEMOLISH', 'Class::DEMOLISH'], 'after make_immutable');
+ is_deeply([splice @called], ['Child::DEMOLISH', 'Class::DEMOLISH'], 'DEMOLISHALL');
+}, qw(Class Child);