瀏覽代碼

new tests for translations.

Snej69420 5 月之前
父節點
當前提交
3dd17cc23c
共有 5 個文件被更改,包括 81 次插入 和 36 次删除
  1. 66 36
      test/DEVS/runtests.py
  2. 0 0
      test/test_translations.jl
  3. 5 0
      test/traces/FilterMessage.csv
  4. 5 0
      test/traces/MutateMessage.csv
  5. 5 0
      test/traces/TypeCastMessage.csv

+ 66 - 36
test/DEVS/runtests.py

@@ -1,7 +1,7 @@
 from pypdevs.simulator import Simulator
 from pypdevs.DEVS import CoupledDEVS
 from MockNode import MockNode
-
+from math import ceil
 
 def run_test(model, duration=None, variant=""):
     test = model()
@@ -25,21 +25,21 @@ def run_test(model, duration=None, variant=""):
 class Internal(CoupledDEVS):
     def __init__(self):
         super().__init__("Top")
-        self.receiver = self.addSubModel(MockNode("receiver", in_ports=["in"], ta=2.0))
+        receiver = self.addSubModel(MockNode("receiver", in_ports=["in"], ta=2.0))
 
 class External(CoupledDEVS):
     def __init__(self):
         super().__init__("Top")
-        self.sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=1.0, make_out=True))
-        self.receiver = self.addSubModel(MockNode("receiver", in_ports=["in"]))
-        self.connectPorts(self.sender.p_out["out"], self.receiver.p_in["in"])
+        sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=1.0, make_out=True))
+        receiver = self.addSubModel(MockNode("receiver", in_ports=["in"]))
+        self.connectPorts(sender.p_out["out"], receiver.p_in["in"])
 
 class ElapsedTimeInterruption(CoupledDEVS):
     def __init__(self):
         super().__init__("Top")
-        self.sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=1.5, make_out=True))
-        self.receiver = self.addSubModel(MockNode("receiver", in_ports=["in"], ta=5.0))
-        self.connectPorts(self.sender.p_out["out"], self.receiver.p_in["in"])
+        sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=1.5, make_out=True))
+        receiver = self.addSubModel(MockNode("receiver", in_ports=["in"], ta=5.0))
+        self.connectPorts(sender.p_out["out"], receiver.p_in["in"])
 
 class ElapsedTimeReset(CoupledDEVS):
     def __init__(self):
@@ -53,16 +53,16 @@ class ElapsedTimeReset(CoupledDEVS):
 class Confluent(CoupledDEVS):
     def __init__(self):
         super().__init__("Top")
-        self.sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=2.0, make_out=True))
-        self.receiver = self.addSubModel(MockNode("receiver", in_ports=["in"], ta=2.0))
-        self.connectPorts(self.sender.p_out["out"], self.receiver.p_in["in"])
+        sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=2.0, make_out=True))
+        receiver = self.addSubModel(MockNode("receiver", in_ports=["in"], ta=2.0))
+        self.connectPorts(sender.p_out["out"], receiver.p_in["in"])
 
 class NearlyConfluent(CoupledDEVS):
     def __init__(self):
         super().__init__("Top")
-        self.sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=1.999, make_out=True))
-        self.receiver = self.addSubModel(MockNode("receiver", in_ports=["in"], ta=2.0))
-        self.connectPorts(self.sender.p_out["out"], self.receiver.p_in["in"])
+        sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=1.999, make_out=True))
+        receiver = self.addSubModel(MockNode("receiver", in_ports=["in"], ta=2.0))
+        self.connectPorts(sender.p_out["out"], receiver.p_in["in"])
 
 # ---------------------------------------------------------------
 # test routing
@@ -70,16 +70,16 @@ class NearlyConfluent(CoupledDEVS):
 class UnconnectedPort(CoupledDEVS):
     def __init__(self):
         super().__init__("Top")
-        self.sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=1.0, make_out=True))
+        sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=1.0, make_out=True))
 
 class PassThrough(CoupledDEVS):
     def __init__(self):
         super().__init__("Top")
