X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2FSharedTests.pm;h=b2f542b49deb373601a20476873021d624223754;hb=8207dfe76f6ddd0f0a074746c873ac6b05aed834;hp=129926337332c92fe9ee1fbab33dfa18399607ec;hpb=05e2588c836ccfc7ba0cab03aee767cc4680581f;p=gitmo%2FMooseX-ClassAttribute.git diff --git a/t/lib/SharedTests.pm b/t/lib/SharedTests.pm index 1299263..b2f542b 100644 --- a/t/lib/SharedTests.pm +++ b/t/lib/SharedTests.pm @@ -87,6 +87,11 @@ use Test::More; builder => '_BuildIt', ); + class_has 'Triggerish' => + ( is => 'rw', + trigger => sub { shift->_CallTrigger(@_) }, + ); + has 'size' => ( is => 'rw', isa => 'Int', @@ -104,6 +109,12 @@ use Test::More; sub _BuildIt { 42 } + our @Triggered; + sub _CallTrigger + { + push @Triggered, [@_]; + } + sub make_immutable { my $class = shift; @@ -152,7 +163,7 @@ use Test::More; sub run_tests { - plan tests => 26; + plan tests => 30; local $Test::Builder::Level = $Test::Builder::Level + 1; @@ -264,6 +275,21 @@ sub run_tests is( HasClassAttribute->LazyBuilt(), 42, 'attribute with lazy builder works' ); } + + { + HasClassAttribute->Triggerish(42); + is( scalar @HasClassAttribute::Triggered, 1, 'trigger was called' ); + is( HasClassAttribute->Triggerish(), 42, 'Triggerish is now 42' ); + + HasClassAttribute->Triggerish(84); + is( HasClassAttribute->Triggerish(), 84, 'Triggerish is now 84' ); + + is_deeply( \@HasClassAttribute::Triggered, + [ [ qw( HasClassAttribute 42 ) ], + [ qw( HasClassAttribute 84 42 ) ], + ], + 'trigger passes old value correctly' ); + } }