Skip to content

Commit 1e2802a

Browse files
committed
test: types in parameters, variables and structural_parameters in @mtkmodel
1 parent ac4dd25 commit 1e2802a

File tree

1 file changed

+39
-10
lines changed

1 file changed

+39
-10
lines changed

test/model_parsing.jl

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ resistor = getproperty(rc, :resistor; namespace = false)
164164
# Test that `C_val` passed via argument is set as default of C.
165165
@test getdefault(rc.capacitor.C) == C_val
166166
# Test that `k`'s default value is unchanged.
167-
@test getdefault(rc.constant.k) == RC.structure[:kwargs][:k_val]
167+
@test getdefault(rc.constant.k) == RC.structure[:kwargs][:k_val][:value]
168168
@test getdefault(rc.capacitor.v) == 0.0
169169

170170
@test get_gui_metadata(rc.resistor).layout == Resistor.structure[:icon] ==
@@ -241,6 +241,33 @@ resistor = getproperty(rc, :resistor; namespace = false)
241241
@test isequal(getdefault(model.k), model.kval)
242242
end
243243

244+
@testset "Type annotation" begin
245+
@mtkmodel TypeModel begin
246+
@structural_parameters begin
247+
flag::Bool = true
248+
end
249+
@parameters begin
250+
par0::Bool = true
251+
par1::Int = 1
252+
par2(t)::Int,
253+
[description = "Enforced `par4` to be an Int by setting the type to the keyword-arg."]
254+
par3(t)::Float64 = 1.0
255+
par4(t)::Float64 = 1 # converts 1 to 1.0 of Float64 type
256+
end
257+
end
258+
259+
@named type_model = TypeModel()
260+
261+
@test getname.(parameters(type_model)) == [:par0, :par1, :par2, :par3, :par4]
262+
263+
@test_throws TypeError TypeModel(; name = :throws, flag = 1)
264+
@test_throws TypeError TypeModel(; name = :throws, par0 = 1)
265+
@test_throws TypeError TypeModel(; name = :throws, par1 = 1.5)
266+
@test_throws TypeError TypeModel(; name = :throws, par2 = 1.5)
267+
@test_throws TypeError TypeModel(; name = :throws, par3 = true)
268+
@test_throws TypeError TypeModel(; name = :throws, par4 = true)
269+
end
270+
244271
@testset "Defaults of subcomponents MTKModel" begin
245272
@mtkmodel A begin
246273
@parameters begin
@@ -322,7 +349,9 @@ end
322349
@test A.structure[:parameters] == Dict(:p => Dict())
323350
@test A.structure[:extend] == [[:e], :extended_e, :E]
324351
@test A.structure[:equations] == ["e ~ 0"]
325-
@test A.structure[:kwargs] == Dict(:p => nothing, :v => nothing)
352+
@test A.structure[:kwargs] ==
353+
Dict{Symbol, Dict}(:p => Dict(:value => nothing, :type => nothing),
354+
:v => Dict(:value => nothing, :type => nothing))
326355
@test A.structure[:components] == [[:cc, :C]]
327356
end
328357

@@ -392,9 +421,9 @@ end
392421
@named else_in_sys = InsideTheBlock(flag = 3)
393422
else_in_sys = complete(else_in_sys)
394423

395-
@test nameof.(parameters(if_in_sys)) == [:if_parameter, :eq]
396-
@test nameof.(parameters(elseif_in_sys)) == [:elseif_parameter, :eq]
397-
@test nameof.(parameters(else_in_sys)) == [:else_parameter, :eq]
424+
@test getname.(parameters(if_in_sys)) == [:if_parameter, :eq]
425+
@test getname.(parameters(elseif_in_sys)) == [:elseif_parameter, :eq]
426+
@test getname.(parameters(else_in_sys)) == [:else_parameter, :eq]
398427

399428
@test nameof.(get_systems(if_in_sys)) == [:if_sys, :default_sys]
400429
@test nameof.(get_systems(elseif_in_sys)) == [:elseif_sys, :default_sys]
@@ -481,9 +510,9 @@ end
481510
@named ternary_out_sys = OutsideTheBlock(condition = 4)
482511
else_out_sys = complete(else_out_sys)
483512

484-
@test nameof.(parameters(if_out_sys)) == [:if_parameter, :default_parameter]
485-
@test nameof.(parameters(elseif_out_sys)) == [:elseif_parameter, :default_parameter]
486-
@test nameof.(parameters(else_out_sys)) == [:else_parameter, :default_parameter]
513+
@test getname.(parameters(if_out_sys)) == [:if_parameter, :default_parameter]
514+
@test getname.(parameters(elseif_out_sys)) == [:elseif_parameter, :default_parameter]
515+
@test getname.(parameters(else_out_sys)) == [:else_parameter, :default_parameter]
487516

488517
@test nameof.(get_systems(if_out_sys)) == [:if_sys, :default_sys]
489518
@test nameof.(get_systems(elseif_out_sys)) == [:elseif_sys, :default_sys]
@@ -529,8 +558,8 @@ end
529558
@named ternary_false = TernaryBranchingOutsideTheBlock(condition = false)
530559
ternary_false = complete(ternary_false)
531560

532-
@test nameof.(parameters(ternary_true)) == [:ternary_parameter_true]
533-
@test nameof.(parameters(ternary_false)) == [:ternary_parameter_false]
561+
@test getname.(parameters(ternary_true)) == [:ternary_parameter_true]
562+
@test getname.(parameters(ternary_false)) == [:ternary_parameter_false]
534563

535564
@test nameof.(get_systems(ternary_true)) == [:ternary_sys_true]
536565
@test nameof.(get_systems(ternary_false)) == [:ternary_sys_false]

0 commit comments

Comments
 (0)