|
187 | 187 | @test consume(ttask) == 5 |
188 | 188 | end |
189 | 189 |
|
190 | | - # # Test case 3: Dict objects are shallowly copied. |
191 | | - # @testset "Dict objects shallow copy" begin |
192 | | - # function f() |
193 | | - # t = Dict(1 => 10, 2 => 20) |
194 | | - # while true |
195 | | - # produce(t[1]) |
196 | | - # t[1] = 1 + t[1] |
197 | | - # end |
198 | | - # end |
| 190 | + # Test case 3: Dict objects are shallowly copied. |
| 191 | + @testset "Dict objects shallow copy" begin |
| 192 | + function f() |
| 193 | + t = Dict(1 => 10, 2 => 20) |
| 194 | + while true |
| 195 | + produce(t[1]) |
| 196 | + t[1] = 1 + t[1] |
| 197 | + end |
| 198 | + end |
199 | 199 |
|
200 | | - # ttask = TapedTask(f) |
| 200 | + ttask = TapedTask(f) |
201 | 201 |
|
202 | | - # @test consume(ttask) == 10 |
203 | | - # @test consume(ttask) == 11 |
| 202 | + @test consume(ttask) == 10 |
| 203 | + @test consume(ttask) == 11 |
204 | 204 |
|
205 | | - # a = copy(ttask) |
206 | | - # @test consume(a) == 12 |
207 | | - # @test consume(a) == 13 |
| 205 | + a = copy(ttask) |
| 206 | + @test consume(a) == 12 |
| 207 | + @test consume(a) == 13 |
208 | 208 |
|
209 | | - # @test consume(ttask) == 14 |
210 | | - # @test consume(ttask) == 15 |
211 | | - # end |
| 209 | + @test consume(ttask) == 14 |
| 210 | + @test consume(ttask) == 15 |
| 211 | + end |
212 | 212 |
|
213 | 213 | @testset "Array deep copy 2" begin |
214 | 214 | function f() |
|
232 | 232 | @test consume(ttask) == 2 |
233 | 233 | @test consume(a) == 4 |
234 | 234 |
|
235 | | - # DATA = Dict{Task,Array}() |
236 | | - # function g() |
237 | | - # ta = zeros(UInt64, 4) |
238 | | - # for i in 1:4 |
239 | | - # ta[i] = hash(current_task()) |
240 | | - # DATA[current_task()] = ta |
241 | | - # produce(ta[i]) |
242 | | - # end |
243 | | - # end |
| 235 | + DATA = Dict{Task,Array}() |
| 236 | + function g() |
| 237 | + ta = zeros(UInt64, 4) |
| 238 | + for i in 1:4 |
| 239 | + ta[i] = hash(current_task()) |
| 240 | + DATA[current_task()] = ta |
| 241 | + produce(ta[i]) |
| 242 | + end |
| 243 | + end |
244 | 244 |
|
245 | 245 | # ttask = TapedTask(g) |
246 | 246 | # @test consume(ttask) == hash(ttask.task) # index = 1 |
|
258 | 258 | # [hash(ttask.task), hash(ttask.task), hash(a.task), hash(a.task)] |
259 | 259 | end |
260 | 260 |
|
261 | | - # # Test atomic values. |
262 | | - # @testset "ref atomic" begin |
263 | | - # function f() |
264 | | - # t = Ref(1) |
265 | | - # t[] = 0 |
266 | | - # for _ in 1:6 |
267 | | - # produce(t[]) |
268 | | - # t[] |
269 | | - # t[] += 1 |
270 | | - # end |
271 | | - # end |
272 | | - |
273 | | - # ctask = TapedTask(f) |
274 | | - |
275 | | - # consume(ctask) |
276 | | - # consume(ctask) |
277 | | - |
278 | | - # a = copy(ctask) |
279 | | - # consume(a) |
280 | | - # consume(a) |
281 | | - |
282 | | - # @test consume(ctask) == 2 |
283 | | - # @test consume(a) == 4 |
284 | | - # end |
285 | | - |
286 | | - # @testset "ref of dictionary deep copy" begin |
287 | | - # function f() |
288 | | - # t = Ref(Dict("A" => 1, 5 => "B")) |
289 | | - # t[]["A"] = 0 |
290 | | - # for _ in 1:6 |
291 | | - # produce(t[]["A"]) |
292 | | - # t[]["A"] += 1 |
293 | | - # end |
294 | | - # end |
295 | | - |
296 | | - # ctask = TapedTask(f) |
297 | | - |
298 | | - # consume(ctask) |
299 | | - # consume(ctask) |
300 | | - |
301 | | - # a = copy(ctask) |
302 | | - # consume(a) |
303 | | - # consume(a) |
304 | | - |
305 | | - # @test consume(ctask) == 2 |
306 | | - # @test consume(a) == 4 |
307 | | - # end |
308 | | - |
309 | | - # @testset "override deepcopy_types #57" begin |
310 | | - # struct DummyType end |
311 | | - |
312 | | - # function f(start::Int) |
313 | | - # t = [start] |
314 | | - # while true |
315 | | - # produce(t[1]) |
316 | | - # t[1] = 1 + t[1] |
317 | | - # end |
318 | | - # end |
319 | | - |
320 | | - # ttask = TapedTask(f, 0; deepcopy_types=DummyType) |
321 | | - # consume(ttask) |
322 | | - |
323 | | - # ttask2 = copy(ttask) |
324 | | - # consume(ttask2) |
325 | | - |
326 | | - # @test consume(ttask) == 1 |
327 | | - # @test consume(ttask2) == 2 |
328 | | - # end |
| 261 | + # Test atomic values. |
| 262 | + @testset "ref atomic" begin |
| 263 | + function f() |
| 264 | + t = Ref(1) |
| 265 | + t[] = 0 |
| 266 | + for _ in 1:6 |
| 267 | + produce(t[]) |
| 268 | + t[] |
| 269 | + t[] += 1 |
| 270 | + end |
| 271 | + end |
| 272 | + |
| 273 | + ctask = TapedTask(f) |
| 274 | + |
| 275 | + consume(ctask) |
| 276 | + consume(ctask) |
| 277 | + |
| 278 | + a = copy(ctask) |
| 279 | + consume(a) |
| 280 | + consume(a) |
| 281 | + |
| 282 | + @test consume(ctask) == 2 |
| 283 | + @test consume(a) == 4 |
| 284 | + end |
| 285 | + |
| 286 | + @testset "ref of dictionary deep copy" begin |
| 287 | + function f() |
| 288 | + t = Ref(Dict("A" => 1, 5 => "B")) |
| 289 | + t[]["A"] = 0 |
| 290 | + for _ in 1:6 |
| 291 | + produce(t[]["A"]) |
| 292 | + t[]["A"] += 1 |
| 293 | + end |
| 294 | + end |
| 295 | + |
| 296 | + ctask = TapedTask(f) |
| 297 | + |
| 298 | + consume(ctask) |
| 299 | + consume(ctask) |
| 300 | + |
| 301 | + a = copy(ctask) |
| 302 | + consume(a) |
| 303 | + consume(a) |
| 304 | + |
| 305 | + @test consume(ctask) == 2 |
| 306 | + @test consume(a) == 4 |
| 307 | + end |
| 308 | + |
| 309 | + @testset "override deepcopy_types #57" begin |
| 310 | + struct DummyType end |
| 311 | + |
| 312 | + function f(start::Int) |
| 313 | + t = [start] |
| 314 | + while true |
| 315 | + produce(t[1]) |
| 316 | + t[1] = 1 + t[1] |
| 317 | + end |
| 318 | + end |
| 319 | + |
| 320 | + ttask = TapedTask(f, 0; deepcopy_types=DummyType) |
| 321 | + consume(ttask) |
| 322 | + |
| 323 | + ttask2 = copy(ttask) |
| 324 | + consume(ttask2) |
| 325 | + |
| 326 | + @test consume(ttask) == 1 |
| 327 | + @test consume(ttask2) == 2 |
| 328 | + end |
329 | 329 | end |
330 | 330 | end |
0 commit comments