]> git.vpit.fr Git - perl/modules/autovivification.git/blob - t/20-hash.t
Factor the common part of t/20-hash.t and t/21-array.t into a new t/lib/autovivificat...
[perl/modules/autovivification.git] / t / 20-hash.t
1 #!perl -T
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 6 * 3 * 260;
7
8 use lib 't/lib';
9 use autovivification::TestCases;
10
11 while (<DATA>) {
12  1 while chomp;
13  next unless /#/;
14  testcase_ok($_, '%');
15 }
16
17 __DATA__
18
19 --- fetch ---
20
21 $x # $x->{a} # '', undef, { } 
22 $x # $x->{a} # '', undef, undef #
23 $x # $x->{a} # '', undef, undef # +fetch
24 $x # $x->{a} # '', undef, { }   # +exists
25 $x # $x->{a} # '', undef, { }   # +delete
26 $x # $x->{a} # '', undef, { }   # +store
27
28 $x # $x->{a} # qr/^Reference vivification forbidden/, undef, undef # +strict +fetch
29 $x # $x->{a} # '', undef, { } # +strict +exists
30 $x # $x->{a} # '', undef, { } # +strict +delete
31 $x # $x->{a} # '', undef, { } # +strict +store
32
33 $x # $x->{a}->{b} # '', undef, { a => { } }
34 $x # $x->{a}->{b} # '', undef, undef        #
35 $x # $x->{a}->{b} # '', undef, undef        # +fetch
36 $x # $x->{a}->{b} # '', undef, { a => { } } # +exists
37 $x # $x->{a}->{b} # '', undef, { a => { } } # +delete
38 $x # $x->{a}->{b} # '', undef, { a => { } } # +store
39
40 $x # $x->{a}->{b} # qr/^Reference vivification forbidden/, undef, undef # +strict +fetch
41 $x # $x->{a}->{b} # '', undef, { a => { } } # +strict +exists
42 $x # $x->{a}->{b} # '', undef, { a => { } } # +strict +delete
43 $x # $x->{a}->{b} # '', undef, { a => { } } # +strict +store
44
45 $x->{a} = 1 # $x->{a} # '', 1,     { a => 1 } # +fetch
46 $x->{a} = 1 # $x->{b} # '', undef, { a => 1 } # +fetch
47 $x->{a} = 1 # $x->{a} # '', 1,     { a => 1 } # +exists
48 $x->{a} = 1 # $x->{b} # '', undef, { a => 1 } # +exists
49 $x->{a} = 1 # $x->{a} # '', 1,     { a => 1 } # +delete
50 $x->{a} = 1 # $x->{b} # '', undef, { a => 1 } # +delete
51 $x->{a} = 1 # $x->{a} # '', 1,     { a => 1 } # +store
52 $x->{a} = 1 # $x->{b} # '', undef, { a => 1 } # +store
53
54 $x->{a} = 1 # $x->{a} # '', 1,     { a => 1 } # +strict +fetch
55 $x->{a} = 1 # $x->{b} # '', undef, { a => 1 } # +strict +fetch
56 $x->{a} = 1 # $x->{a} # '', 1,     { a => 1 } # +strict +exists
57 $x->{a} = 1 # $x->{b} # '', undef, { a => 1 } # +strict +exists
58 $x->{a} = 1 # $x->{a} # '', 1,     { a => 1 } # +strict +delete
59 $x->{a} = 1 # $x->{b} # '', undef, { a => 1 } # +strict +delete
60 $x->{a} = 1 # $x->{a} # '', 1,     { a => 1 } # +strict +store
61 $x->{a} = 1 # $x->{b} # '', undef, { a => 1 } # +strict +store
62
63 $x->{a}->{b} = 1 # $x->{a}->{b} # '', 1,     { a => { b => 1 } } # +fetch
64 $x->{a}->{b} = 1 # $x->{a}->{d} # '', undef, { a => { b => 1 } } # +fetch
65 $x->{a}->{b} = 1 # $x->{c}->{d} # '', undef, { a => { b => 1 } } # +fetch
66 $x->{a}->{b} = 1 # $x->{a}->{b} # '', 1,     { a => { b => 1 } } # +exists
67 $x->{a}->{b} = 1 # $x->{a}->{d} # '', undef, { a => { b => 1 } } # +exists
68 $x->{a}->{b} = 1 # $x->{c}->{d} # '', undef, { a => { b => 1 }, c => { } } # +exists
69 $x->{a}->{b} = 1 # $x->{a}->{b} # '', 1,     { a => { b => 1 } } # +delete
70 $x->{a}->{b} = 1 # $x->{a}->{d} # '', undef, { a => { b => 1 } } # +delete
71 $x->{a}->{b} = 1 # $x->{c}->{d} # '', undef, { a => { b => 1 }, c => { } } # +delete
72 $x->{a}->{b} = 1 # $x->{a}->{b} # '', 1,     { a => { b => 1 } } # +store
73 $x->{a}->{b} = 1 # $x->{a}->{d} # '', undef, { a => { b => 1 } } # +store
74 $x->{a}->{b} = 1 # $x->{c}->{d} # '', undef, { a => { b => 1 }, c => { } } # +store
75
76 $x->{a}->{b} = 1 # $x->{a}->{b} # '', 1,     { a => { b => 1 } }                # +strict +fetch
77 $x->{a}->{b} = 1 # $x->{a}->{d} # '', undef, { a => { b => 1 } }                # +strict +fetch
78 $x->{a}->{b} = 1 # $x->{c}->{d} # qr/^Reference vivification forbidden/, undef, { a => { b => 1 } } # +strict +fetch
79 $x->{a}->{b} = 1 # $x->{a}->{b} # '', 1,     { a => { b => 1 } }                # +strict +exists
80 $x->{a}->{b} = 1 # $x->{a}->{d} # '', undef, { a => { b => 1 } }                # +strict +exists
81 $x->{a}->{b} = 1 # $x->{c}->{d} # '', undef, { a => { b => 1 }, c => { } }      # +strict +exists
82 $x->{a}->{b} = 1 # $x->{a}->{b} # '', 1,     { a => { b => 1 } }                # +strict +delete
83 $x->{a}->{b} = 1 # $x->{a}->{d} # '', undef, { a => { b => 1 } }                # +strict +delete
84 $x->{a}->{b} = 1 # $x->{c}->{d} # '', undef, { a => { b => 1 }, c => { } }      # +strict +delete
85 $x->{a}->{b} = 1 # $x->{a}->{b} # '', 1,     { a => { b => 1 } }                # +strict +store
86 $x->{a}->{b} = 1 # $x->{a}->{d} # '', undef, { a => { b => 1 } }                # +strict +store
87 $x->{a}->{b} = 1 # $x->{c}->{d} # '', undef, { a => { b => 1 }, c => { } }      # +strict +store
88
89 --- aliasing ---
90
91 $x # 1 for $x->{a}; () # '', undef, { a => undef }
92 $x # 1 for $x->{a}; () # '', undef, undef          #
93 $x # 1 for $x->{a}; () # '', undef, undef          # +fetch
94 $x # 1 for $x->{a}; () # '', undef, { a => undef } # +exists
95 $x # 1 for $x->{a}; () # '', undef, { a => undef } # +delete
96 $x # 1 for $x->{a}; () # '', undef, { a => undef } # +store
97
98 $x # $_ = 1 for $x->{a}; () # '', undef, { a => 1 }
99 $x # $_ = 1 for $x->{a}; () # '', undef, undef      #
100 $x # $_ = 1 for $x->{a}; () # '', undef, undef      # +fetch
101 $x # $_ = 1 for $x->{a}; () # '', undef, { a => 1 } # +exists
102 $x # $_ = 1 for $x->{a}; () # '', undef, { a => 1 } # +delete
103 $x # $_ = 1 for $x->{a}; () # '', undef, { a => 1 } # +store
104
105 $x->{a} = 1 # 1 for $x->{a}; () # '', undef, { a => 1 }             # +fetch
106 $x->{a} = 1 # 1 for $x->{b}; () # '', undef, { a => 1, b => undef } # +fetch
107 $x->{a} = 1 # 1 for $x->{a}; () # '', undef, { a => 1 }             # +exists
108 $x->{a} = 1 # 1 for $x->{b}; () # '', undef, { a => 1, b => undef } # +exists
109 $x->{a} = 1 # 1 for $x->{a}; () # '', undef, { a => 1 }             # +delete
110 $x->{a} = 1 # 1 for $x->{b}; () # '', undef, { a => 1, b => undef } # +delete
111 $x->{a} = 1 # 1 for $x->{a}; () # '', undef, { a => 1 }             # +store
112 $x->{a} = 1 # 1 for $x->{b}; () # '', undef, { a => 1, b => undef } # +store
113
114 --- exists ---
115
116 $x # exists $x->{a} # '', '', { }
117 $x # exists $x->{a} # '', '', undef #
118 $x # exists $x->{a} # '', '', { }   # +fetch
119 $x # exists $x->{a} # '', '', undef # +exists
120 $x # exists $x->{a} # '', '', { }   # +delete
121 $x # exists $x->{a} # '', '', { }   # +store
122
123 $x # exists $x->{a} # '', '', { } # +strict +fetch
124 $x # exists $x->{a} # qr/^Reference vivification forbidden/, undef, undef # +strict +exists
125 $x # exists $x->{a} # '', '', { } # +strict +delete
126 $x # exists $x->{a} # '', '', { } # +strict +store
127
128 $x # exists $x->{a}->{b} # '', '', { a => { } }
129 $x # exists $x->{a}->{b} # '', '', undef        #
130 $x # exists $x->{a}->{b} # '', '', { a => { } } # +fetch
131 $x # exists $x->{a}->{b} # '', '', undef        # +exists
132 $x # exists $x->{a}->{b} # '', '', { a => { } } # +delete
133 $x # exists $x->{a}->{b} # '', '', { a => { } } # +store
134
135 $x # exists $x->{a}->{b} # '', '', { a => { } } # +strict +fetch
136 $x # exists $x->{a}->{b} # qr/^Reference vivification forbidden/, undef, undef # +strict +exists
137 $x # exists $x->{a}->{b} # '', '', { a => { } } # +strict +delete
138 $x # exists $x->{a}->{b} # '', '', { a => { } } # +strict +store
139
140 $x->{a} = 1 # exists $x->{a} # '', 1,  { a => 1 } # +fetch
141 $x->{a} = 1 # exists $x->{b} # '', '', { a => 1 } # +fetch
142 $x->{a} = 1 # exists $x->{a} # '', 1,  { a => 1 } # +exists
143 $x->{a} = 1 # exists $x->{b} # '', '', { a => 1 } # +exists
144 $x->{a} = 1 # exists $x->{a} # '', 1,  { a => 1 } # +delete
145 $x->{a} = 1 # exists $x->{b} # '', '', { a => 1 } # +delete
146 $x->{a} = 1 # exists $x->{a} # '', 1,  { a => 1 } # +store
147 $x->{a} = 1 # exists $x->{b} # '', '', { a => 1 } # +store
148
149 $x->{a} = 1 # exists $x->{a} # '', 1,  { a => 1 } # +strict +fetch
150 $x->{a} = 1 # exists $x->{b} # '', '', { a => 1 } # +strict +fetch
151 $x->{a} = 1 # exists $x->{a} # '', 1,  { a => 1 } # +strict +exists
152 $x->{a} = 1 # exists $x->{b} # '', '', { a => 1 } # +strict +exists
153 $x->{a} = 1 # exists $x->{a} # '', 1,  { a => 1 } # +strict +delete
154 $x->{a} = 1 # exists $x->{b} # '', '', { a => 1 } # +strict +delete
155 $x->{a} = 1 # exists $x->{a} # '', 1,  { a => 1 } # +strict +store
156 $x->{a} = 1 # exists $x->{b} # '', '', { a => 1 } # +strict +store
157
158 $x->{a}->{b} = 1 # exists $x->{a}->{b} # '', 1,  { a => { b => 1 } } # +fetch
159 $x->{a}->{b} = 1 # exists $x->{a}->{d} # '', '', { a => { b => 1 } } # +fetch
160 $x->{a}->{b} = 1 # exists $x->{c}->{d} # '', '', { a => { b => 1 }, c => { } } # +fetch
161 $x->{a}->{b} = 1 # exists $x->{a}->{b} # '', 1,  { a => { b => 1 } } # +exists
162 $x->{a}->{b} = 1 # exists $x->{a}->{d} # '', '', { a => { b => 1 } } # +exists
163 $x->{a}->{b} = 1 # exists $x->{c}->{d} # '', '', { a => { b => 1 } } # +exists
164 $x->{a}->{b} = 1 # exists $x->{a}->{b} # '', 1,  { a => { b => 1 } } # +delete
165 $x->{a}->{b} = 1 # exists $x->{a}->{d} # '', '', { a => { b => 1 } } # +delete
166 $x->{a}->{b} = 1 # exists $x->{c}->{d} # '', '', { a => { b => 1 }, c => { } } # +delete
167 $x->{a}->{b} = 1 # exists $x->{a}->{b} # '', 1,  { a => { b => 1 } } # +store
168 $x->{a}->{b} = 1 # exists $x->{a}->{d} # '', '', { a => { b => 1 } } # +store
169 $x->{a}->{b} = 1 # exists $x->{c}->{d} # '', '', { a => { b => 1 }, c => { } } # +store
170
171 $x->{a}->{b} = 1 # exists $x->{a}->{b} # '', 1,  { a => { b => 1 } }            # +strict +fetch
172 $x->{a}->{b} = 1 # exists $x->{a}->{d} # '', '', { a => { b => 1 } }            # +strict +fetch
173 $x->{a}->{b} = 1 # exists $x->{c}->{d} # '', '', { a => { b => 1 }, c => { } }  # +strict +fetch
174 $x->{a}->{b} = 1 # exists $x->{a}->{b} # '', 1,  { a => { b => 1 } }            # +strict +exists
175 $x->{a}->{b} = 1 # exists $x->{a}->{d} # '', '', { a => { b => 1 } }            # +strict +exists
176 $x->{a}->{b} = 1 # exists $x->{c}->{d} # qr/^Reference vivification forbidden/, undef, { a => { b => 1 } }  # +strict +exists
177 $x->{a}->{b} = 1 # exists $x->{a}->{b} # '', 1,  { a => { b => 1 } }            # +strict +delete
178 $x->{a}->{b} = 1 # exists $x->{a}->{d} # '', '', { a => { b => 1 } }            # +strict +delete
179 $x->{a}->{b} = 1 # exists $x->{c}->{d} # '', '', { a => { b => 1 }, c => { } }  # +strict +delete
180 $x->{a}->{b} = 1 # exists $x->{a}->{b} # '', 1,  { a => { b => 1 } }            # +strict +store
181 $x->{a}->{b} = 1 # exists $x->{a}->{d} # '', '', { a => { b => 1 } }            # +strict +store
182 $x->{a}->{b} = 1 # exists $x->{c}->{d} # '', '', { a => { b => 1 }, c => { } }  # +strict +store
183
184 --- delete ---
185
186 $x # delete $x->{a} # '', undef, { }
187 $x # delete $x->{a} # '', undef, undef #
188 $x # delete $x->{a} # '', undef, { }   # +fetch
189 $x # delete $x->{a} # '', undef, { }   # +exists
190 $x # delete $x->{a} # '', undef, undef # +delete
191 $x # delete $x->{a} # '', undef, { }   # +store
192
193 $x # delete $x->{a} # '', undef, { } # +strict +fetch
194 $x # delete $x->{a} # '', undef, { } # +strict +exists
195 $x # delete $x->{a} # qr/^Reference vivification forbidden/, undef, undef # +strict +delete
196 $x # delete $x->{a} # '', undef, { } # +strict +store
197
198 $x # delete $x->{a}->{b} # '', undef, { a => { } }
199 $x # delete $x->{a}->{b} # '', undef, undef        #
200 $x # delete $x->{a}->{b} # '', undef, { a => { } } # +fetch
201 $x # delete $x->{a}->{b} # '', undef, { a => { } } # +exists
202 $x # delete $x->{a}->{b} # '', undef, undef        # +delete
203 $x # delete $x->{a}->{b} # '', undef, { a => { } } # +store
204
205 $x # delete $x->{a}->{b} # '', undef, { a => { } } # +strict +fetch
206 $x # delete $x->{a}->{b} # '', undef, { a => { } } # +strict +exists
207 $x # delete $x->{a}->{b} # qr/^Reference vivification forbidden/, undef, undef # +strict +delete
208 $x # delete $x->{a}->{b} # '', undef, { a => { } } # +strict +store
209
210 $x->{a} = 1 # delete $x->{a} # '', 1,     { }        # +fetch
211 $x->{a} = 1 # delete $x->{b} # '', undef, { a => 1 } # +fetch
212 $x->{a} = 1 # delete $x->{a} # '', 1,     { }        # +exists
213 $x->{a} = 1 # delete $x->{b} # '', undef, { a => 1 } # +exists
214 $x->{a} = 1 # delete $x->{a} # '', 1,     { }        # +delete
215 $x->{a} = 1 # delete $x->{b} # '', undef, { a => 1 } # +delete
216 $x->{a} = 1 # delete $x->{a} # '', 1,     { }        # +store
217 $x->{a} = 1 # delete $x->{b} # '', undef, { a => 1 } # +store
218
219 $x->{a} = 1 # delete $x->{a} # '', 1,     { }        # +strict +fetch
220 $x->{a} = 1 # delete $x->{b} # '', undef, { a => 1 } # +strict +fetch
221 $x->{a} = 1 # delete $x->{a} # '', 1,     { }        # +strict +exists
222 $x->{a} = 1 # delete $x->{b} # '', undef, { a => 1 } # +strict +exists
223 $x->{a} = 1 # delete $x->{a} # '', 1,     { }        # +strict +delete
224 $x->{a} = 1 # delete $x->{b} # '', undef, { a => 1 } # +strict +delete
225 $x->{a} = 1 # delete $x->{a} # '', 1,     { }        # +strict +store
226 $x->{a} = 1 # delete $x->{b} # '', undef, { a => 1 } # +strict +store
227
228 $x->{a}->{b} = 1 # delete $x->{a}->{b} # '', 1,     { a => { } }       # +fetch
229 $x->{a}->{b} = 1 # delete $x->{a}->{d} # '', undef, { a => { b => 1 } }# +fetch
230 $x->{a}->{b} = 1 # delete $x->{c}->{d} # '', undef, { a => { b => 1 }, c => { } } # +fetch
231 $x->{a}->{b} = 1 # delete $x->{a}->{b} # '', 1,     { a => { } }       # +exists
232 $x->{a}->{b} = 1 # delete $x->{a}->{d} # '', undef, { a => { b => 1 } }# +exists
233 $x->{a}->{b} = 1 # delete $x->{c}->{d} # '', undef, { a => { b => 1 }, c => { } } # +exists
234 $x->{a}->{b} = 1 # delete $x->{a}->{b} # '', 1,     { a => { } }       # +delete
235 $x->{a}->{b} = 1 # delete $x->{a}->{d} # '', undef, { a => { b => 1 } }# +delete
236 $x->{a}->{b} = 1 # delete $x->{c}->{d} # '', undef, { a => { b => 1 } }# +delete
237 $x->{a}->{b} = 1 # delete $x->{a}->{b} # '', 1,     { a => { } }       # +store
238 $x->{a}->{b} = 1 # delete $x->{a}->{d} # '', undef, { a => { b => 1 } }# +store
239 $x->{a}->{b} = 1 # delete $x->{c}->{d} # '', undef, { a => { b => 1 }, c => { } } # +store
240
241 $x->{a}->{b} = 1 # delete $x->{a}->{b} # '', 1,     { a => { } }                # +strict +fetch
242 $x->{a}->{b} = 1 # delete $x->{a}->{d} # '', undef, { a => { b => 1 } }         # +strict +fetch
243 $x->{a}->{b} = 1 # delete $x->{c}->{d} # '', undef, { a => { b => 1 }, c => {} }# +strict +fetch
244 $x->{a}->{b} = 1 # delete $x->{a}->{b} # '', 1,     { a => { } }                # +strict +exists
245 $x->{a}->{b} = 1 # delete $x->{a}->{d} # '', undef, { a => { b => 1 } }         # +strict +exists
246 $x->{a}->{b} = 1 # delete $x->{c}->{d} # '', undef, { a => { b => 1 }, c => {} }# +strict +exists
247 $x->{a}->{b} = 1 # delete $x->{a}->{b} # '', 1,     { a => { } }                # +strict +delete
248 $x->{a}->{b} = 1 # delete $x->{a}->{d} # '', undef, { a => { b => 1 } }         # +strict +delete
249 $x->{a}->{b} = 1 # delete $x->{c}->{d} # qr/^Reference vivification forbidden/, undef, { a => { b => 1 } }  # +strict +delete
250 $x->{a}->{b} = 1 # delete $x->{a}->{b} # '', 1,     { a => { } }                # +strict +store
251 $x->{a}->{b} = 1 # delete $x->{a}->{d} # '', undef, { a => { b => 1 } }         # +strict +store
252 $x->{a}->{b} = 1 # delete $x->{c}->{d} # '', undef, { a => { b => 1 }, c => {} }# +strict +store
253
254 --- store ---
255
256 $x # $x->{a} = 1 # '', 1, { a => 1 }
257 $x # $x->{a} = 1 # '', 1, { a => 1 } #
258 $x # $x->{a} = 1 # '', 1, { a => 1 } # +fetch
259 $x # $x->{a} = 1 # '', 1, { a => 1 } # +exists
260 $x # $x->{a} = 1 # '', 1, { a => 1 } # +delete
261 $x # $x->{a} = 1 # qr/^Can't vivify reference/, undef, undef # +store
262
263 $x # $x->{a} = 1 # '', 1, { a => 1 } # +strict +fetch
264 $x # $x->{a} = 1 # '', 1, { a => 1 } # +strict +exists
265 $x # $x->{a} = 1 # '', 1, { a => 1 } # +strict +delete
266 $x # $x->{a} = 1 # qr/^Reference vivification forbidden/, undef, undef # +strict +store
267
268 $x # $x->{a}->{b} = 1 # '', 1, { a => { b => 1 } }
269 $x # $x->{a}->{b} = 1 # '', 1, { a => { b => 1 } } #
270 $x # $x->{a}->{b} = 1 # '', 1, { a => { b => 1 } } # +fetch
271 $x # $x->{a}->{b} = 1 # '', 1, { a => { b => 1 } } # +exists
272 $x # $x->{a}->{b} = 1 # '', 1, { a => { b => 1 } } # +delete
273 $x # $x->{a}->{b} = 1 # qr/^Can't vivify reference/, undef, undef # +store
274
275 $x # $x->{a}->{b} = 1 # '', 1, { a => { b => 1 } } # +strict +fetch
276 $x # $x->{a}->{b} = 1 # '', 1, { a => { b => 1 } } # +strict +exists
277 $x # $x->{a}->{b} = 1 # '', 1, { a => { b => 1 } } # +strict +delete
278 $x # $x->{a}->{b} = 1 # qr/^Reference vivification forbidden/, undef, undef # +strict +store
279
280 $x->{a} = 1 # $x->{a} = 2 # '', 2, { a => 2 }         # +fetch
281 $x->{a} = 1 # $x->{b} = 2 # '', 2, { a => 1, b => 2 } # +fetch
282 $x->{a} = 1 # $x->{a} = 2 # '', 2, { a => 2 }         # +exists
283 $x->{a} = 1 # $x->{b} = 2 # '', 2, { a => 1, b => 2 } # +exists
284 $x->{a} = 1 # $x->{a} = 2 # '', 2, { a => 2 }         # +delete
285 $x->{a} = 1 # $x->{b} = 2 # '', 2, { a => 1, b => 2 } # +delete
286 $x->{a} = 1 # $x->{a} = 2 # '', 2, { a => 2 }         # +store
287 $x->{a} = 1 # $x->{b} = 2 # '', 2, { a => 1, b => 2 } # +store
288
289 $x->{a} = 1 # $x->{a} = 2 # '', 2, { a => 2 }         # +strict +fetch
290 $x->{a} = 1 # $x->{b} = 2 # '', 2, { a => 1, b => 2 } # +strict +fetch
291 $x->{a} = 1 # $x->{a} = 2 # '', 2, { a => 2 }         # +strict +exists
292 $x->{a} = 1 # $x->{b} = 2 # '', 2, { a => 1, b => 2 } # +strict +exists
293 $x->{a} = 1 # $x->{a} = 2 # '', 2, { a => 2 }         # +strict +delete
294 $x->{a} = 1 # $x->{b} = 2 # '', 2, { a => 1, b => 2 } # +strict +delete
295 $x->{a} = 1 # $x->{a} = 2 # '', 2, { a => 2 }         # +strict +store
296 $x->{a} = 1 # $x->{b} = 2 # '', 2, { a => 1, b => 2 } # +strict +store
297
298 $x->{a}->{b} = 1 # $x->{a}->{b} = 2 # '', 2, { a => { b => 2 } }                # +fetch
299 $x->{a}->{b} = 1 # $x->{a}->{d} = 2 # '', 2, { a => { b => 1, d => 2 } }        # +fetch
300 $x->{a}->{b} = 1 # $x->{c}->{d} = 2 # '', 2, { a => { b => 1 }, c => { d => 2 } } # +fetch
301 $x->{a}->{b} = 1 # $x->{a}->{b} = 2 # '', 2, { a => { b => 2 } }                # +exists
302 $x->{a}->{b} = 1 # $x->{a}->{d} = 2 # '', 2, { a => { b => 1, d => 2 } }        # +exists
303 $x->{a}->{b} = 1 # $x->{c}->{d} = 2 # '', 2, { a => { b => 1 }, c => { d => 2 } } # +exists
304 $x->{a}->{b} = 1 # $x->{a}->{b} = 2 # '', 2, { a => { b => 2 } }                # +delete
305 $x->{a}->{b} = 1 # $x->{a}->{d} = 2 # '', 2, { a => { b => 1, d => 2 } }        # +delete
306 $x->{a}->{b} = 1 # $x->{c}->{d} = 2 # '', 2, { a => { b => 1 }, c => { d => 2 } } # +delete
307 $x->{a}->{b} = 1 # $x->{a}->{b} = 2 # '', 2, { a => { b => 2 } }                # +store
308 $x->{a}->{b} = 1 # $x->{a}->{d} = 2 # '', 2, { a => { b => 1, d => 2 } }        # +store
309 $x->{a}->{b} = 1 # $x->{c}->{d} = 2 # qr/^Can't vivify reference/, undef, { a => { b => 1 } } # +store
310
311 $x->{a}->{b} = 1 # $x->{a}->{b} = 2 # '', 2, { a => { b => 2 } }                # +strict +fetch
312 $x->{a}->{b} = 1 # $x->{a}->{d} = 2 # '', 2, { a => { b => 1, d => 2 } }        # +strict +fetch
313 $x->{a}->{b} = 1 # $x->{c}->{d} = 2 # '', 2, { a => { b => 1 }, c => { d => 2 } } # +strict +fetch
314 $x->{a}->{b} = 1 # $x->{a}->{b} = 2 # '', 2, { a => { b => 2 } }                # +strict +exists
315 $x->{a}->{b} = 1 # $x->{a}->{d} = 2 # '', 2, { a => { b => 1, d => 2 } }        # +strict +exists
316 $x->{a}->{b} = 1 # $x->{c}->{d} = 2 # '', 2, { a => { b => 1 }, c => { d => 2 } } # +strict +exists
317 $x->{a}->{b} = 1 # $x->{a}->{b} = 2 # '', 2, { a => { b => 2 } }                # +strict +delete
318 $x->{a}->{b} = 1 # $x->{a}->{d} = 2 # '', 2, { a => { b => 1, d => 2 } }        # +strict +delete
319 $x->{a}->{b} = 1 # $x->{c}->{d} = 2 # '', 2, { a => { b => 1 }, c => { d => 2 } } # +strict +delete
320 $x->{a}->{b} = 1 # $x->{a}->{b} = 2 # '', 2, { a => { b => 2 } }                # +strict +store
321 $x->{a}->{b} = 1 # $x->{a}->{d} = 2 # '', 2, { a => { b => 1, d => 2 } }        # +strict +store
322 $x->{a}->{b} = 1 # $x->{c}->{d} = 2 # qr/^Reference vivification forbidden/, undef, { a => { b => 1 } } # +strict +store