通过gr_modtool会自动生成测试驱动程序的模板,只需要修改模板即可,模板如下:

from gnuradio import gr, gr_unittest
from gnuradio import blocks
import double_diff_swig as double_diff

class qa_translate (gr_unittest.TestCase):

    def setUp (self):
        self.tb = gr.top_block ()

    def tearDown (self):
        self.tb = None

    def test_001_t (self):
        # set up fg
        self.tb.run ()
        # check data


if __name__ == '__main__':
    gr_unittest.run(qa_translate, "qa_translate.xml")

这里module的名称为double_diff,block的名称为translate。


我们需要做的就是补充test_001_t()函数:构建流图、给出测试数据以及预期结果、运行流图、将实际结果与预期结果I进行比较。修改好的程序如下:

from gnuradio import gr, gr_unittest
from gnuradio import blocks
import double_diff

class qa_translate (gr_unittest.TestCase):

    def setUp (self):
        self.tb = gr.top_block ()

    def tearDown (self):
        self.tb = None

    def test_001_t (self):
	src_data=[1,-1,-1,1,1,-1]
	expected_ampl=(1,1,1,1,1,1)
	expected_phase=(0,1,1,0,0,1)

	src=blocks.vector_source_c(src_data)
	op=double_diff.translate()
	dst0=blocks.vector_sink_f()
	dst1=blocks.vector_sink_f()

	self.tb.connect(src,op)
	self.tb.connect((op,0),dst0)
	self.tb.connect((op,1),dst1)
        # set up fg
        self.tb.run ()
        # check data
	result_ampl=dst0.data()
	result_phase=dst1.data()
	self.assertEqual(expected_ampl,result_ampl)
	self.assertEqual(expected_phase,result_phase)


if __name__ == '__main__':
    gr_unittest.run(qa_translate, "qa_translate.xml")

运行结果:


python 驱动开发 python写驱动程序_自动生成