cvsuser     04/04/04 00:30:45

  Modified:    t/pmc    object-meths.t
  Log:
  diamond class hierarchy
  
  Revision  Changes    Path
  1.15      +143 -2    parrot/t/pmc/object-meths.t
  
  Index: object-meths.t
  ===================================================================
  RCS file: /cvs/public/parrot/t/pmc/object-meths.t,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -w -r1.14 -r1.15
  --- object-meths.t    3 Apr 2004 19:50:10 -0000       1.14
  +++ object-meths.t    4 Apr 2004 08:30:44 -0000       1.15
  @@ -1,6 +1,6 @@
   #! perl -w
   # Copyright: 2001-2003 The Perl Foundation.  All Rights Reserved.
  -# $Id: object-meths.t,v 1.14 2004/04/03 19:50:10 leo Exp $
  +# $Id: object-meths.t,v 1.15 2004/04/04 08:30:44 leo Exp $
   
   =head1 NAME
   
  @@ -16,7 +16,7 @@
   
   =cut
   
  -use Parrot::Test tests => 16;
  +use Parrot::Test tests => 17;
   use Test::More;
   
   output_like(<<'CODE', <<'OUTPUT', "callmethod - unknown method");
  @@ -462,4 +462,145 @@
   CODE
   /Method 'nada' not found/
   OUTPUT
  +
  +TODO: {
  +  #local $TODO = "wrong init order?";
  +
  +output_is(<<'CODE', <<'OUTPUT', "constructor - diamond parents");
  +#
  +# A   B A   E
  +#  \ /   \ /
  +#   C     D
  +#    \   /
  +#     \ /
  +#      F
  +    newclass P1, "A"
  +    newclass P2, "B"
  +    subclass P3, P1, "C"
  +    addparent P3, P2
  +
  +    subclass P4, P1, "D"
  +    newclass P5, "E"
  +    addparent P4, P5
  +
  +    subclass P6, P3, "F"
  +    addparent P6, P4
  +    bsr _check_isa
  +
  +    print "new F\n"
  +    find_type I1, "F"
  +    new P16, I1
  +    print "done\n"
  +    end
  +
  +_check_isa:
  +    print "F isa D "
  +    isa I0, P6, "D"
  +    print I0
  +    print "\n"
  +    print "D isa F "
  +    isa I0, P4, "F"
  +    print I0
  +    print "\n"
  +    print "F isa C "
  +    isa I0, P6, "C"
  +    print I0
  +    print "\n"
  +    print "C isa F "
  +    isa I0, P3, "F"
  +    print I0
  +    print "\n"
  +    print "F isa E "
  +    isa I0, P6, "E"
  +    print I0
  +    print "\n"
  +    print "E isa F "
  +    isa I0, P5, "F"
  +    print I0
  +    print "\n"
  +    print "F isa A "
  +    isa I0, P6, "A"
  +    print I0
  +    print "\n"
  +    print "A isa F "
  +    isa I0, P1, "F"
  +    print I0
  +    print "\n"
  +    print "F isa B "
  +    isa I0, P6, "B"
  +    print I0
  +    print "\n"
  +    print "B isa F "
  +    isa I0, P2, "F"
  +    print I0
  +    print "\n"
  +
  +    print "C isa A "
  +    isa I0, P3, "A"
  +    print I0
  +    print "\n"
  +    print "A isa C "
  +    isa I0, P1, "C"
  +    print I0
  +    print "\n"
  +    print "D isa A "
  +    isa I0, P4, "A"
  +    print I0
  +    print "\n"
  +    print "A isa D "
  +    isa I0, P1, "D"
  +    print I0
  +    print "\n"
  +    ret
  +
  +
  +.namespace ["A"]
  +.pcc_sub __init:
  +    print "A init\n"
  +    invoke P1
  +.namespace ["B"]
  +.pcc_sub __init:
  +    print "B init\n"
  +    invoke P1
  +.namespace ["C"]
  +.pcc_sub __init:
  +    print "C init\n"
  +    invoke P1
  +.namespace ["D"]
  +.pcc_sub __init:
  +    print "D init\n"
  +    invoke P1
  +.namespace ["E"]
  +.pcc_sub __init:
  +    print "E init\n"
  +    invoke P1
  +.namespace ["F"]
  +.pcc_sub __init:
  +    print "F init\n"
  +    invoke P1
  +CODE
  +F isa D 1
  +D isa F 0
  +F isa C 1
  +C isa F 0
  +F isa E 1
  +E isa F 0
  +F isa A 1
  +A isa F 0
  +F isa B 1
  +B isa F 0
  +C isa A 1
  +A isa C 0
  +D isa A 1
  +A isa D 0
  +new F
  +E init
  +A init
  +D init
  +B init
  +C init
  +F init
  +done
  +OUTPUT
  +};
   
  
  
  

Reply via email to