# New Ticket Created by Bruce Stockwell
# Please include the string: [perl #60600]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=60600 >
rewrite of t/oo/ops.t to PIR.
ops.t | 265
++++++++++++++++++++++++++++++++----------------------------------
1 file changed, 130 insertions(+), 135 deletions(-)
--
V/r
Bruce
Index: t/oo/ops.t
===================================================================
--- t/oo/ops.t (revision 32667)
+++ t/oo/ops.t (working copy)
@@ -1,13 +1,7 @@
-#!perl
+#! parrot
# Copyright (C) 2007, The Perl Foundation.
# $Id$
-use strict;
-use warnings;
-use lib qw( . lib ../lib ../../lib );
-use Test::More;
-use Parrot::Test tests => 8;
-
=head1 NAME
t/oo/ops.t - test OO related ops
@@ -22,156 +16,169 @@
=cut
-pir_output_is( <<'CODE', <<'OUT', 'addrole_p_p' );
-.sub 'test' :main
+.sub main :main
+ .include 'test_more.pir'
+
+ plan(20)
+
+ op_addrole_p_p()
+ op_inspect_p_p()
+ op_inspect_p_p_s()
+ op_get_class_p_s()
+ op_get_class_p_p()
+ op_addattribute_p_s()
+ op_new_p_s()
+ op_can_i_p_s()
+
+.end
+
+.sub op_addrole_p_p
$P0 = new 'Role'
$P1 = new 'Class'
+
+try:
+ push_eh catch
addrole $P1, $P0
- print "ok 1 - addrole op executed\n"
+ $I0 = 1 #addrole w/ no exception. set register for ok
$P2 = $P1.'roles'()
- $I0 = elements $P2
- if $I0 == 1 goto ok_2
- print "not "
-ok_2:
- print "ok 2 - addrole op actually added the role\n"
+ $I1 = elements $P2
+ goto finally
+
+catch:
+ $I0 = 0 #set register for fail
+ $I1 = 0 #set register for fail
+
+finally:
+ pop_eh
+ ok ($I0, 'addrole op executed')
+ is ($I1, 1, 'role verified')
+
.end
-CODE
-ok 1 - addrole op executed
-ok 2 - addrole op actually added the role
-OUT
-pir_output_is( <<'CODE', <<'OUT', 'inspect_p_p' );
-.sub 'test' :main
+.sub op_inspect_p_p
$P0 = new 'Class'
+try:
+ push_eh catch
$P1 = inspect $P0
- print "ok 1 - inspect_p_p op executed\n"
+ $I0 = 1 #inspect w/ no exception. set register for ok
+ $I1 = elements $P1
+ goto finally
- $I0 = elements $P1
- if $I0 == 7 goto ok_2
- print "not "
-ok_2:
- print "ok 2 - returned hash had correct number of elements\n"
+catch:
+ $I0 = 0 #inspect w/ exception. set register for fail
+
+finally:
+ pop_eh
+ ok ($I0, 'inspect op executed')
+ is ($I1, 7, 'inspect hash count verified')
+
.end
-CODE
-ok 1 - inspect_p_p op executed
-ok 2 - returned hash had correct number of elements
-OUT
-pir_output_is( <<'CODE', <<'OUT', 'inspect_p_p_s' );
-.sub 'test' :main
+.sub op_inspect_p_p_s
$P0 = new 'Class'
$P0.'name'('foo')
$P0.'add_attribute'('a')
$P1 = inspect $P0, 'name'
- say $P1
- print "ok 1 - inspect_p_p_s with $3='name'\n"
+ is ($P1, 'foo', 'inpect_p_p_s with name')
$P1 = inspect $P0, 'flags'
$I0 = $P1
$I1 = 1 << 29 # flag 29 is PObj_is_class_FLAG
-
$I2 = $I0 & $I1
- if $I2 goto flags_ok
- print "not "
- flags_ok:
- print "ok 2 - inspect_p_p_s with $3='flags'\n"
+ ok ($I2, 'inspect_p_p_s with flags')
$P1 = inspect $P0, 'attributes'
$I0 = elements $P1
- if $I0 == 1 goto ok_2
- print "not "
-ok_2:
- print "ok 3 - inspect_p_p_s with $3='attributes'\n"
+ is ($I0, 1, 'inspect_p_p_s with attributes')
.end
-CODE
-foo
-ok 1 - inspect_p_p_s with $3='name'
-ok 2 - inspect_p_p_s with $3='flags'
-ok 3 - inspect_p_p_s with $3='attributes'
-OUT
-pir_output_is( <<'CODE', <<'OUT', 'get_class_p_s' );
-.sub main :main
+.sub op_get_class_p_s
$P0 = new 'Hash'
$P4 = new 'String'
$P4 = 'Monkey'
$P0['name'] = $P4
$P1 = new 'Class', $P0
- print "ok 1 - created new class named Monkey\n"
+ $I0 = isa $P1 , 'Class'
- push_eh nok_2
+try:
+ push_eh catch
$P2 = get_class 'Monkey'
+ $I1 = isa $P2 , 'Class'
+ goto finally
+
+catch:
+ $I1 = 0 # get_class w/ exception. set flag for failure
+
+finally:
pop_eh
- goto ok_2
-nok_2:
- print "not "
-ok_2:
- print "ok 2 - get_class found a class\n"
+ unless null $P2 goto ok
+ $P2 = new 'Class' # help inspect('name') fail gracefully
+ok:
$P3 = $P2.'inspect'('name')
- print $P3
- print "\nok 3 - got name of found class\n"
+
+ ok ($I0, 'created new class named Monkey')
+ ok ($I1, 'get_class found a class')
+ is ($P3, 'Monkey', 'got name of found class')
.end
-CODE
-ok 1 - created new class named Monkey
-ok 2 - get_class found a class
-Monkey
-ok 3 - got name of found class
-OUT
-pir_output_is( <<'CODE', <<'OUT', 'get_class_p_p' );
-.sub main :main
+.sub op_get_class_p_p
$P0 = new 'Hash'
$P4 = new 'String'
- $P4 = 'Monkey'
+ $P4 = 'Ape'
$P0['name'] = $P4
$P1 = new 'Class', $P0
- print "ok 1 - created new class named Monkey\n"
+ $I0 = isa $P1 , 'Class'
- push_eh nok_2
- $P2 = get_class [ 'Monkey' ]
+try:
+ push_eh catch
+ $P2 = get_class [ 'Ape' ]
+ $I1 = isa $P2 , 'Class'
+ goto finally
+
+catch:
+ $I1 = 0 # get_class w/ exception. set flag for failure
+
+finally:
pop_eh
- goto ok_2
-nok_2:
- print "not "
-ok_2:
- print "ok 2 - get_class with a Key found a class\n"
+ unless null $P2 goto ok
+ $P2 = new 'Class' # help inspect('name') fail gracefully
+ok:
$P3 = $P2.'inspect'('name')
- print $P3
- print "\nok 3 - got name of found class\n"
- push_eh nok_4
+ ok ($I0, 'created new class named Ape')
+ ok ($I1, 'get_class with a key found a class')
+ is ($P3, 'Ape', 'got name of found class')
+
+try_1:
+ push_eh catch_1
$P3 = get_namespace [ 'Monkey' ]
$P2 = get_class $P3
- pop_eh
- goto ok_4
-nok_4:
+ $I1 = isa $P2 , 'Class'
+ goto finally_1
+
+catch_1:
print "not "
-ok_4:
- print "ok 4 - get_class with a NameSpace found a class\n"
+finally_1:
+ pop_eh
+
+ unless null $P2 goto ok_1
+ $P2 = new 'Class' # help inspect('name') fail gracefully
+ok_1:
$P3 = $P2.'inspect'('name')
- print $P3
- print "\nok 5 - got name of found class\n"
+
+ ok ($I1, 'get_class with a namespace found a class')
+ is ($P3, 'Monkey', 'got name of found class')
.end
-CODE
-ok 1 - created new class named Monkey
-ok 2 - get_class with a Key found a class
-Monkey
-ok 3 - got name of found class
-ok 4 - get_class with a NameSpace found a class
-Monkey
-ok 5 - got name of found class
-OUT
-pir_error_output_like( <<'CODE', <<'OUT', 'addattribute_p_s' );
-.sub main :main
+.sub op_addattribute_p_s
$P0 = new 'Class'
addattribute $P0, 'foo'
@@ -182,22 +189,25 @@
setattribute $P1, 'foo', $P2
getattribute $P2, $P1, 'foo'
- print $P2
- print "\n"
$P0 = new 'Hash'
+try:
+ push_eh catch
addattribute $P0, 'oops'
- print "Not here!\n"
+ $I0 = 1 # add attribute success flag
+ goto finally
+
+catch:
+ $I0 = 0 # add attribute failure flag
+
+finally:
+ pop_eh
+ is ($P2, 100, 'reading assigned attribute')
+ nok ($I0,'attempt to add attribute to non-class')
+
.end
-CODE
-/100
-Cannot add attribute to non-class
-current instr\.: 'main'/
-OUT
-pir_output_is( <<'CODE', <<'OUT', 'new_p_s works with string register arg' );
-.sub main :main
-# $P0 = newclass "Foo"
+.sub op_new_p_s
$P0 = newclass "Foo"
addattribute $P0, 'foo'
@@ -209,42 +219,27 @@
setattribute $P1, 'foo', $P2
getattribute $P2, $P1, 'foo'
- print $P2
- print "\n"
+ is ($P2, 100, 'reading assigned attribute')
.end
-CODE
-100
-OUT
-pir_output_is( <<'CODE', <<'OUT', 'can_i_p_s' );
-.sub main :main
- $P0 = newclass "Foo"
+.sub op_can_i_p_s
+ $P0 = newclass "Baz"
$P1 = new $P0
can $I0, $P1, "bar"
-
- if $I0 goto can_bar
- print "not "
- can_bar:
- print "ok 1\n"
-
- $P1.'bar'()
+ ok ($I0, 'PMC has method bar')
+ $I1 = $P1.'bar'()
+ ok ($I1, 'called bar method on PMC')
.end
-.namespace ["Foo"]
+.namespace ["Baz"]
.sub bar :method
- print "called bar\n"
+ .return (1)
.end
-CODE
-ok 1
-called bar
-OUT
-
# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
+# mode: pir
# fill-column: 100
# End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir: