|
|
@@ -89,6 +89,44 @@ end
|
|
|
@test receiver.inbox_log[:in][1] == 42
|
|
|
end
|
|
|
|
|
|
+@testset "Fan-Out Translation Test" begin
|
|
|
+ top = CoupledDEVS(:Top)
|
|
|
+
|
|
|
+ sender_ref = add_submodel!(top, :Sender, MockNode;
|
|
|
+ out_ports=(; out=Int),
|
|
|
+ make_out=true, ta=1.0, output_msg=8
|
|
|
+ )
|
|
|
+ receiver_ref1 = add_submodel!(top, :Receiver1, MockNode;
|
|
|
+ inbox=(; in=Int[]),
|
|
|
+ )
|
|
|
+ receiver_ref2 = add_submodel!(top, :Receiver2, MockNode;
|
|
|
+ inbox=(; in=Int[]),
|
|
|
+ )
|
|
|
+
|
|
|
+ t1 = (msg) -> (msg * 2)
|
|
|
+ t2 = (msg) -> (msg ^ 2)
|
|
|
+
|
|
|
+ connect!(top, sender_ref.out, receiver_ref1.in; Z=t1)
|
|
|
+ connect!(top, sender_ref.out, receiver_ref2.in; Z=t2)
|
|
|
+
|
|
|
+ model = compile_devs(top; logging=julia_test_file)
|
|
|
+ simulate_devs!(model)
|
|
|
+ test_trace_equivalence(julia_test_file, "test/traces/TranslationFanOut.csv")
|
|
|
+
|
|
|
+ receiver1 = model[model.path_to_id["Top.Receiver1"]]
|
|
|
+ receiver2 = model[model.path_to_id["Top.Receiver2"]]
|
|
|
+
|
|
|
+ @test receiver1.n_external == 1
|
|
|
+ @test receiver2.n_external == 1
|
|
|
+
|
|
|
+ @test length(receiver1.inbox_log) == 1
|
|
|
+ @test length(receiver2.inbox_log) == 1
|
|
|
+
|
|
|
+ @test receiver1.inbox_log[:in][1] == 16
|
|
|
+ @test receiver2.inbox_log[:in][1] == 64
|
|
|
+
|
|
|
+end
|
|
|
+
|
|
|
@testset "Flattened Translation" begin
|
|
|
parent = CoupledDEVS(:parent)
|
|
|
|