-        self.Sender = self.addSubModel(MockNode("Sender", out_ports=["out"], ta=1.0, make_out=True))
+        sender = self.addSubModel(MockNode("Sender", out_ports=["out"], ta=1.0, make_out=True))
         self.Forwarder = self.addSubModel(MockNode("Forwarder", in_ports=["in"], out_ports=["out"], ta=1.0, forward=True))
-        self.Receiver = self.addSubModel(MockNode("Receiver", in_ports=["in"]))
-        self.connectPorts(self.Sender.p_out["out"], self.Forwarder.p_in["in"])
-        self.connectPorts(self.Forwarder.p_out["out"], self.Receiver.p_in["in"])
+        receiver = self.addSubModel(MockNode("Receiver", in_ports=["in"]))
+        self.connectPorts(sender.p_out["out"], self.Forwarder.p_in["in"])
+        self.connectPorts(self.Forwarder.p_out["out"], receiver.p_in["in"])
 
 class CyclicCoupling(CoupledDEVS):
     def __init__(self):
@@ -92,35 +92,35 @@ class CyclicCoupling(CoupledDEVS):
 class FanIn(CoupledDEVS):
     def __init__(self):
         super().__init__("Top")
-        self.Sender1 = self.addSubModel(MockNode("Sender1", out_ports=["out"], ta=1.0, make_out=True))
-        self.Sender2 = self.addSubModel(MockNode("Sender2", out_ports=["out"], ta=1.0, make_out=True))
-        self.Receiver = self.addSubModel(MockNode("Receiver", in_ports=["in"]))
-        self.connectPorts(self.Sender1.p_out["out"], self.Receiver.p_in["in"])
-        self.connectPorts(self.Sender2.p_out["out"], self.Receiver.p_in["in"])
+        sender1 = self.addSubModel(MockNode("Sender1", out_ports=["out"], ta=1.0, make_out=True))
+        sender2 = self.addSubModel(MockNode("Sender2", out_ports=["out"], ta=1.0, make_out=True))
+        receiver = self.addSubModel(MockNode("Receiver", in_ports=["in"]))
+        self.connectPorts(sender1.p_out["out"], receiver.p_in["in"])
+        self.connectPorts(sender2.p_out["out"], receiver.p_in["in"])
 
 class FanOut(CoupledDEVS):
     def __init__(self):
         super().__init__("Top")
-        self.Sender = self.addSubModel(MockNode("Sender", out_ports=["out"], ta=1.0, make_out=True))
-        self.Receiver1 = self.addSubModel(MockNode("Receiver1", in_ports=["in"]))
-        self.Receiver2 = self.addSubModel(MockNode("Receiver2", in_ports=["in"]))
-        self.connectPorts(self.Sender.p_out["out"], self.Receiver1.p_in["in"])
-        self.connectPorts(self.Sender.p_out["out"], self.Receiver2.p_in["in"])
+        sender = self.addSubModel(MockNode("Sender", out_ports=["out"], ta=1.0, make_out=True))
+        receiver1 = self.addSubModel(MockNode("Receiver1", in_ports=["in"]))
+        receiver2 = self.addSubModel(MockNode("Receiver2", in_ports=["in"]))
+        self.connectPorts(sender.p_out["out"], receiver1.p_in["in"])
+        self.connectPorts(sender.p_out["out"], receiver2.p_in["in"])
 
 # --- Nested Architecture for FlattenedConnection ---
 class Child1(CoupledDEVS):
     def __init__(self, name="child1"):
         super().__init__(name)
-        self.sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=1.0, make_out=True))
+        sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=1.0, make_out=True))
         self.p_out = self.addOutPort("out")
-        self.connectPorts(self.sender.p_out["out"], self.p_out)
+        self.connectPorts(sender.p_out["out"], self.p_out)
 
 class Child2(CoupledDEVS):
     def __init__(self, name="child2"):
         super().__init__(name)
-        self.receiver = self.addSubModel(MockNode("receiver", in_ports=["in"]))
+        receiver = self.addSubModel(MockNode("receiver", in_ports=["in"]))
         self.p_in = self.addInPort("in")
-        self.connectPorts(self.p_in, self.receiver.p_in["in"])
+        self.connectPorts(self.p_in, receiver.p_in["in"])
 
 class FlattenedConnection(CoupledDEVS):
     def __init__(self):
