@@ -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)
242242end
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
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 ]]
327356end
328357
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 ]
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 ]
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