Skip to content

Commit 3a254b4

Browse files
committed
Fix wrong way round composition, add more tests
1 parent 6a01588 commit 3a254b4

File tree

2 files changed

+36
-8
lines changed

2 files changed

+36
-8
lines changed

src/hasvalue.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ function getvalue(vals::AbstractDict{<:VarName}, vn::VarName{sym}) where {sym}
162162
o = getoptic(test_vn)
163163
o == identity && error("getvalue: $(vn) was not found in the values provided")
164164
test_vn = VarName{sym}(_init(o))
165-
test_optic = normalise(_last(o) test_optic)
165+
test_optic = normalise(test_optic _last(o))
166166
end
167167
end
168168
end
@@ -255,7 +255,7 @@ function hasvalue(vals::AbstractDict{<:VarName}, vn::VarName{sym}) where {sym}
255255
o = getoptic(test_vn)
256256
o == identity && return false
257257
test_vn = VarName{sym}(_init(o))
258-
test_optic = normalise(_last(o) test_optic)
258+
test_optic = normalise(test_optic _last(o))
259259
end
260260
end
261261
return false

test/hasvalue.jl

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,28 @@
11
@testset "base getvalue + hasvalue" begin
22
@testset "basic NamedTuple" begin
3-
nt = (a=[1], b=2, c=(x=3,), d=[1.0 0.5; 0.5 1.0])
3+
nt = (a=[1], b=2, c=(x=3, y=[4], z=(; p=[(; q=5)])), d=[1.0 0.5; 0.5 1.0])
44
@test hasvalue(nt, @varname(a))
55
@test getvalue(nt, @varname(a)) == [1]
66
@test hasvalue(nt, @varname(a[1]))
77
@test getvalue(nt, @varname(a[1])) == 1
88
@test hasvalue(nt, @varname(b))
99
@test getvalue(nt, @varname(b)) == 2
1010
@test hasvalue(nt, @varname(c))
11-
@test getvalue(nt, @varname(c)) == (x=3,)
11+
@test getvalue(nt, @varname(c)) == (x=3, y=[4], z=(p = [(; q=5)]))
1212
@test hasvalue(nt, @varname(c.x))
1313
@test getvalue(nt, @varname(c.x)) == 3
14+
@test hasvalue(nt, @varname(c.y))
15+
@test getvalue(nt, @varname(c.y)) == [4]
16+
@test hasvalue(nt, @varname(c.y[1]))
17+
@test getvalue(nt, @varname(c.y[1])) == 4
18+
@test hasvalue(nt, @varname(c.z))
19+
@test getvalue(nt, @varname(c.z)) == (; p=[(; q=5)])
20+
@test hasvalue(nt, @varname(c.z.p))
21+
@test getvalue(nt, @varname(c.z.p)) == [(; q=5)]
22+
@test hasvalue(nt, @varname(c.z.p[1]))
23+
@test getvalue(nt, @varname(c.z.p[1])) == (; q=5)
24+
@test hasvalue(nt, @varname(c.z.p[1].q))
25+
@test getvalue(nt, @varname(c.z.p[1].q)) == 5
1426
@test hasvalue(nt, @varname(d))
1527
@test getvalue(nt, @varname(d)) == [1.0 0.5; 0.5 1.0]
1628
@test hasvalue(nt, @varname(d[1, 1]))
@@ -27,7 +39,9 @@
2739
@test !hasvalue(nt, @varname(a[2]))
2840
@test !hasvalue(nt, @varname(a[1][1]))
2941
@test !hasvalue(nt, @varname(c.x[1]))
30-
@test !hasvalue(nt, @varname(c.y))
42+
@test !hasvalue(nt, @varname(c.y[2]))
43+
@test !hasvalue(nt, @varname(c.y.a))
44+
@test !hasvalue(nt, @varname(c.zzzz))
3145
@test !hasvalue(nt, @varname(d[1, 3]))
3246
@test !hasvalue(nt, @varname(d[3, :]))
3347
end
@@ -37,7 +51,7 @@
3751
d = Dict(
3852
@varname(a) => [1],
3953
@varname(b) => 2,
40-
@varname(c) => (x=3,),
54+
@varname(c) => (x=3, y=[4], z=(; p=[(; q=5)])),
4155
@varname(d) => [1.0 0.5; 0.5 1.0],
4256
)
4357
@test hasvalue(d, @varname(a))
@@ -47,9 +61,21 @@
4761
@test hasvalue(d, @varname(b))
4862
@test getvalue(d, @varname(b)) == 2
4963
@test hasvalue(d, @varname(c))
50-
@test getvalue(d, @varname(c)) == (x=3,)
64+
@test getvalue(d, @varname(c)) == (x=3, y=[4], z=(p = [(; q=5)]))
5165
@test hasvalue(d, @varname(c.x))
5266
@test getvalue(d, @varname(c.x)) == 3
67+
@test hasvalue(d, @varname(c.y))
68+
@test getvalue(d, @varname(c.y)) == [4]
69+
@test hasvalue(d, @varname(c.y[1]))
70+
@test getvalue(d, @varname(c.y[1])) == 4
71+
@test hasvalue(d, @varname(c.z))
72+
@test getvalue(d, @varname(c.z)) == (; p=[(; q=5)])
73+
@test hasvalue(d, @varname(c.z.p))
74+
@test getvalue(d, @varname(c.z.p)) == [(; q=5)]
75+
@test hasvalue(d, @varname(c.z.p[1]))
76+
@test getvalue(d, @varname(c.z.p[1])) == (; q=5)
77+
@test hasvalue(d, @varname(c.z.p[1].q))
78+
@test getvalue(d, @varname(c.z.p[1].q)) == 5
5379
@test hasvalue(d, @varname(d))
5480
@test getvalue(d, @varname(d)) == [1.0 0.5; 0.5 1.0]
5581
@test hasvalue(d, @varname(d[1, 1]))
@@ -66,7 +92,9 @@
6692
@test !hasvalue(d, @varname(a[2]))
6793
@test !hasvalue(d, @varname(a[1][1]))
6894
@test !hasvalue(d, @varname(c.x[1]))
69-
@test !hasvalue(d, @varname(c.y))
95+
@test !hasvalue(d, @varname(c.y[2]))
96+
@test !hasvalue(d, @varname(c.y.a))
97+
@test !hasvalue(d, @varname(c.zzzz))
7098
@test !hasvalue(d, @varname(d[1, 3]))
7199
end
72100

0 commit comments

Comments
 (0)