|
|
@@ -1,3 +1,5 @@
|
|
|
+julia_test_file = "test/traces/julia.csv"
|
|
|
+
|
|
|
@testset "Transient State (ta = 0.0)" begin
|
|
|
top = CoupledDEVS(:top)
|
|
|
|
|
|
@@ -68,8 +70,9 @@ end
|
|
|
ta=2.0
|
|
|
)
|
|
|
|
|
|
- model = compile_devs(top)
|
|
|
+ model = compile_devs(top; logging=julia_test_file)
|
|
|
simulate_devs!(model)
|
|
|
+ test_trace_equivalence(julia_test_file, "test/traces/Internal.csv")
|
|
|
|
|
|
receiver = model[model.path_to_id["top.receiver"]]
|
|
|
|
|
|
@@ -90,8 +93,9 @@ end
|
|
|
)
|
|
|
connect!(top, sender_ref.out, receiver_ref.in)
|
|
|
|
|
|
- model = compile_devs(top)
|
|
|
+ model = compile_devs(top; logging=julia_test_file)
|
|
|
simulate_devs!(model)
|
|
|
+ test_trace_equivalence(julia_test_file, "test/traces/External.csv")
|
|
|
|
|
|
sender = model[model.path_to_id["top.sender"]]
|
|
|
@test sender.n_internal == 1
|
|
|
@@ -112,8 +116,9 @@ end
|
|
|
receiver_ref = add_submodel!(top, :receiver, MockNode; inbox=(; in=Int[]), ta=5.0)
|
|
|
connect!(top, sender_ref.out, receiver_ref.in)
|
|
|
|
|
|
- model = compile_devs(top)
|
|
|
+ model = compile_devs(top; logging=julia_test_file)
|
|
|
simulate_devs!(model, 2.0)
|
|
|
+ test_trace_equivalence(julia_test_file, "test/traces/ElapsedTimeInterruption.csv")
|
|
|
|
|
|
receiver = model[model.path_to_id["top.receiver"]]
|
|
|
@test receiver.n_external == 1
|
|
|
@@ -123,21 +128,22 @@ end
|
|
|
@testset "Elapsed Time Reset (Multiple Interruptions)" begin
|
|
|
top = CoupledDEVS(:top)
|
|
|
|
|
|
- # Sender 1 fires at t = 3.0
|
|
|
s1 = add_submodel!(top, :s1, MockNode; out_ports=Set([:out]), ta=3.0, make_out=true)
|
|
|
- # Sender 2 fires at t = 5.0
|
|
|
s2 = add_submodel!(top, :s2, MockNode; out_ports=Set([:out]), ta=5.0, make_out=true)
|
|
|
|
|
|
rec = add_submodel!(top, :rec, MockNode; inbox=(; in=Int[]), ta=10.0)
|
|
|
|
|
|
connect!(top, s1.out, rec.in)
|
|
|
connect!(top, s2.out, rec.in)
|
|
|
- model = compile_devs(top)
|
|
|
|
|
|
+ model = compile_devs(top; logging=julia_test_file)
|
|
|
simulate_devs!(model, 4.0)
|
|
|
+ test_trace_equivalence(julia_test_file, "test/traces/ElapsedTimeReset1.csv")
|
|
|
+
|
|
|
@test model[model.path_to_id["top.rec"]].last_e == 3.0
|
|
|
|
|
|
simulate_devs!(model, 6.0)
|
|
|
+ test_trace_equivalence(julia_test_file, "test/traces/ElapsedTimeReset2.csv")
|
|
|
@test model[model.path_to_id["top.rec"]].last_e == 2.0
|
|
|
end
|
|
|
|
|
|
@@ -153,9 +159,10 @@ end
|
|
|
ta=2.0
|
|
|
)
|
|
|
connect!(top, sender_ref.out, receiver_ref.in)
|
|
|
- model = compile_devs(top)
|
|
|
|
|
|
+ model = compile_devs(top; logging=julia_test_file)
|
|
|
simulate_devs!(model)
|
|
|
+ test_trace_equivalence(julia_test_file, "test/traces/Confluent.csv")
|
|
|
|
|
|
sender = model[model.path_to_id["top.sender"]]
|
|
|
@test sender.n_internal == 1
|
|
|
@@ -173,16 +180,17 @@ end
|
|
|
|
|
|
sender_ref = add_submodel!(top, :sender, MockNode;
|
|
|
out_ports=Set([:out]),
|
|
|
- ta=1.999999, make_out=true
|
|
|
+ ta=1.999, make_out=true
|
|
|
)
|
|
|
receiver_ref = add_submodel!(top, :receiver, MockNode;
|
|
|
inbox=(; in=Int[]),
|
|
|
- ta=2.000000
|
|
|
+ ta=2.000
|
|
|
)
|
|
|
connect!(top, sender_ref.out, receiver_ref.in)
|
|
|
- model = compile_devs(top)
|
|
|
|
|
|
+ model = compile_devs(top; logging=julia_test_file)
|
|
|
simulate_devs!(model)
|
|
|
+ test_trace_equivalence(julia_test_file, "test/traces/NearlyConfluent.csv")
|
|
|
|
|
|
sender = model[model.path_to_id["top.sender"]]
|
|
|
@test sender.n_internal == 1
|