[svn:parrot] r41214 - trunk/t/pmc
dukeleto at svn.parrot.org
dukeleto at svn.parrot.org
Fri Sep 11 16:05:01 UTC 2009
Author: dukeleto
Date: Fri Sep 11 16:04:58 2009
New Revision: 41214
URL: https://trac.parrot.org/parrot/changeset/41214
Log:
[TT #1000][t] Convert t/pmc/resizablefloatarray.t to PIR, flh++
Modified:
trunk/t/pmc/resizablefloatarray.t
Modified: trunk/t/pmc/resizablefloatarray.t
==============================================================================
--- trunk/t/pmc/resizablefloatarray.t Fri Sep 11 15:17:49 2009 (r41213)
+++ trunk/t/pmc/resizablefloatarray.t Fri Sep 11 16:04:58 2009 (r41214)
@@ -1,13 +1,7 @@
-#! perl
-# Copyright (C) 2001-2008, Parrot Foundation.
+#! parrot
+# Copyright (C) 2001-2009, Parrot Foundation.
# $Id$
-use strict;
-use warnings;
-use lib qw( . lib ../lib ../../lib );
-use Test::More;
-use Parrot::Test tests => 22;
-
=head1 NAME
t/pmc/resizablefloatarray.t - ResizableFloatArray PMC
@@ -23,495 +17,453 @@
=cut
-pasm_output_is( <<'CODE', <<'OUTPUT', 'creation' );
- new P0, ['ResizableFloatArray']
- print "ok\n"
- end
-CODE
-ok
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "Setting array size" );
- new P0, ['ResizableFloatArray']
-
- set I0,P0
- eq I0,0,OK_1
- print "not "
-OK_1: print "ok 1\n"
-
- set P0,1
- set I0,P0
- eq I0,1,OK_2
- print "not "
-OK_2: print "ok 2\n"
-
- set P0,5
- set I0,P0
- eq I0,5,OK_3
- print "not "
-OK_3: print "ok 3\n"
-
- set P0,9
- set I0,P0
- eq I0,9,OK_4
- print "not "
-OK_4: print "ok 4\n"
-
- set P0,7
- set I0,P0
- eq I0,7,OK_5
- print "not "
-OK_5: print "ok 5\n"
-
- end
-CODE
-ok 1
-ok 2
-ok 3
-ok 4
-ok 5
-OUTPUT
-
-pasm_error_output_like( <<'CODE', <<'OUTPUT', "Setting negative array size" );
- new P0, ['ResizableFloatArray']
- set P0, -100
- end
-CODE
-/ResizableFloatArray: Can't resize to negative value!/
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "Setting first element" );
- new P0, ['ResizableFloatArray']
- set P0, 1
-
- set P0[0],-7
- set I0,P0[0]
- eq I0,-7,OK_1
- print "not "
-OK_1: print "ok 1\n"
-
- set P0[0],3.7
- set N0,P0[0]
- eq N0,3.7,OK_2
- print "not "
-OK_2: print "ok 2\n"
-
- set P0[0],"17.2"
- set S0,P0[0]
- eq S0,"17.2",OK_3
- print "not "
-OK_3: print "ok 3\n"
-
- end
-CODE
-ok 1
-ok 2
-ok 3
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "Setting second element" );
- new P0, ['ResizableFloatArray']
-
- set P0[1], -7
- set I0, P0[1]
- eq I0,-7,OK_1
- print "not "
-OK_1: print "ok 1\n"
-
- set P0[1], 3.7
- set N0, P0[1]
- eq N0,3.7,OK_2
- print "not "
-OK_2: print "ok 2\n"
-
- set P0[1],"17.1"
- set S0, P0[1]
- eq S0,"17.1",OK_3
- print "not "
-OK_3: print "ok 3\n"
-
- end
-CODE
-ok 1
-ok 2
-ok 3
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "Setting negatively indexed elements" );
- new P0, ['ResizableFloatArray']
- set P0, 1
+.const int TESTS = 55
+.const num PRECISION = 1e-6
+
+.sub 'test' :main
+ .include 'test_more.pir'
+ .include 'fp_equality.pasm'
+
+ plan(TESTS)
+
+ creation()
+ setting_size()
+ negative_size()
+ setting_first_element()
+ setting_second_element()
+ setting_negative_index()
+ getting_negative_index()
+ setting_out_of_bounds()
+ getting_out_of_bounds()
+ set_pmc_get_int()
+ set_int_get_pmc()
+ basic_push()
+ push_many_values()
+ basic_pop()
+ pop_many_values()
+ push_pop()
+ pop_empty()
+ shift_empty()
+ push_float()
+ shift_float()
+ unshift_float()
+ check_interface()
+ get_iter()
+ 'clone'()
+.end
+
+.sub 'creation'
+ $P0 = new ['ResizableFloatArray']
+ ok(1, 'creation')
+.end
+
+.sub 'setting_size'
+ $P0 = new ['ResizableFloatArray']
+
+ $I0 = $P0
+ is($I0, 0, 'size is initially 0')
+
+ $P0 = 1
+ $I0 = $P0
+ is($I0, 1, 'setting size to 1')
+
+ $P0 = 5
+ $I0 = $P0
+ is($I0, 5, 'resizing to 5')
+
+ $P0 = 9
+ $I0 = $P0
+ is($I0, 9, 'resizing to 9')
+
+ $P0 = 7
+ $I0 = $P0
+ is($I0, 7, 'resizing to 7')
+.end
+
+.sub 'negative_size'
+ $P0 = new ['ResizableFloatArray']
+
+ push_eh negative_size_handler
+ $P0 = -100
+ pop_eh
+ nok(1, 'setting negative array size')
+ .return()
+
+ negative_size_handler:
+ .get_results ($P1)
+ $S1 = $P1
+ like($S1, ":s ResizableFloatArray\\: Can\\'t resize to negative value\\!", 'setting negative array size')
+.end
+
+.sub 'setting_first_element'
+ $P0 = new ['ResizableFloatArray']
+ $P0 = 1
+
+ $P0[0] = -7
+ $I0 = $P0[0]
+ is($I0, -7, 'setting first element from int')
+
+ $P0[0] = 3.7
+ $N0 = $P0[0]
+ is($N0, 3.7, 'setting first element from number')
+
+ $P0[0] = "17.2"
+ $S0 = $P0[0]
+ is($S0, "17.2", 'setting first element from string')
+.end
+
+.sub 'setting_second_element'
+ $P0 = new ['ResizableFloatArray']
+
+ $P0[1] = -7
+ $I0 = $P0[1]
+ is($I0, -7, 'setting second element from int')
+
+ $P0[1] = 3.7
+ $N0 = $P0[1]
+ is($N0, 3.7, 'setting second element from number')
+
+ $P0[1] = "17.1"
+ $S0 = $P0[1]
+ is($S0, "17.1", 'setting second element from string')
+.end
+
+.sub 'setting_negative_index'
+ $P0 = new ['ResizableFloatArray']
+ $P0 = 1
+
+ push_eh setting_negative_index_handler
+ $P0[-1] = -7
+ pop_eh
+ nok(1, 'setting negatively indexed elements')
+ .return ()
+
+ setting_negative_index_handler:
+ ok(1, 'setting negatively indexed elements')
+.end
+
+.sub 'getting_negative_index'
+ $P0 = new ['ResizableFloatArray']
+ $P0 = 1
+
+ push_eh getting_negative_index_handler
+ $I0 = $P0[-1]
+ pop_eh
+ nok(1, 'getting negatively indexed elements')
+ .return ()
+
+ getting_negative_index_handler:
+ ok(1, 'getting negatively indexed elements')
+.end
+
+.sub 'setting_out_of_bounds'
+ $P0 = new ['ResizableFloatArray']
+ $P0 = 1
+
+ $P0[1] = -7
+ ok(1, 'setting out-of-bounds elements')
+.end
+
+.sub 'getting_out_of_bounds'
+ $P0 = new ['ResizableFloatArray']
+ $P0 = 1
+
+ $I0 = $P0[1]
+ ok(1, 'getting out-of-bounds elements')
+.end
+
+.sub 'set_pmc_get_int'
+ $P0 = new ['ResizableFloatArray']
+ $P1 = new ['Key']
+
+ $P1 = 0
+ $P0[$P1] = 25
+
+ $P1 = 1
+ $P0[$P1] = 2.5
+
+ $P1 = 2
+ $P0[$P1] = "17.32"
+
+ $I0 = $P0[0]
+ is($I0, 25, 'Set via PMC keys, access via INTs (1)')
+
+ $N0 = $P0[1]
+ is($N0, 2.5, 'Set via PMC keys, access via INTs (2)', PRECISION)
+
+ $S0 = $P0[2]
+ is($S0, "17.32", 'Set via PMC keys, access via INTs (3)')
+.end
+
+.sub 'set_int_get_pmc'
+ $P0 = new ['ResizableFloatArray']
+ $P0 = 1
+
+ $P0[25] = 125
+ $P0[128] = 10.2
+ $P0[513] = "17.3"
+ $P1 = new ['Integer']
+ $P1 = 123456
+ $P0[1023] = $P1
+
+ $P2 = new ['Key']
+
+ $P2 = 25
+ $I0 = $P0[$P2]
+ is($I0, 125, 'Set via INTs, access via PMC Keys (1)')
+
+ $P2 = 128
+ $N0 = $P0[$P2]
+ is($N0, 10.2, 'Set via INTs, access via PMC Keys (2)', PRECISION)
+
+ $P2 = 513
+ $S0 = $P0[$P2]
+ is($S0, "17.3", 'Set via INTs, access via PMC Keys (3)')
+
+ $P2 = 1023
+ $I0 = $P0[$P2]
+ is($I0, 123456, 'Set via INTs, access via PMC Keys (4)')
+.end
+
+.sub 'basic_push'
+ $P0 = new ['ResizableFloatArray']
+ push $P0, 1.0
+ push $P0, 2.0
+ push $P0, 3.0
+
+ $N0 = $P0[0]
+ is($N0, 1.0, 'basic push (1)', PRECISION)
+
+ $N0 = $P0[1]
+ is($N0, 2.0, 'basic push (2)', PRECISION)
+
+ $N0 = $P0[2]
+ is($N0, 3.0, 'basic push (3)', PRECISION)
+.end
+
+.sub 'push_many_values'
+ $P0 = new ['ResizableFloatArray']
+
+ $I0 = 0
+ push_many_values_fill:
+ $N0 = $I0
+ push $P0, $N0
+ inc $I0
+ if $I0 < 100000 goto push_many_values_fill
+
+ push_many_values_test:
+ dec $I0
+ $N0 = $I0
+ $N1 = $P0[$I0]
+ .fp_ne($N0, $N1, push_many_values_evil)
+ if $I0 > 0 goto push_many_values_test
+
+ ok(1, 'push many values')
+ .return ()
- push_eh caught
- set P0[-1], -7
+ push_many_values_evil:
+ nok(1, 'push many values is evil')
+.end
+
+.sub 'basic_pop'
+ $P0 = new ['ResizableFloatArray']
+ $P0[0] = 1.0
+ $P0[1] = 2.0
+ $P0[2] = 3.0
+
+ $N0 = pop $P0
+ is($N0, 3.0, 'basic pop (1)', PRECISION)
+
+ $N0 = pop $P0
+ is($N0, 2.0, 'basic pop (2)', PRECISION)
+
+ $N0 = pop $P0
+ is($N0, 1.0, 'basic pop (3)', PRECISION)
+.end
+
+.sub 'pop_many_values'
+ $P0 = new ['ResizableFloatArray']
+
+ $I0 = 0
+ pop_many_values_fill:
+ $N0 = $I0
+ $P0[$I0] = $N0
+ inc $I0
+ if $I0 < 100000 goto pop_many_values_fill
+
+ pop_many_values_test:
+ dec $I0
+ $N0 = $I0
+ $N1 = pop $P0
+ .fp_ne($N0, $N1, pop_many_values_evil)
+ if $I0 > 0 goto pop_many_values_test
+
+ ok(1, 'pop many values')
+ .return ()
+
+ pop_many_values_evil:
+ nok(1, 'pop many values is evil')
+.end
+
+.sub 'push_pop'
+ $P0 = new ['ResizableFloatArray']
+ push $P0, 1.0
+ push $P0, 2.0
+ push $P0, 3.0
+
+ $N0 = pop $P0
+ is($N0, 3.0, 'push/pop (1)')
+
+ $N0 = pop $P0
+ is($N0, 2.0, 'push/pop (2)')
+
+ $N0 = pop $P0
+ is($N0, 1.0, 'push/pop (3)')
+.end
+
+.sub 'pop_empty'
+ $P0 = new ['ResizableFloatArray']
+
+ push_eh pop_empty_handler
+ $N0 = pop $P0
pop_eh
- print "no exception\n"
- end
-caught:
- say "caught something"
- end
-CODE
-caught something
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "Getting negatively indexed elements" );
- new P0, ['ResizableFloatArray']
- set P0, 1
+ nok(1, 'pop from empty array')
+ .return()
+
+ pop_empty_handler:
+ .get_results($P0)
+ $S0 = $P0
+ like($S0, ":s ResizableFloatArray\\: Can\\'t pop from an empty array\\!", 'pop from empty array')
+.end
+
+.sub 'shift_empty'
+ $P0 = new ['ResizableFloatArray']
- push_eh caught
- set I0, P0[-1]
+ push_eh shift_empty_handler
+ $N0 = shift $P0
pop_eh
- say "no exception"
- end
-caught:
- say "caught an exception"
- end
-CODE
-caught an exception
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "Setting out-of-bounds elements" );
- new P0, ['ResizableFloatArray']
- set P0, 1
-
- set P0[1], -7
- print "ok 1\n"
-
- end
-CODE
-ok 1
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "Getting out-of-bounds elements" );
- new P0, ['ResizableFloatArray']
- set P0, 1
-
- set I0, P0[1]
- print "ok 1\n"
- end
-CODE
-ok 1
-OUTPUT
-
-pasm_output_is( <<"CODE", <<'OUTPUT', "Set via PMC keys, access via INTs" );
- .include 'fp_equality.pasm'
- new P0, ['ResizableFloatArray']
- new P1, ['Key']
-
- set P1, 0
- set P0[P1], 25
-
- set P1, 1
- set P0[P1], 2.5
-
- set P1, 2
- set P0[P1], "17.32"
-
- set I0, P0[0]
- eq I0, 25, OK1
- print "not "
-OK1: print "ok 1\\n"
-
- set N0, P0[1]
- .fp_eq_pasm(N0, 2.5, OK2)
- print "not "
-OK2: print "ok 2\\n"
-
- set S0, P0[2]
- eq S0, "17.32", OK3
- print "not "
-OK3: print "ok 3\\n"
-
- end
-CODE
-ok 1
-ok 2
-ok 3
-OUTPUT
-
-pasm_output_is( <<"CODE", <<'OUTPUT', "Set via INTs, access via PMC Keys" );
- .include 'fp_equality.pasm'
- new P0, ['ResizableFloatArray']
- set P0, 1
-
- set P0[25], 125
- set P0[128], 10.2
- set P0[513], "17.3"
- new P1, ['Integer']
- set P1, 123456
- set P0[1023], P1
-
- new P2, ['Key']
- set P2, 25
- set I0, P0[P2]
- eq I0, 125, OK1
- print "not "
-OK1: print "ok 1\\n"
-
- set P2, 128
- set N0, P0[P2]
- .fp_eq_pasm(N0, 10.2, OK2)
- print "not "
-OK2: print "ok 2\\n"
-
- set P2, 513
- set S0, P0[P2]
- eq S0, "17.3", OK3
- print "not "
-OK3: print "ok 3\\n"
-
- set P2, 1023
- set P3, P0[P2]
- set I1, P3
- eq I1, 123456, OK4
- print "not "
-OK4: print "ok 4\\n"
-
- end
-CODE
-ok 1
-ok 2
-ok 3
-ok 4
-OUTPUT
-
-pasm_output_is( <<"CODE", <<'OUTPUT', 'basic push' );
- .include 'fp_equality.pasm'
- new P0, ['ResizableFloatArray']
- push P0, 1.0
- push P0, 2.0
- push P0, 3.0
- set N0, P0[0]
- .fp_eq_pasm(N0, 1.0, OK1)
- print "not "
-OK1: print "ok 1\\n"
-
- set N0, P0[1]
- .fp_eq_pasm(N0, 2.0, OK2)
- print "not "
-OK2: print "ok 2\\n"
-
- set N0, P0[2]
- .fp_eq_pasm(N0, 3.0, OK3)
- print "not "
-OK3: print "ok 3\\n"
- end
-CODE
-ok 1
-ok 2
-ok 3
-OUTPUT
-
-pasm_output_is( <<"CODE", <<'OUTPUT', 'push many values' );
- .include 'fp_equality.pasm'
- new P0, ['ResizableFloatArray']
- set I0, 0
-L1: set N0, I0
- push P0, N0
- inc I0
- lt I0, 100000, L1
-
- set N0, P0[99999]
- .fp_eq_pasm(N0, 99999.0, OK1)
- print N0
- print "not "
-OK1: print "ok 1\\n"
- end
-CODE
-ok 1
-OUTPUT
-
-pasm_output_is( <<"CODE", <<'OUTPUT', 'basic pop' );
- .include 'fp_equality.pasm'
- new P0, ['ResizableFloatArray']
- set P0[0], 1.0
- set P0[1], 2.0
- set P0[2], 3.0
- pop N0, P0
- .fp_eq_pasm(N0, 3.0, OK1)
- print "not "
-OK1: print "ok 1\\n"
-
- pop N0, P0
- .fp_eq_pasm(N0, 2.0, OK2)
- print "not "
-OK2: print "ok 2\\n"
-
- pop N0, P0
- .fp_eq_pasm(N0, 1.0, OK3)
- print "not "
-OK3: print "ok 3\\n"
- end
-CODE
-ok 1
-ok 2
-ok 3
-OUTPUT
-
-pasm_output_is( <<"CODE", <<'OUTPUT', 'pop many values' );
- .include 'fp_equality.pasm'
- new P0, ['ResizableFloatArray']
- set I0, 0
-L1: set N0, I0
- set P0[I0], N0
- inc I0
- lt I0, 100000, L1
-
-L2: dec I0
- set N1, I0
- pop N0, P0
- .fp_eq_pasm(N0, N1, OK)
- branch NOT_OK
-OK: gt I0, 0, L2
- print "ok\\n"
- end
-
-NOT_OK:
- print N0
- print "\\n"
- print N1
- print "\\n"
- end
-CODE
-ok
-OUTPUT
-
-pasm_output_is( <<"CODE", <<'OUTPUT', 'push/pop' );
- .include 'fp_equality.pasm'
- new P0, ['ResizableFloatArray']
- push P0, 1.0
- push P0, 2.0
- push P0, 3.0
- pop N0, P0
- .fp_eq_pasm(N0, 3.0, OK1)
- print "not "
-OK1: print "ok 1\\n"
- end
-CODE
-ok 1
-OUTPUT
-
-pasm_error_output_like( <<'CODE', <<'OUTPUT', 'pop from empty array' );
- new P0, ['ResizableFloatArray']
- pop N0, P0
- end
-CODE
-/ResizableFloatArray: Can't pop from an empty array!/
-OUTPUT
-
-pir_output_is( << 'CODE', << 'OUTPUT', "check whether interface is done" );
-
-.sub _main
- .local pmc pmc1
- pmc1 = new ['ResizableFloatArray']
- .local int bool1
- does bool1, pmc1, "scalar"
- print bool1
- print "\n"
- does bool1, pmc1, "array"
- print bool1
- print "\n"
- does bool1, pmc1, "no_interface"
- print bool1
- print "\n"
- end
-.end
-CODE
-0
-1
-0
-OUTPUT
-
-pir_output_is( << 'CODE', << 'OUTPUT', "push float" );
-
-.sub _main
- .local pmc pmc1
- pmc1 = new ['ResizableFloatArray']
- pmc1[9999] = 10000.10000
- push pmc1, 123.123
- .local int elements
- elements = pmc1
- print elements
- print "\n"
- .local string last
- last = pmc1[10000]
- print last
- print "\n"
- end
-.end
-CODE
-10001
-123.123
-OUTPUT
-
-pir_output_is( << 'CODE', << 'OUTPUT', "shift float" );
-.sub test :main
- .local pmc ar
- ar = new ['ResizableFloatArray']
- ar[0] = 10.1
- ar[1] = 20.2
- $I0 = elements ar
- print $I0
- print ' '
- $N0 = shift ar
- print $N0
- print ' '
- $I0 = elements ar
- print $I0
- print ' '
- $N0 = shift ar
- print $N0
- print ' '
- $I0 = elements ar
- print $I0
- print "\n"
-.end
-CODE
-2 10.1 1 20.2 0
-OUTPUT
-
-pir_output_is( << 'CODE', << 'OUTPUT', "unshift float" );
-.sub test :main
- .local pmc ar
- ar = new ['ResizableFloatArray']
- unshift ar, 10.1
- unshift ar, 20.2
- $I0 = elements ar
- print $I0
- print ' '
- $N0 = ar[0]
- print $N0
- print ' '
- $N0 = ar[1]
- print $N0
- print "\n"
-.end
-CODE
-2 20.2 10.1
-OUTPUT
+ nok(1, 'shift from empty array')
+ .return()
+
+ shift_empty_handler:
+ .get_results($P0)
+ $S0 = $P0
+ like($S0, ":s ResizableFloatArray\\: Can\\'t shift from an empty array\\!", 'shift from empty array')
+.end
+
+.sub 'check_interface'
+ $P0 = new ['ResizableFloatArray']
+
+ $I0 = does $P0, 'scalar'
+ nok($I0, 'ResizableFloatArray does not scalar')
-pir_output_is( << 'CODE', << 'OUTPUT', "get_iter" );
-.sub main :main
+ $I0 = does $P0, 'array'
+ ok($I0, 'ResizableFloatArray does array')
+
+ $I0 = does $P0, 'no_interface'
+ nok($I0, 'ResizableFloatArray does not no_interface')
+.end
+
+.sub 'push_float'
+ $P0 = new ['ResizableFloatArray']
+ $P0[9999] = 10000.10000
+ push $P0, 123.123
+
+ $I0 = elements $P0
+ is($I0, 10001, 'push float: size')
+
+ $N0 = $P0[10000]
+ is($N0, 123.123, 'push float: test pushed element', PRECISION)
+.end
+
+.sub 'shift_float'
+ $P0 = new ['ResizableFloatArray']
+ $P0[0] = 10.1
+ $P0[1] = 20.2
+
+ $I0 = elements $P0
+ is($I0, 2, 'shift float: size')
+
+ $N0 = shift $P0
+ is($N0, 10.1, 'shift float: first element', PRECISION)
+
+ $N0 = shift $P0
+ is($N0, 20.2, 'shift float: second element', PRECISION)
+
+ $I0 = elements $P0
+ is($I0, 0, 'shift float: array now empty')
+.end
+
+.sub 'unshift_float'
+ $P0 = new ['ResizableFloatArray']
+ unshift $P0, 10.1
+ unshift $P0, 20.2
+
+ $I0 = elements $P0
+ is($I0, 2, 'unshift float: size')
+
+ $N0 = $P0[0]
+ is($N0, 20.2, 'unshift float: first element', PRECISION)
+
+ $N0 = $P0[1]
+ is($N0, 10.1, 'unshift float: second element', PRECISION)
+.end
+
+.sub 'get_iter'
$P0 = new ['ResizableFloatArray']
$P0[0] = 1.1
$P0[1] = 99.99
$P0[2] = -345.001
+
$P1 = iter $P0
-loop:
- unless $P1 goto loop_end
- $S2 = shift $P1
- say $S2
- goto loop
- loop_end:
-.end
-CODE
-1.1
-99.99
--345.001
-OUTPUT
+
+ $N0 = shift $P1
+ is($N0, 1.1, 'get_iter: first element ok', PRECISION)
+
+ $N0 = shift $P1
+ is($N0, 99.99, 'get_iter: second element ok', PRECISION)
+
+ $N0 = shift $P1
+ is($N0, -345.001, 'get_iter: third element ok', PRECISION)
+
+ nok($P1, 'get_iter: iterator emptied')
+.end
+
+.sub 'clone'
+ .local int i
+ $P0 = new ['ResizableFloatArray']
+
+ $I30 = 3000
+ i = 0
+ clone_fill:
+ unless i < $I30 goto clone_filled
+ $N0 = i + 0.01
+ $P0[i] = $N0
+ inc i
+ goto clone_fill
+
+ clone_filled:
+ $P1 = clone $P0
+ $I0 = $P0
+ $I1 = $P1
+ is($I0, $I1, 'clones have the same size')
+
+ clone_iter_loop:
+ dec $I0
+ $N0 = $P1[$I0]
+ $N1 = $I0 + 0.01
+ .fp_ne($N0, $N1, clone_evil)
+ if $I0 > 0 goto clone_iter_loop
+
+ ok(1, 'clone make a good clone')
+ .return()
+
+ clone_evil:
+ nok(0, 'clone made an evil clone')
+.end
# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
+# mode: pir
# fill-column: 100
# End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:
More information about the parrot-commits
mailing list