@@ -16,11 +16,10 @@ Check that _type_ and value of `x` and `y` are equal.
16
16
end
17
17
18
18
function ref_alloc_test ()
19
- ref = Ref ((; a = 10 , b = 0x0001 , c = (; aa = 300 )))
20
- ref2 = Accessors. setindex (ref, (; a = 10 , b = ref[]. b - 1 , c = (; aa = 300 )))
21
- ref3 = Accessors. setindex (ref, ref2[])
19
+ ref = Ref ((UInt (10 ), 100 ))
20
+ ref2 = @set ref[][1 ] *= - 1
22
21
23
- ref3 []
22
+ ref2 []
24
23
end
25
24
26
25
@testset " setindex" begin
41
40
@test Accessors. setindex (d, 30 , " c" ) == ₜ Dict (:a => 1 , :b => 2 , " c" => 30 )
42
41
@test Accessors. setindex (d, 10.0 , :a ) == ₜ Dict (:a => 10.0 , :b => 2.0 )
43
42
44
- ref = Ref ((; a = 10 , b = 0x0001 , c = (; aa = 300 )))
45
- @test @set (ref[]. a = 90 )[] == Ref ((; a = 90 , b = 0x0001 , c = (; aa = 300 )))[]
46
- @test @set (ref[]. b = Bool (ref[]. b))[] == Ref ((; a = 10 , b = true , c = (; aa = 300 )))[]
47
- @test @set (ref[]. c. aa = 3 )[] == Ref ((; a = 10 , b = 0x0001 , c = (; aa = 3 )))[]
48
-
49
- local val
50
- @test @allocated (val = ref_alloc_test ()) == 0
51
- @test val == (; a = 10 , b = 0x0000 , c = (; aa = 300 ))
43
+ ref = Ref ((; a = 1 , b = 2 , c = (; aa = 3 )))
44
+ @test @set (ref[]. a = 90 )[] == (; a = 90 , b = 2 , c = (; aa = 3 ))
45
+ @test @set (ref[]. b = " 2" )[] == ₜ (; a = 1 , b = " 2" , c = (; aa = 3 ))
46
+ @test @set (ref[]. c. aa += 2 )[] == (; a = 1 , b = 2 , c = (; aa = 5 ))
47
+
48
+ ref = Ref (1 :: Int )
49
+ @set ref[] = " no mutation"
50
+ @test ref[] === 1
51
+ @test typeof (ref) == Base. RefValue{Int}
52
+
53
+ if VERSION >= v " 1.5.0"
54
+ _ = ref_alloc_test ()
55
+ @test @allocated (ref_alloc_test ()) == 0
56
+ end
52
57
end
53
58
54
59
end
0 commit comments