[Moose-commits] r7287 - Moose/trunk/t/100_bugs

perigrin at code2.0beta.co.uk perigrin at code2.0beta.co.uk
Sun Jan 11 23:45:02 GMT 2009


Author: perigrin
Date: 2009-01-11 15:45:01 -0800 (Sun, 11 Jan 2009)
New Revision: 7287

Added:
   Moose/trunk/t/100_bugs/020_super_recursion.t
Log:
add tests for recursion in super()

Added: Moose/trunk/t/100_bugs/020_super_recursion.t
===================================================================
--- Moose/trunk/t/100_bugs/020_super_recursion.t	                        (rev 0)
+++ Moose/trunk/t/100_bugs/020_super_recursion.t	2009-01-11 23:45:01 UTC (rev 7287)
@@ -0,0 +1,34 @@
+#!/usr/bin/env perl -l
+use Test::More qw(no_plan);
+our $seen;
+
+package A;
+use Moose;
+
+sub foo { ::BAIL_OUT('A::foo called twice') if $main::seen{'A::foo'}++; return 'a' }
+sub bar { ::BAIL_OUT('A::bar called twice') if $main::seen{'A::bar'}++; return 'a' }
+sub baz { ::BAIL_OUT('A::baz called twice') if $main::seen{'A::baz'}++; return 'a' }
+
+package B;
+use Moose;
+extends qw(A);
+
+
+sub foo { ::BAIL_OUT('B::foo called twice') if $main::seen{'B::foo'}++; return 'b'.super() }
+sub bar { ::BAIL_OUT('B::bar called twice') if $main::seen{'B::bar'}++; return 'b'.super() }
+override baz => sub { ::BAIL_OUT('B::baz called twice') if $main::seen{'B::baz'}++; return 'b'.super() };
+
+package C;
+use Moose;
+extends qw(B);
+
+sub foo { return 'c'.super() }
+override bar => sub { ::BAIL_OUT('C::bar called twice') if $main::seen{'C::bar'}++; return 'c'.super() };
+override baz => sub { ::BAIL_OUT('C::baz called twice') if $main::seen{'C::baz'}++; return 'c'.super() };
+
+
+package main;
+
+is(C->new->foo, 'c');
+is(C->new->bar, 'cb');
+is(C->new->baz, 'cba');




More information about the Moose-commits mailing list