Skip to content

Commit d758f63

Browse files
committed
update tests
1 parent b89c3db commit d758f63

File tree

1 file changed

+38
-6
lines changed

1 file changed

+38
-6
lines changed

test/reactionsystem_core/reactionsystem.jl

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1006,6 +1006,12 @@ let
10061006
end
10071007

10081008
########## tests related to hybrid systems ##########
1009+
1010+
massactionjumps(js::JumpSystem) = equations(js).x[1]
1011+
constantratejumps(js::JumpSystem) = equations(js).x[2]
1012+
variableratejumps(js::JumpSystem) = equations(js).x[3]
1013+
odeeqs(js::JumpSystem) = equations(js).x[4]
1014+
10091015
let
10101016
t = default_t()
10111017
D = default_time_deriv()
@@ -1018,15 +1024,41 @@ let
10181024
cevents = [[V ~ 2.0] => [V ~ V/2, A ~ A/2]]
10191025
@named rs = ReactionSystem(vcat(rxs, eqs), t; continuous_events = cevents)
10201026
rs = complete(rs)
1021-
jinput = JumpInputs(rn, [:A => 0, :V => 1.0], (0.0, 10.0), [:k => 1.0, => .4])
1027+
jinput = JumpInputs(rs, [:A => 0, :B => 1, :C => 1, :V => 1.0], (0.0, 10.0), [:k => 1.0, => .4])
1028+
@test jinput.prob isa ODEProblem
1029+
sys = jinput.sys
1030+
@test sys isa JumpSystem
1031+
@test MT.has_equations(sys)
1032+
@test length(massactionjumps(sys)) == 1
1033+
@test isempty(constantratejumps(sys))
1034+
@test length(variableratejumps(sys)) == 3
1035+
@test length(odeeqs(sys)) == 4
1036+
@test length(continuous_events(sys)) == 1
1037+
end
1038+
1039+
let
1040+
t = default_t()
1041+
D = default_time_deriv()
1042+
@parameters λ k
1043+
@variables V(t)
1044+
@species A(t) B(t) C(t)
1045+
metadata = [:physical_scale => PhysicalScale.ODE]
1046+
rxs = [Reaction(k*V, [], [A]), Reaction*A, [B], nothing; metadata),
1047+
Reaction(k, [A, B], nothing), Reaction(λ, [C], [A])]
1048+
eqs = [D(V) ~ λ*V*C]
1049+
cevents = [[V ~ 2.0] => [V ~ V/2, A ~ A/2]]
1050+
@named rs = ReactionSystem(vcat(rxs, eqs), t; continuous_events = cevents)
1051+
rs = complete(rs)
1052+
jinput = JumpInputs(rs, [:A => 0, :B => 1, :C => 1, :V => 1.0], (0.0, 10.0), [:k => 1.0, => .4])
10221053
@test jinput.prob isa ODEProblem
10231054
sys = jinput.sys
10241055
@test sys isa JumpSystem
10251056
@test MT.has_equations(sys)
1026-
eqs = MT.equations(sys)
1027-
@test isempty(eqs.x[1])
1028-
@test isempty(eqs.x[2])
1029-
@test length(eqs.x[3]) == 1
1030-
@test length(eqs.x[4]) == 2 # dA/dt and dV/dt
1057+
@test length(massactionjumps(sys)) == 1
1058+
@test isempty(constantratejumps(sys))
1059+
@test length(variableratejumps(sys)) == 2
1060+
@test length(odeeqs(sys)) == 4
1061+
odes = union(eqs, [D(A) ~ 0, D(B) ~ -λ*A*B, D(C) ~ 0])
1062+
@test issetequal(odes, odeeqs(sys))
10311063
@test length(continuous_events(sys)) == 1
10321064
end

0 commit comments

Comments
 (0)