From: Shawn M Moore Date: Wed, 11 Jun 2008 11:03:14 +0000 (+0000) Subject: Add a test file for method modifiers X-Git-Tag: 0.04~24 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=879a325b7d068520f613491bdda2316aca71c132;p=gitmo%2FMouse.git Add a test file for method modifiers --- diff --git a/t/027-modifiers.t b/t/027-modifiers.t new file mode 100644 index 0000000..a12da33 --- /dev/null +++ b/t/027-modifiers.t @@ -0,0 +1,110 @@ +#!perl -T +use strict; +use warnings; +use Test::More tests => 1; + +my @seen; +my @expected = ("before 4", + "before 3", + "around 4 before", + "around 3 before", + "before 2", + "before 1", + "around 2 before", + "around 1 before", + "orig", + "around 1 after", + "around 2 after", + "after 1", + "after 2", + "around 3 after", + "around 4 after", + "after 3", + "after 4", + ); + +my $child = Grandchild->new; $child->orig; + +is_deeply(\@seen, \@expected, "multiple afters called in the right order"); + +BEGIN { + package Parent; + use Mouse; + + sub orig { + push @seen, "orig"; + } +} + +BEGIN { + package Child; + use Mouse; + extends 'Parent'; + + before orig => sub { + push @seen, "before 1"; + }; + + before orig => sub { + push @seen, "before 2"; + }; + + around orig => sub { + my $orig = shift; + push @seen, "around 1 before"; + $orig->(); + push @seen, "around 1 after"; + }; + + around orig => sub { + my $orig = shift; + push @seen, "around 2 before"; + $orig->(); + push @seen, "around 2 after"; + }; + + after orig => sub { + push @seen, "after 1"; + }; + + after orig => sub { + push @seen, "after 2"; + }; +} + +BEGIN { + package Grandchild; + use Mouse; + extends 'Child'; + + before orig => sub { + push @seen, "before 3"; + }; + + before orig => sub { + push @seen, "before 4"; + }; + + around orig => sub { + my $orig = shift; + push @seen, "around 3 before"; + $orig->(); + push @seen, "around 3 after"; + }; + + around orig => sub { + my $orig = shift; + push @seen, "around 4 before"; + $orig->(); + push @seen, "around 4 after"; + }; + + after orig => sub { + push @seen, "after 3"; + }; + + after orig => sub { + push @seen, "after 4"; + }; +} +