tagged release 0.6.4
[parrot.git] / t / pmc / prop.t
blob776d20a476742e83ec97eae2164776e607bbaaac
1 #! perl
2 # Copyright (C) 2001-2005, The Perl Foundation.
3 # $Id$
5 use strict;
6 use warnings;
7 use lib qw( . lib ../lib ../../lib );
8 use Test::More;
9 use Parrot::Test tests => 6;
11 =head1 NAME
13 t/pmc/prop.t - Properties
15 =head1 SYNOPSIS
17     % prove t/pmc/prop.t
19 =head1 DESCRIPTION
21 Tests property access on PMCs.
23 =cut
25 pasm_output_is( <<'CODE', <<'OUTPUT', "set/getprop" );
26     new P0, 'Integer'
27     set P0, 10
28     new P1, 'String'
29     set P1, "ten"
30     setprop P0, "en", P1
31     new P2, 'String'
32     set P2, "zehn"
33     setprop P0, "de", P2
34     print P0
35     print "\n"
36     getprop P3, "en", P0
37     print P3
38     print "\n"
39     getprop P3, "de", P0
40     print P3
41     print "\n"
42     end
43 CODE
45 ten
46 zehn
47 OUTPUT
49 pasm_output_is( <<'CODE', <<'OUTPUT', "Property values are references" );
50     new P0, 'String'
51     new P1, 'String'
52     set P0, "Dog"
54     set S0, "Brown"
55     set P1, "Yes"
56     setprop P0, S0, P1
58     set S0, "Black"
59     set P1, "No"
60     setprop P0, S0, P1
62     new P2, 'String'
63     getprop P2, "Black", P0
64     print P2
65     print "\n"
67     getprop P2, "Brown", P0
68     print P2
69     print "\n"
71     end
72 CODE
75 OUTPUT
77 pasm_output_is( <<'CODE', <<'OUTPUT', "resetting a property" );
78     new P0, 'ResizablePMCArray'
79     new P1, 'String'
80     new P2, 'String'
81     new P3, 'String'
83     set S0, "Type"
84     set P1, "Integer"
85     setprop P0, S0, P1
86     getprop P2, S0, P0
87     print P2
88     print "\n"
90     set P3, "Float"
91     setprop P0, S0, P3
92     getprop P2, S0, P0
93     print P2
94     print "\n"
96     end
97 CODE
98 Integer
99 Float
100 OUTPUT
102 pasm_output_is( <<'CODE', <<'OUTPUT', "getting a unset property" );
103     new P1, 'Float'
104     new P2, 'Integer'
106     getprop P2, "Wibble", P1
107     defined I2, P2
108     eq I2, 0, OK
109     print "not "
110 OK: print "ok\n"
111     end
112 CODE
114 OUTPUT
116 pasm_output_is( <<'CODE', <<'OUTPUT', "delprop" );
117     new P0, 'Integer'
118     set P0, 10
119     new P1, 'String'
120     set P1, "ten"
121     setprop P0, "en", P1
122     new P2, 'String'
123     set P2, "zehn"
124     setprop P0, "de", P2
125     print P0
126     print "\n"
127     getprop P3, "en", P0
128     print P3
129     print "\n"
130     getprop P3, "de", P0
131     print P3
132     print "\n"
133     delprop P0, "de"
134     getprop P3, "de", P0
135     if_null P3, ok
136     print "not deleted 'de' "
138     print "-\n"
139     end
140 CODE
143 zehn
145 OUTPUT
147 pasm_output_is( <<'CODE', <<'OUTPUT', "prophash" );
148     new P0, 'Integer'
149     set P0, 10
150     new P1, 'String'
151     set P1, "ten"
152     setprop P0, "en", P1
153     new P2, 'String'
154     set P2, "zehn"
155     setprop P0, "de", P2
156     prophash P3, P0
157     set S0, P3["en"]
158     print S0
159     print "\n"
160     set S0, P3["de"]
161     print S0
162     print "\n"
163     set S0, P3["xx"]
164     print S0
165     print "-\n"
166     end
167 CODE
169 zehn
171 OUTPUT
173 # Local Variables:
174 #   mode: cperl
175 #   cperl-indent-level: 4
176 #   fill-column: 100
177 # End:
178 # vim: expandtab shiftwidth=4: