Skip to content

Commit db89f68

Browse files
committed
test: add test for composing systems with dependencies
1 parent bbcbc4e commit db89f68

File tree

1 file changed

+34
-1
lines changed

1 file changed

+34
-1
lines changed

test/parameter_dependencies.jl

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ end
5151

5252
@testset "extend" begin
5353
@parameters p1=1.0 p2=1.0
54-
@variables x(t)
54+
@variables x(t)=0
5555

5656
@mtkbuild sys1 = ODESystem(
5757
[D(x) ~ p1 * t + p2],
@@ -65,6 +65,9 @@ end
6565
sys = extend(sys2, sys1)
6666
@test isequal(only(parameters(sys)), p1)
6767
@test Set(full_parameters(sys)) == Set([p1, p2])
68+
prob = ODEProblem(complete(sys))
69+
get_dep = getu(prob, 2p2)
70+
@test get_dep(prob) == 4
6871
end
6972

7073
@testset "getu with parameter deps" begin
@@ -81,6 +84,36 @@ end
8184
@test get_dep(prob) == 4
8285
end
8386

87+
@testset "composing systems with parameter deps" begin
88+
@parameters p1=1.0 p2=2.0
89+
@variables x(t)=0
90+
91+
@mtkbuild sys1 = ODESystem(
92+
[D(x) ~ p1 * t + p2],
93+
t
94+
)
95+
@named sys2 = ODESystem(
96+
[D(x) ~ p1 * t - p2],
97+
t;
98+
parameter_dependencies = [p2 => 2p1]
99+
)
100+
sys = complete(ODESystem([], t, systems=[sys1, sys2], name=:sys))
101+
102+
prob = ODEProblem(sys)
103+
v1 = sys.sys2.p2
104+
v2 = 2 * v1
105+
@test is_parameter(prob, v1)
106+
@test is_observed(prob, v2)
107+
get_v1 = getu(prob, v1)
108+
get_v2 = getu(prob, v2)
109+
@test get_v1(prob) == 2
110+
@test get_v2(prob) == 4
111+
112+
new_prob = remake(prob, p=[sys2.p1 => 1.5])
113+
@test new_prob.ps[sys2.p1] == 1.5
114+
@test new_prob.ps[sys2.p2] == 3.0
115+
end
116+
84117
@testset "Clock system" begin
85118
dt = 0.1
86119
@variables x(t) y(t) u(t) yd(t) ud(t) r(t) z(t)

0 commit comments

Comments
 (0)