通过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")运行结果: