|
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