X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F024_attribute_initializer.t;h=46f6c31dbfa34d095f54d15310752aa98cbfda94;hb=fbedcfb3e98c797922bad3788f9b08063cafebcf;hp=db9aca57673a954ed333a44585fdeb05cf5d0bb0;hpb=c09219327ecf55f83be207b58a80967a1baa199b;p=gitmo%2FClass-MOP.git diff --git a/t/024_attribute_initializer.t b/t/024_attribute_initializer.t index db9aca5..46f6c31 100644 --- a/t/024_attribute_initializer.t +++ b/t/024_attribute_initializer.t @@ -1,15 +1,11 @@ -#!/usr/bin/perl - use strict; use warnings; use Scalar::Util 'blessed', 'reftype'; -use Test::More tests => 4; +use Test::More tests => 9; -BEGIN { - use_ok('Class::MOP'); -} +use Class::MOP; =pod @@ -22,11 +18,15 @@ This checks that the initializer is used to set the initial value. use metaclass; Foo->meta->add_attribute('bar' => - reader => 'get_bar', - writer => 'set_bar', + reader => 'get_bar', + writer => 'set_bar', initializer => sub { - my ($self, $value, $callback, $attr) = @_; - $callback->($value * 2); + my ($self, $value, $callback, $attr) = @_; + + ::isa_ok($attr, 'Class::MOP::Attribute'); + ::is($attr->name, 'bar', '... the attribute is our own'); + + $callback->($value * 2); }, ); } @@ -35,9 +35,25 @@ can_ok('Foo', 'get_bar'); can_ok('Foo', 'set_bar'); my $foo = Foo->meta->construct_instance(bar => 10); -is( - $foo->get_bar, - 20, - "initial argument was doubled as expected", -); +is($foo->get_bar, 20, "... initial argument was doubled as expected"); + +$foo->set_bar(30); + +is($foo->get_bar, 30, "... and setter works correctly"); + +# meta tests ... + +my $bar = Foo->meta->get_attribute('bar'); +isa_ok($bar, 'Class::MOP::Attribute'); + +ok($bar->has_initializer, '... bar has an initializer'); +is(reftype $bar->initializer, 'CODE', '... the initializer is a CODE ref'); + + + + + + + +