Skip to content

Commit f635dd0

Browse files
author
dd
committed
test coverage
1 parent ca9b6fd commit f635dd0

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/systems/callbacks.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ end
2121
function FunctionalAffect(f, sts, pars, ctx = nothing)
2222
# sts & pars contain either pairs: resistor.R => R, or Syms: R
2323
vs = [x isa Pair ? x.first : x for x in sts]
24-
vs_syms = [x isa Pair ? Symbol(x.second) : getname(x) for x in sts]
24+
vs_syms = Symbol[x isa Pair ? Symbol(x.second) : getname(x) for x in sts]
2525
length(vs_syms) == length(unique(vs_syms)) || error("Variables are not unique")
2626

2727
ps = [x isa Pair ? x.first : x for x in pars]
28-
ps_syms = [x isa Pair ? Symbol(x.second) : getname(x) for x in pars]
28+
ps_syms = Symbol[x isa Pair ? Symbol(x.second) : getname(x) for x in pars]
2929
length(ps_syms) == length(unique(ps_syms)) || error("Parameters are not unique")
3030

3131
FunctionalAffect(f, vs, vs_syms, ps, ps_syms, ctx)

test/funcaffect.jl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,22 @@ sol = solve(prob, Tsit5())
1515
i4 = findfirst(==(4.0), sol[:t])
1616
@test sol.u[i4 + 1][1] > 10.0
1717

18+
# callback
19+
cb = ModelingToolkit.SymbolicDiscreteCallback([t ~ 0],
20+
(f = affect1!, sts = [], pars = [],
21+
ctx = [1]))
22+
cb1 = ModelingToolkit.SymbolicDiscreteCallback([t ~ 0], (affect1!, [], [], [1]))
23+
@test ModelingToolkit.affects(cb) isa ModelingToolkit.FunctionalAffect
24+
@test cb == cb1
25+
@test ModelingToolkit.SymbolicDiscreteCallback(cb) === cb # passthrough
26+
27+
cb = ModelingToolkit.SymbolicContinuousCallback([t ~ 0],
28+
(f = affect1!, sts = [], pars = [],
29+
ctx = [1]))
30+
cb1 = ModelingToolkit.SymbolicContinuousCallback([t ~ 0], (affect1!, [], [], [1]))
31+
@test cb == cb1
32+
@test ModelingToolkit.SymbolicContinuousCallback(cb) === cb # passthrough
33+
1834
# named tuple
1935
sys1 = ODESystem(eqs, t, [u], [], name = :sys,
2036
discrete_events = [
@@ -202,6 +218,7 @@ end
202218
balls = compose(balls, [ball1, ball2])
203219

204220
@test ModelingToolkit.has_discrete_events(balls)
221+
@test length(ModelingToolkit.affects(ModelingToolkit.discrete_events(balls))) == 2
205222

206223
prob = ODEProblem(balls, [ball1.x => 10.0, ball1.v => 0, ball2.x => 10.0, ball2.v => 0],
207224
(0, 3.0))
@@ -252,6 +269,9 @@ end
252269
continuous_events = [[y ~ 0] => (bb_affect!, [v], [], nothing)])
253270

254271
bb_sys = structural_simplify(bb_model)
272+
@test ModelingToolkit.affects(ModelingToolkit.continuous_events(bb_sys)) isa
273+
ModelingToolkit.FunctionalAffect
274+
255275
u0 = [v => 0.0, y => 50.0]
256276

257277
bb_prob = ODEProblem(bb_sys, u0, (0, 15.0))

0 commit comments

Comments
 (0)