#!/usr/bin/env perl
use strict;
use warnings;
-use Test::More tests => 5;
+use Test::More tests => 9;
+use Test::Mouse;
my @called;
is_deeply([splice @called], [], "no BUILD calls yet");
-my $object = Class->new;
+with_immutable {
+ my $object = Class->new;
-is_deeply([splice @called], ["Class::BUILD"]);
+ ok defined($object), $object->meta->is_immutable() ? 'mutable' : 'immutable';
-my $child = Child->new;
+ is_deeply([splice @called], ["Class::BUILD"]);
-is_deeply([splice @called], ["Class::BUILD", "Child::BUILD"]);
+ my $child = Child->new;
-Class->meta->make_immutable;
-Child->meta->make_immutable;
+ is_deeply([splice @called], ["Class::BUILD", "Child::BUILD"]);
-$object = Class->new;
+ $child->BUILDALL({});
-is_deeply([splice @called], ["Class::BUILD"], 'after make_immutable');
-
-$child = Child->new;
-
-is_deeply([splice @called], ["Class::BUILD", "Child::BUILD"], 'after make_immutable');
+ is_deeply([splice @called], ["Class::BUILD", "Child::BUILD"], 'BUILDALL');
+} qw(Class Child);
#!/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 {
+ 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);