From 0f5833aa7f1845c2bc51d6fffeee0b96cf3a8b07 Mon Sep 17 00:00:00 2001
From: Rasmus Karlsson <rasmus@rasmus.local>
Date: Mon, 20 Apr 2020 12:58:52 +0200
Subject: [PATCH] SFG.split() now excludes Input and Output type. Added one
 simple test for split.

---
 b_asic/signal_flow_graph.py |  9 ++++++++-
 test/test_split_r.py        | 34 ++++++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 1 deletion(-)
 create mode 100644 test/test_split_r.py

diff --git a/b_asic/signal_flow_graph.py b/b_asic/signal_flow_graph.py
index e8e7af01..5713c192 100644
--- a/b_asic/signal_flow_graph.py
+++ b/b_asic/signal_flow_graph.py
@@ -232,7 +232,14 @@ class SFG(AbstractOperation):
         return value
 
     def split(self) -> Iterable[Operation]:
-        return self.operations
+        """ Returns every operation in the SFG except for Input and Output types. """
+
+        ops = []
+        for op in self.operations:
+            if not isinstance(op, Input) and not isinstance(op, Output):
+                ops.append(op)
+
+        return ops # Need any checking before returning?
     
     def copy_component(self, *args, **kwargs) -> GraphComponent:
         return super().copy_component(*args, **kwargs, inputs = self._input_operations, outputs = self._output_operations,
diff --git a/test/test_split_r.py b/test/test_split_r.py
new file mode 100644
index 00000000..20874335
--- /dev/null
+++ b/test/test_split_r.py
@@ -0,0 +1,34 @@
+import pytest
+
+from b_asic import Addition, Subtraction, Multiplication, ConstantMultiplication, Division, Input, Output, SFG
+
+def test_split_three_add():
+    """ Split one custom operation consisting of three Additions"""
+    in1 = Input()
+    in2 = Input()
+    in3 = Input()
+    in4 = Input()
+
+    #in1.value = 1
+    #in2.value = 2
+    #in3.value = 3
+    #in4.value = 4
+
+    add1 = in1 + in2
+    add2 = in3 + in4
+    add3 = add1 + add2
+    out1 = Output(add3)
+    
+    Cstm = SFG(inputs=[in1, in2, in3, in4], outputs=[out1])
+
+    result = Cstm.split()
+
+    assert(isinstance(result[0], Addition))
+    assert(isinstance(result[1], Addition))
+    assert(isinstance(result[2], Addition))
+
+    assert(len(result) == 3)
+    
+    
+    
+
-- 
GitLab