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