Skip to content

Commit 83fa56d

Browse files
committed
Restore AllOf and AnyOf operators
1 parent 3ddd396 commit 83fa56d

File tree

3 files changed

+39
-1
lines changed

3 files changed

+39
-1
lines changed

src/SimJulia.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ module SimJulia
1414
export AbstractEvent, Environment, value, state, environment
1515
export Event, succeed, fail, @callback, remove_callback
1616
export timeout
17-
export Operator, (&), (|)
17+
export Operator, (&), (|), AllOf, AnyOf
1818
export @resumable, @yield
1919
export AbstractProcess, Simulation, run, now, active_process, StopSimulation
2020
export Process, @process, interrupt

src/operators.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,11 @@ end
5454
function (|)(ev1::AbstractEvent, ev2::AbstractEvent)
5555
Operator(eval_or, ev1, ev2)
5656
end
57+
58+
function AllOf(events...)
59+
Operator(eval_and,events...)
60+
end
61+
62+
function AnyOf(events...)
63+
Operator(eval_or,events...)
64+
end

test/operators.jl

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,33 @@ ev1 = timeout(sim)
4343
ev2 = timeout(sim)
4444
@callback or_callback(ev1 | ev2)
4545
run(sim)
46+
47+
sim = Simulation()
48+
ev1 = timeout(sim, 1)
49+
ev2 = Event(sim)
50+
ev3 = timeout(sim, 2)
51+
@callback and_callback(AllOf(ev1, ev2, ev3))
52+
@callback or_callback_succeed(AnyOf(ev1, ev2, ev3), ev2)
53+
run(sim)
54+
55+
sim = Simulation()
56+
ev1 = timeout(sim, 1, value=TestException())
57+
ev2 = Event(sim)
58+
ev3 = Event(sim)
59+
@callback or_callback_fail(AnyOf(ev1, ev2, ev3), ev2)
60+
@callback and_callback(AllOf(ev1, ev2, ev3))
61+
run(sim)
62+
63+
sim = Simulation()
64+
ev1 = timeout(sim)
65+
ev2 = timeout(sim, value=TestException())
66+
ev3 = timeout(sim)
67+
@callback or_callback(AnyOf(ev1, ev2, ev3))
68+
run(sim)
69+
70+
sim = Simulation()
71+
ev1 = timeout(sim)
72+
ev2 = timeout(sim)
73+
ev3 = timeout(sim)
74+
@callback or_callback(AnyOf(ev1, ev2, ev3))
75+
run(sim)

0 commit comments

Comments
 (0)