summaryrefslogtreecommitdiff
path: root/gr-blocks/python/blocks/qa_unpack_k_bits.py
diff options
context:
space:
mode:
Diffstat (limited to 'gr-blocks/python/blocks/qa_unpack_k_bits.py')
-rw-r--r--gr-blocks/python/blocks/qa_unpack_k_bits.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/gr-blocks/python/blocks/qa_unpack_k_bits.py b/gr-blocks/python/blocks/qa_unpack_k_bits.py
index 6f41240830..82ea23c819 100644
--- a/gr-blocks/python/blocks/qa_unpack_k_bits.py
+++ b/gr-blocks/python/blocks/qa_unpack_k_bits.py
@@ -12,6 +12,7 @@
from gnuradio import gr, gr_unittest, blocks
import random
+import pmt
class test_unpack(gr_unittest.TestCase):
@@ -43,6 +44,41 @@ class test_unpack(gr_unittest.TestCase):
self.tb.run()
self.assertEqual(expected_results, dst.data())
+ def test_003(self):
+
+ #Tags on the incoming bytes
+ src_data= [2, 3, 0, 1]
+ src_tag_offsets = [0, 1, 1, 2, 3]
+
+ #Ground Truth
+ expected_data = [1, 0, 1, 1, 0, 0, 0, 1]
+ expected_tag_offsets = [0, 2, 2, 4, 6]
+
+ test_tags = list()
+ tag_indexs = range(len(src_tag_offsets))
+ for src_tag in tag_indexs:
+ test_tags.append(
+ gr.tag_utils.python_to_tag(( src_tag_offsets[src_tag],
+ pmt.intern('tag_byte'),
+ pmt.from_long(src_tag),
+ None
+ ))
+ )
+
+ src = blocks.vector_source_b(src_data, False,1, test_tags )
+ op = blocks.unpack_k_bits_bb(2)
+ dst = blocks.vector_sink_b()
+ self.tb.connect(src, op, dst)
+ self.tb.run()
+
+ # Check the data
+ self.assertEqual(expected_data, dst.data())
+
+ # Check the tag values
+ self.assertEqual( list(tag_indexs), [ pmt.to_python(x.value) for x in dst.tags()])
+
+ # Check the tag offsets
+ self.assertEqual( expected_tag_offsets, [ x.offset for x in dst.tags()])
if __name__ == '__main__':
gr_unittest.run(test_unpack)