diff --git a/test/test_sfg_generators.py b/test/test_sfg_generators.py index 65c1412bee88073fe291cd8b9313ac99080d2a56..8e679b8b48b2abe858359b392cb803e3c259aac2 100644 --- a/test/test_sfg_generators.py +++ b/test/test_sfg_generators.py @@ -1,3 +1,5 @@ +import numpy as np + from b_asic.core_operations import ( Addition, ConstantMultiplication, @@ -8,6 +10,8 @@ from b_asic.sfg_generators import ( transposed_direct_form_fir, wdf_allpass, ) +from b_asic.signal_generator import Impulse +from b_asic.simulation import Simulation from b_asic.special_operations import Delay @@ -38,7 +42,8 @@ def test_wdf_allpass(): def test_direct_form_fir(): - sfg = direct_form_fir([0.3, 0.5, 0.7]) + impulse_response = [0.3, 0.5, 0.7] + sfg = direct_form_fir(impulse_response) assert ( len( [ @@ -52,6 +57,12 @@ def test_direct_form_fir(): assert len([comp for comp in sfg.components if isinstance(comp, Addition)]) == 2 assert len([comp for comp in sfg.components if isinstance(comp, Delay)]) == 2 + sim = Simulation(sfg, [Impulse()]) + sim.run_for(4) + impulse_response.append(0.0) + assert np.allclose(sim.results['0'], impulse_response) + + impulse_response = [0.3, 0.4, 0.5, 0.6, 0.3] sfg = direct_form_fir( (0.3, 0.4, 0.5, 0.6, 0.3), mult_properties={'latency': 2, 'execution_time': 1}, @@ -59,9 +70,15 @@ def test_direct_form_fir(): ) assert sfg.critical_path_time() == 6 + sim = Simulation(sfg, [Impulse()]) + sim.run_for(6) + impulse_response.append(0.0) + assert np.allclose(sim.results['0'], impulse_response) + def test_transposed_direct_form_fir(): - sfg = transposed_direct_form_fir([0.3, 0.5, 0.7]) + impulse_response = [0.3, 0.5, 0.7] + sfg = transposed_direct_form_fir(impulse_response) assert ( len( [ @@ -75,9 +92,20 @@ def test_transposed_direct_form_fir(): assert len([comp for comp in sfg.components if isinstance(comp, Addition)]) == 2 assert len([comp for comp in sfg.components if isinstance(comp, Delay)]) == 2 + sim = Simulation(sfg, [Impulse()]) + sim.run_for(4) + impulse_response.append(0.0) + assert np.allclose(sim.results['0'], impulse_response) + + impulse_response = [0.3, 0.4, 0.5, 0.6, 0.3] sfg = transposed_direct_form_fir( (0.3, 0.4, 0.5, 0.6, 0.3), mult_properties={'latency': 2, 'execution_time': 1}, add_properties={'latency': 1, 'execution_time': 1}, ) assert sfg.critical_path_time() == 3 + + sim = Simulation(sfg, [Impulse()]) + sim.run_for(6) + impulse_response.append(0.0) + assert np.allclose(sim.results['0'], impulse_response)