Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[perl #41456] [PATCH] add a Super PMC test for addparent-established inheritance trees

6 views
Skip to first unread message

Sam Vilain

unread,
Feb 6, 2007, 2:07:45 AM2/6/07
to bugs-bi...@rt.perl.org
# New Ticket Created by Sam Vilain
# Please include the string: [perl #41456]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=41456 >


From: <s...@vilain.net>

Check that if we create an inheritance tree with addparent, that it
performs like one made with subclass
---

t/pmc/object-meths.t | 46 ++++++++++++++++++++++++++++++++++++++++------
1 files changed, 40 insertions(+), 6 deletions(-)

diff --git a/t/pmc/object-meths.t b/t/pmc/object-meths.t
index 38cfbbf..77ae501 100644
--- a/t/pmc/object-meths.t
+++ b/t/pmc/object-meths.t
@@ -6,7 +6,7 @@ use strict;
use warnings;
use lib qw( . lib ../lib ../../lib );
use Test::More;
-use Parrot::Test tests => 38;
+use Parrot::Test tests => 39;

=head1 NAME

@@ -942,11 +942,45 @@ CODE
foofoo
OUTPUT

-pir_output_is( <<'CODE', <<'OUTPUT', "super 1 - two classes" );
+pir_output_is( <<'CODE', <<'OUTPUT', "super 1 - two classes, subclass" );
.sub main :main
- .local pmc o, cl
+ .local pmc o, cl, cl2
cl = newclass 'Parent'
- cl = subclass cl, 'Child'
+ #cl = subclass cl, 'Child'
+ cl2 = newclass 'Child'
+ addparent cl2, cl
+ o = new 'Child'
+ o."foo"()
+.end
+
+.namespace ['Parent']
+.sub foo :method
+ print "Parent foo\n"
+ self."bar"()
+.end
+.sub bar :method
+ print "Parent bar\n"
+.end
+
+.namespace ['Child']
+.sub foo :method
+ print "Child foo\n"
+ .local pmc s
+ s = new .Super, self
+ s."foo"()
+.end
+CODE
+Child foo
+Parent foo
+Parent bar
+OUTPUT
+
+pir_output_is( <<'CODE', <<'OUTPUT', "super 2 - two classes, addparent" );
+.sub main :main
+ .local pmc o, p, c
+ p = newclass 'Parent'
+ c = newclass 'Child'
+ addparent c, p
o = new 'Child'
o."foo"()
.end
@@ -973,7 +1007,7 @@ Parent foo
Parent bar
OUTPUT

-pir_output_is( <<'CODE', <<'OUTPUT', "super 2 - three classes" );
+pir_output_is( <<'CODE', <<'OUTPUT', "super 3 - three classes" );
.sub main :main
.local pmc o, p, c, g
p = newclass 'Parent'
@@ -1011,7 +1045,7 @@ Child foo
Parent foo
OUTPUT

-pir_output_is( <<'CODE', <<'OUTPUT', "super 3 - diamond" );
+pir_output_is( <<'CODE', <<'OUTPUT', "super 4 - diamond" );
.sub main :main
.local pmc o, p, c1, c2, i
p = newclass 'Parent'

0 new messages