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