#!./parrot # Copyright (C) 2001-2009, Parrot Foundation. =head1 NAME t/op/globals.t - Global Variables =head1 SYNOPSIS % prove t/op/globals.t =head1 DESCRIPTION Tests the C and C operations. =cut .const int TESTS = 12 .namespace [] .sub 'test' :main .include 'test_more.pir' plan(TESTS) root_integer() get_null_global() not_found_null() get_set_global_with_key() fetch_and_store() find_null_global() get_hll_global_not_found() find_store_with_key() .end .namespace [] .sub 'root_integer' $P0 = new ['Integer'] $P1 = new ['Integer'] $P0 = 12 $P1 = 7 set_global "Integer", $P0 $P1 = get_global "Integer" is($P1, 12, 'root_integer') .end .sub 'get_null_global' $S0 = null $I0 = 0 push_eh get_null_global_catch $P1 = get_global $S0 pop_eh goto get_null_global_end get_null_global_catch: $I0 = 1 get_null_global_end: ok($I0, 'get null global') .end .sub 'not_found_null' $P1 = get_global 'no_such_global' ok(1, 'not_found_null get_global returns') $I0 = defined $P1 nok($I0, 'not_found_null get_global returns null') .end .sub 'get_set_global_with_key' $P0 = get_global ['Monkey'], 'do_explosion' $I0 = defined $P0 ok($I0, 'get_global of a sub with a key') $P0() .end .namespace ['Monkey'] .sub 'do_explosion' set_it() $P1 = get_hll_global [ "Monkey" ; "Toaster" ], "Explosion" is($P1, "Ook...BANG!\n", 'get/set_global with key') .end .sub 'set_it' $P0 = new 'String' $P0 = "Ook...BANG!\n" set_global [ "Toaster" ], "Explosion", $P0 .end #---------------------------------------------------------------- # LEGACY #---------------------------------------------------------------- .namespace [] .sub 'fetch_and_store' $P0 = new 'Integer' $P1 = new 'Integer' $P0 = 12 $P1 = 7 set_global 'Integer', $P0 $P1 = get_hll_global 'Integer' is($P1, 12, 'Fetch and store') .end .sub 'find_null_global' $S0 = null push_eh find_null_global_catch $P1 = get_hll_global $S0 pop_eh $I0 = 0 goto find_null_global_end find_null_global_catch: $I0 = 1 find_null_global_end: ok($I0, 'Find null global') .end .sub 'get_hll_global_not_found' $P1 = get_hll_global 'no such global' ok(1, 'get_hll_global returns if not found') $I0 = defined $P1 nok($I0, 'get_hll_global returns null if not found') .end .sub 'find_store_with_key' $P0 = get_global ['Monkey2'], 'do_explosion' $I0 = defined $P0 ok($I0, 'get_hll_global of a sub with a key') $P0() .end .namespace ['Monkey2'] .sub 'do_explosion' set_it() $P1 = get_hll_global [ "Monkey2" ; "Toaster" ], "Explosion" is($P1, "Ook...BANG, again!\n", 'find/store global with key') .end .sub 'set_it' $P0 = new 'String' $P0 = "Ook...BANG, again!\n" set_hll_global [ "Monkey2"; "Toaster" ], "Explosion", $P0 .end # Local Variables: # mode: pir # fill-column: 100 # End: # vim: expandtab shiftwidth=4 ft=pir: