use strict;
use warnings;
-use Test::More tests => 24;
+use Test::More tests => 23;
use Test::Exception;
-BEGIN {
- use_ok('Moose');
-}
+
{
package Foo;
use Moose;
-
+
has 'foo' => (
reader => 'get_foo',
writer => 'set_foo',
initializer => sub {
my ($self, $value, $callback, $attr) = @_;
-
+
::isa_ok($attr, 'Moose::Meta::Attribute');
::is($attr->name, 'foo', '... got the right name');
-
+
$callback->($value * 2);
},
);
default => 10,
initializer => sub {
my ($self, $value, $callback, $attr) = @_;
-
+
::isa_ok($attr, 'Moose::Meta::Attribute');
- ::is($attr->name, 'lazy_foo', '... got the right name');
-
+ ::is($attr->name, 'lazy_foo', '... got the right name');
+
$callback->($value * 2);
},
);
-
+
has 'lazy_foo_w_type' => (
reader => 'get_lazy_foo_w_type',
isa => 'Int',
default => 20,
initializer => sub {
my ($self, $value, $callback, $attr) = @_;
-
+
::isa_ok($attr, 'Moose::Meta::Attribute');
- ::is($attr->name, 'lazy_foo_w_type', '... got the right name');
-
+ ::is($attr->name, 'lazy_foo_w_type', '... got the right name');
+
$callback->($value * 2);
},
- );
-
+ );
+
has 'lazy_foo_builder' => (
reader => 'get_lazy_foo_builder',
builder => 'get_foo_builder',
initializer => sub {
my ($self, $value, $callback, $attr) = @_;
-
+
::isa_ok($attr, 'Moose::Meta::Attribute');
- ::is($attr->name, 'lazy_foo_builder', '... got the right name');
-
+ ::is($attr->name, 'lazy_foo_builder', '... got the right name');
+
$callback->($value * 2);
},
);
-
+
has 'lazy_foo_builder_w_type' => (
reader => 'get_lazy_foo_builder_w_type',
- isa => 'Int',
+ isa => 'Int',
builder => 'get_foo_builder_w_type',
initializer => sub {
my ($self, $value, $callback, $attr) = @_;
-
+
::isa_ok($attr, 'Moose::Meta::Attribute');
- ::is($attr->name, 'lazy_foo_builder_w_type', '... got the right name');
-
+ ::is($attr->name, 'lazy_foo_builder_w_type', '... got the right name');
+
$callback->($value * 2);
},
);
-
- sub get_foo_builder { 100 }
- sub get_foo_builder_w_type { 1000 }
+
+ sub get_foo_builder { 100 }
+ sub get_foo_builder_w_type { 1000 }
}
{
is($foo->get_lazy_foo, 20, 'initial lazy value set to 2x given value');
is($foo->get_lazy_foo_w_type, 40, 'initial lazy value with type set to 2x given value');
is($foo->get_lazy_foo_builder, 200, 'initial lazy value with builder set to 2x given value');
- is($foo->get_lazy_foo_builder_w_type, 2000, 'initial lazy value with builder and type set to 2x given value');
+ is($foo->get_lazy_foo_builder_w_type, 2000, 'initial lazy value with builder and type set to 2x given value');
}
{
package Bar;
use Moose;
-
+
has 'foo' => (
reader => 'get_foo',
writer => 'set_foo',
initializer => sub {
my ($self, $value, $callback, $attr) = @_;
-
+
::isa_ok($attr, 'Moose::Meta::Attribute');
::is($attr->name, 'foo', '... got the right name');
-
+
$callback->($value * 2);
},
- );
-
- make_immutable;
+ );
+
+ __PACKAGE__->meta->make_immutable;
}
{
my $bar = Bar->new(foo => 10);
isa_ok($bar, 'Bar');
- is($bar->get_foo, 20, 'initial value set to 2x given value');
+ is($bar->get_foo, 20, 'initial value set to 2x given value');
}
{
package Fail::Bar;
use Moose;
-
+
has 'foo' => (
reader => 'get_foo',
writer => 'set_foo',
isa => 'Int',
initializer => sub {
my ($self, $value, $callback, $attr) = @_;
-
+
::isa_ok($attr, 'Moose::Meta::Attribute');
::is($attr->name, 'foo', '... got the right name');
-
+
$callback->("Hello $value World");
},
- );
-
- make_immutable;
+ );
+
+ __PACKAGE__->meta->make_immutable;
}
dies_ok {