X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Faccessor-trigger.t;h=c19edb541ec4383f4a481d372c218bfb322bdc31;hb=625d6219e7b1d3dca220a793e672720b490e094f;hp=0af7402424fa1225dc8eecaf9a2c491e4b7c5527;hpb=a16d301ee1659572170ed6baebb3f5e2451b35f5;p=gitmo%2FMoo.git diff --git a/t/accessor-trigger.t b/t/accessor-trigger.t index 0af7402..c19edb5 100644 --- a/t/accessor-trigger.t +++ b/t/accessor-trigger.t @@ -1,32 +1,51 @@ use strictures 1; use Test::More; -my @one_tr; +our @tr; -{ - package Foo; +sub run_for { + my $class = shift; - use Class::Tiny; + @tr = (); - has one => (is => 'rw', trigger => sub { push @one_tr, $_[1] }); -} + my $obj = $class->new; + + ok(!@tr, "${class}: trigger not fired with no value"); -my $foo = Foo->new; + $obj = $class->new(one => 1); -ok(!@one_tr, "trigger not fired with no value"); + is_deeply(\@tr, [ 1 ], "${class}: trigger fired on new"); -$foo = Foo->new(one => 1); + my $res = $obj->one(2); -is_deeply(\@one_tr, [ 1 ], "trigger fired on new"); + is_deeply(\@tr, [ 1, 2 ], "${class}: trigger fired on set"); -my $res = $foo->one(2); + is($res, 2, "${class}: return from set ok"); -is_deeply(\@one_tr, [ 1, 2 ], "trigger fired on set"); + is($obj->one, 2, "${class}: return from accessor ok"); -is($res, 2, "return from set ok"); + is_deeply(\@tr, [ 1, 2 ], "${class}: trigger not fired for accessor as get"); +} -is($foo->one, 2, "return from accessor ok"); +{ + package Foo; + + use Class::Tiny; + + has one => (is => 'rw', trigger => sub { push @::tr, $_[1] }); +} + +run_for 'Foo'; + +{ + package Bar; + + use Sub::Quote; + use Class::Tiny; + + has one => (is => 'rw', trigger => quote_sub q{ push @::tr, $_[1] }); +} -is_deeply(\@one_tr, [ 1, 2 ], "trigger not fired for accessor as get"); +run_for 'Bar'; done_testing;