inline quoted trigger
[gitmo/Moo.git] / t / accessor-trigger.t
index 0af7402..c19edb5 100644 (file)
@@ -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;