diff options
Diffstat (limited to 'gr-blocks/python/blocks/qa_matrix_interleaver.py')
-rwxr-xr-x | gr-blocks/python/blocks/qa_matrix_interleaver.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/gr-blocks/python/blocks/qa_matrix_interleaver.py b/gr-blocks/python/blocks/qa_matrix_interleaver.py new file mode 100755 index 0000000000..d254ef6b55 --- /dev/null +++ b/gr-blocks/python/blocks/qa_matrix_interleaver.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2021 Caliola Engineering, LLC. +# +# This file is part of GNU Radio +# +# SPDX-License-Identifier: GPL-3.0-or-later +# + +from gnuradio import gr, gr_unittest +from gnuradio import blocks +from matrix_interleaver import matrix_interleaver + +class qa_matrix_interleaver(gr_unittest.TestCase): + + def setUp(self): + self.tb = gr.top_block() + + def tearDown(self): + self.tb = None + + def test_interleave(self): + tb = self.tb + + # set up fg + cols, rows = 4, 10 + vec = sum((cols * [x,] for x in range(rows)), []) + expected = cols * list(range(rows)) + + src = blocks.vector_source_f(vec, False) + itlv = matrix_interleaver(gr.sizeof_float, rows=rows, cols=cols) + snk = blocks.vector_sink_f() + + tb.connect(src, itlv, snk) + tb.run() + result = snk.data() + + # check data + self.assertFloatTuplesAlmostEqual(expected, result) + + def test_deinterleave(self): + tb = self.tb + + # set up fg + cols, rows = 4, 10 + vec = sum((rows * [x,] for x in range(cols)), []) + expected = rows * list(range(cols)) + + src = blocks.vector_source_f(vec, False) + itlv = matrix_interleaver(gr.sizeof_float, rows=rows, cols=cols, deint=True) + snk = blocks.vector_sink_f() + + tb.connect(src, itlv, snk) + tb.run() + result = snk.data() + + # check data + self.assertFloatTuplesAlmostEqual(expected, result) + +if __name__ == '__main__': + gr_unittest.run(qa_matrix_interleaver) |