diff --git a/test/test_sfg.py b/test/test_sfg.py
index f534143bc83f7a0afdb000fd4563429490334b71..b71eaa477b32b198b76a0148867fb18424fbfdec 100644
--- a/test/test_sfg.py
+++ b/test/test_sfg.py
@@ -5,9 +5,10 @@ import string
 import io
 import sys
 
-
-from b_asic import SFG, Signal, Input, Output, Constant, ConstantMultiplication, Addition, Multiplication, Delay, \
-    Butterfly, Subtraction, SquareRoot
+from b_asic import SFG, Signal, Input, Output, Delay, FastSimulation
+from b_asic.core_operations import Constant, Addition, Subtraction, Multiplication, \
+Division, Min, Max, SquareRoot, ComplexConjugate, Absolute, ConstantMultiplication, \
+Butterfly
 
 from b_asic.save_load_structure import sfg_to_python, python_to_sfg
 
@@ -283,6 +284,113 @@ class TestReplaceComponents:
             assert False
 
 
+class TestConstructSFG:
+
+    def test_1k_additions(self):
+        prev_op = Addition(Constant(1), Constant(1))
+        for _ in range(999):
+            prev_op = Addition(prev_op, Constant(2))
+        sfg = SFG(outputs=[Output(prev_op)])
+        sim = FastSimulation(sfg)
+        sim.step()
+        assert sim.results["0"][0].real == 2000
+        
+    def test_1k_subtractions(self):
+        prev_op = Subtraction(Constant(0), Constant(2))
+        for _ in range(999):
+            prev_op = Subtraction(prev_op, Constant(2))
+        sfg = SFG(outputs=[Output(prev_op)])
+        sim = FastSimulation(sfg)
+        sim.step()
+        assert sim.results["0"][0].real == -2000
+        
+    def test_1k_butterfly(self):
+        prev_op_add = Addition(Constant(1), Constant(1))
+        prev_op_sub = Subtraction(Constant(-1), Constant(1))
+        for _ in range(499):
+            prev_op_add = Addition(prev_op_add, Constant(2))
+        for _ in range(499):
+            prev_op_sub = Subtraction(prev_op_sub, Constant(2))
+        butterfly = Butterfly(prev_op_add, prev_op_sub)
+        sfg = SFG(outputs=[Output(butterfly.output(0)), Output(butterfly.output(1))])
+        sim = FastSimulation(sfg)
+        sim.step()
+        assert sim.results["0"][0].real == 0
+        assert sim.results["1"][0].real == 2000
+
+    def test_1k_multiplications(self):
+        prev_op = Multiplication(Constant(3), Constant(0.5))
+        for _ in range(999):
+            prev_op = Multiplication(prev_op, Constant(1.01))
+        sfg = SFG(outputs=[Output(prev_op)])
+        sim = FastSimulation(sfg)
+        sim.step()
+        assert sim.results["0"][0].real == 31127.458868040336
+
+    def test_1k_divisions(self):
+        prev_op = Division(Constant(3), Constant(0.5))
+        for _ in range(999):
+            prev_op = Division(prev_op, Constant(1.01))
+        sfg = SFG(outputs=[Output(prev_op)])
+        sim = FastSimulation(sfg)
+        sim.step()
+        assert sim.results["0"][0].real == 0.00028913378500165966
+
+    def test_1k_mins(self):
+        prev_op = Min(Constant(3.14159), Constant(43.14123843))
+        for _ in range(999):
+            prev_op = Min(prev_op, Constant(43.14123843))
+        sfg = SFG(outputs=[Output(prev_op)])
+        sim = FastSimulation(sfg)
+        sim.step()
+        assert sim.results["0"][0].real == 3.14159
+
+    def test_1k_maxs(self):
+        prev_op = Max(Constant(3.14159), Constant(43.14123843))
+        for _ in range(999):
+            prev_op = Max(prev_op, Constant(3.14159))
+        sfg = SFG(outputs=[Output(prev_op)])
+        sim = FastSimulation(sfg)
+        sim.step()
+        assert sim.results["0"][0].real == 43.14123843
+
+    def test_1k_square_roots(self):
+        prev_op = SquareRoot(Constant(1000000))
+        for _ in range(4):
+            prev_op = SquareRoot(prev_op)
+        sfg = SFG(outputs=[Output(prev_op)])
+        sim = FastSimulation(sfg)
+        sim.step()
+        assert sim.results["0"][0].real == 1.539926526059492
+
+    def test_1k_complex_conjugates(self):
+        prev_op = ComplexConjugate(Constant(10+5j))
+        for _ in range(999):
+            prev_op = ComplexConjugate(prev_op)
+        sfg = SFG(outputs=[Output(prev_op)])
+        sim = FastSimulation(sfg)
+        sim.step()
+        assert sim.results["0"] == [10+5j]
+
+    def test_1k_absolutes(self):
+        prev_op = Absolute(Constant(-3.14159))
+        for _ in range(999):
+            prev_op = Absolute(prev_op)
+        sfg = SFG(outputs=[Output(prev_op)])
+        sim = FastSimulation(sfg)
+        sim.step()
+        assert sim.results["0"][0].real == 3.14159
+
+    def test_1k_constant_multiplications(self):
+        prev_op = ConstantMultiplication(1.02, Constant(3.14159))
+        for _ in range(999):
+            prev_op = ConstantMultiplication(1.02, prev_op)
+        sfg = SFG(outputs=[Output(prev_op)])
+        sim = FastSimulation(sfg)
+        sim.step()
+        assert sim.results["0"][0].real == 1251184247.0026844
+
+
 class TestInsertComponent:
 
     def test_insert_component_in_sfg(self, large_operation_tree_names):