fix codetest failure - ASSERT_ARGS does not have a ; after and
[parrot.git] / t / op / globals.t
blobc6a17906c2b9bbdef2ac0c852bcf1617a83ea1f3
1 #!./parrot
2 # Copyright (C) 2001-2009, Parrot Foundation.
3 # $Id$
5 =head1 NAME
7 t/op/globals.t - Global Variables
9 =head1 SYNOPSIS
11         % prove t/op/globals.t
13 =head1 DESCRIPTION
15 Tests the C<get_global> and C<set_global> operations.
17 =cut
19 .const int TESTS = 12
21 .namespace []
23 .sub 'test' :main
24     .include 'test_more.pir'
26     plan(TESTS)
28     root_integer()
29     get_null_global()
30     not_found_null()
31     get_set_global_with_key()
32     fetch_and_store()
33     find_null_global()
34     get_hll_global_not_found()
35     find_store_with_key()
36 .end
38 .namespace []
39 .sub 'root_integer'
40     $P0 = new ['Integer']
41     $P1 = new ['Integer']
43     $P0 = 12
44     $P1 = 7
46     set_global "Integer", $P0
47     $P1 = get_global "Integer"
49     is($P1, 12, 'root_integer')
50 .end
52 .sub 'get_null_global'
53     $S0 = null
55     $I0 = 0
56     push_eh get_null_global_catch
57     $P1 = get_global $S0
58     pop_eh
59     goto get_null_global_end
61   get_null_global_catch:
62     $I0 = 1
64   get_null_global_end:
65     ok($I0, 'get null global')
66 .end
68 .sub 'not_found_null'
69     $P1 = get_global 'no_such_global'
70     ok(1, 'not_found_null get_global returns')
72     $I0 = defined $P1
73     nok($I0, 'not_found_null get_global returns null')
74 .end
76 .sub 'get_set_global_with_key'
77     $P0 = get_global ['Monkey'], 'do_explosion'
78     $I0 = defined $P0
79     ok($I0, 'get_global of a sub with a key')
80     $P0()
81 .end
83 .namespace ['Monkey']
84 .sub 'do_explosion'
85     set_it()
86     $P1 = get_hll_global [ "Monkey" ; "Toaster" ], "Explosion"
87     is($P1, "Ook...BANG!\n", 'get/set_global with key')
88 .end
90 .sub 'set_it'
91         $P0 = new 'String'
92         $P0 = "Ook...BANG!\n"
93         set_global [ "Toaster" ], "Explosion", $P0
94 .end
96 #----------------------------------------------------------------
97 # LEGACY
98 #----------------------------------------------------------------
100 .namespace []
102 .sub 'fetch_and_store'
103     $P0 = new 'Integer'
104     $P1 = new 'Integer'
106     $P0 = 12
107     $P1 = 7
109     set_global 'Integer', $P0
110     $P1 = get_hll_global 'Integer'
111     is($P1, 12, 'Fetch and store')
112 .end
114 .sub 'find_null_global'
115     $S0 = null
116     push_eh find_null_global_catch
117     $P1 = get_hll_global $S0
118     pop_eh
119     $I0 = 0
120     goto find_null_global_end
122   find_null_global_catch:
123     $I0 = 1
124   find_null_global_end:
125     ok($I0, 'Find null global')
126 .end
128 .sub 'get_hll_global_not_found'
129     $P1 = get_hll_global 'no such global'
130     ok(1, 'get_hll_global returns if not found')
132     $I0 = defined $P1
133     nok($I0, 'get_hll_global returns null if not found')
134 .end
136 .sub 'find_store_with_key'
137     $P0 = get_global ['Monkey2'], 'do_explosion'
138     $I0 = defined $P0
139     ok($I0, 'get_hll_global of a sub with a key')
140     $P0()
141 .end
143 .namespace ['Monkey2']
144 .sub 'do_explosion'
145     set_it()
146     $P1 = get_hll_global [ "Monkey2" ; "Toaster" ], "Explosion"
147     is($P1, "Ook...BANG, again!\n", 'find/store global with key')
148 .end
150 .sub 'set_it'
151     $P0 = new 'String'
152     $P0 = "Ook...BANG, again!\n"
153     set_hll_global [ "Monkey2"; "Toaster" ], "Explosion", $P0
154 .end
156 # Local Variables:
157 #   mode: pir
158 #   fill-column: 100
159 # End:
160 # vim: expandtab shiftwidth=4 ft=pir: