From 4f48765e65166f2ab1290f7529bb4e6fb147400f Mon Sep 17 00:00:00 2001
From: Hugo Winbladh <hugwi268@student.liu.se>
Date: Sun, 27 Aug 2023 18:26:45 +0200
Subject: [PATCH] raise exception for Sink.evaluate() and add simple test

---
 b_asic/core_operations.py    |  3 +--
 test/test_core_operations.py | 15 +++++++++++++++
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/b_asic/core_operations.py b/b_asic/core_operations.py
index 9668fd99..e731a480 100644
--- a/b_asic/core_operations.py
+++ b/b_asic/core_operations.py
@@ -1278,7 +1278,6 @@ class Sink(AbstractOperation):
 
     _execution_time = 0
     is_linear = True
-    is_constant = True
 
     def __init__(self, name: Name = ""):
         """Construct a Sink operation."""
@@ -1294,7 +1293,7 @@ class Sink(AbstractOperation):
         return TypeName("sink")
 
     def evaluate(self):
-        return self.param("value")
+        raise NotImplementedError
 
     @property
     def latency(self) -> int:
diff --git a/test/test_core_operations.py b/test/test_core_operations.py
index 40f15f2f..002e38c9 100644
--- a/test/test_core_operations.py
+++ b/test/test_core_operations.py
@@ -20,6 +20,8 @@ from b_asic import (
     SquareRoot,
     Subtraction,
     SymmetricTwoportAdaptor,
+    Sink,
+    SFG,
 )
 
 
@@ -404,3 +406,16 @@ class TestDepends:
         bfly1 = Butterfly()
         assert set(bfly1.inputs_required_for_output(0)) == {0, 1}
         assert set(bfly1.inputs_required_for_output(1)) == {0, 1}
+
+class TestSink:
+    def test_create_sfg_with_sink(self):
+        bfly = Butterfly()
+        sfg = bfly.to_sfg()
+        s = Sink()
+        sfg1 = sfg.replace_operation(s, "out0")
+        sfg2 = SFG(sfg1.input_operations, sfg1.output_operations[1:])
+
+        assert sfg2.output_count == 1
+        assert sfg2.input_count == 2
+
+        assert sfg.evaluate_output(1, [0,1]) == sfg2.evaluate_output(0, [0,1])
-- 
GitLab