@@ -138,6 +138,31 @@ class ComplexBag(CoupledDEVS):
         self.connectPorts(self.sA.p_out["out"], self.rec.p_in["in_A"])
         self.connectPorts(self.sB.p_out["out"], self.rec.p_in["in_B"])
 
+# ---------------------------------------------------------------
+# test translations
+# ---------------------------------------------------------------
+class MutateMessage(CoupledDEVS):
+    def __init__(self):
+        super().__init__("top")
+        sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=1.0, make_out=True, output_msg=6.0))
+        receiver = self.addSubModel(MockNode("receiver", in_ports=["in"]))
+        self.connectPorts(sender.p_out["out"], receiver.p_in["in"], z=lambda msg: msg * 1.5)
+
+class TypeCastMessage(CoupledDEVS):
+    def __init__(self):
+        super().__init__("top")
+        sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=1.0, make_out=True, output_msg=6.6))
+        receiver = self.addSubModel(MockNode("receiver", in_ports=["in"]))
+        self.connectPorts(sender.p_out["out"], receiver.p_in["in"], z=lambda msg: ceil(msg))
+
+
+class FilterMessage(CoupledDEVS):
+    def __init__(self):
+        super().__init__("top")
+        sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=1.0, make_out=True))
+        receiver = self.addSubModel(MockNode("receiver", in_ports=["in"]))
+        self.connectPorts(sender.p_out["out"], receiver.p_in["in"], z=lambda msg: None)
+
 # ---------------------------------------------------------------
 # test miscellaneous
 # ---------------------------------------------------------------
@@ -148,7 +173,7 @@ class SimDurationBoundary(CoupledDEVS):
 
 
 if __name__ == '__main__':
-    # test_transitions.jl
+    # transitions
     run_test(Internal)
     run_test(External)
     run_test(ElapsedTimeInterruption, 2)
@@ -157,7 +182,7 @@ if __name__ == '__main__':
     run_test(Confluent)
     run_test(NearlyConfluent)
 
-    # test_routing.jl
+    # routing
     run_test(UnconnectedPort)
     run_test(PassThrough)
     run_test(CyclicCoupling, 12)
@@ -166,5 +191,10 @@ if __name__ == '__main__':
     run_test(FlattenedConnection)
     run_test(ComplexBag)
 
-    # test_miscellaneous.jl
+    # translations
+    run_test(MutateMessage)
+    run_test(TypeCastMessage)
+    run_test(FilterMessage)
+
+    # miscellaneous
     run_test(SimDurationBoundary, 3.5)

+ 0 - 0
test/test_translations.jl


+ 5 - 0
test/traces/FilterMessage.csv

@@ -0,0 +1,5 @@
+time,model_path,transition_type,next_ta,inputs,outputs,state
+0.000000,top.sender,INIT,1.000000,none,none,Cycles: 1
+0.000000,top.receiver,INIT,inf,none,none,Cycles: 1
+1.000000,top.sender,INTERNAL,inf,none,out:[42],Cycles: 0
+1.000000,top.receiver,EXTERNAL,inf,in:[None],none,Cycles: 1

+ 5 - 0
test/traces/MutateMessage.csv

@@ -0,0 +1,5 @@
+time,model_path,transition_type,next_ta,inputs,outputs,state
+0.000000,top.sender,INIT,1.000000,none,none,Cycles: 1
+0.000000,top.receiver,INIT,inf,none,none,Cycles: 1
+1.000000,top.sender,INTERNAL,inf,none,out:[6.0],Cycles: 0
+1.000000,top.receiver,EXTERNAL,inf,in:[9.0],none,Cycles: 1

+ 5 - 0
test/traces/TypeCastMessage.csv

@@ -0,0 +1,5 @@
+time,model_path,transition_type,next_ta,inputs,outputs,state
+0.000000,top.sender,INIT,1.000000,none,none,Cycles: 1
+0.000000,top.receiver,INIT,inf,none,none,Cycles: 1
+1.000000,top.sender,INTERNAL,inf,none,out:[6.6],Cycles: 0
+1.000000,top.receiver,EXTERNAL,inf,in:[7],none,Cycles: 1