from gnuradio import gr import math, numpy class gr_norm(gr.basic_block): def __init__(self): gr.basic_block.__init__(self, name="normalizer", in_sig=[numpy.complex64], out_sig=[numpy.complex64]) def general_work(self, input_items, output_items): if len(input_items[0]) == 0: return -1 in0 = input_items[0] out = output_items[0] out[0] = in0[0] self.consume(0, 1) return 1 from gnuradio import gr, gr_unittest import numpy class qa_norm(gr_unittest.TestCase): def setUp(self): self.tb = gr.top_block() def tearDown(self): self.tb = None def test_001_gr_norm(self): src_data = [ -10, 10, -10j, 10j ] expected_result = [ -1, 1, -1j, 1j ] src = gr.vector_source_c(src_data) nor = gr_norm() dst = gr.vector_sink_c() self.tb.connect(src, nor) self.tb.connect(nor, dst) self.tb.run() result_data = dst.data() self.assertFloatTuplesAlmostEqual(expected_result, result_data, 6) if __name__ == '__main__': gr_unittest.main()