summaryrefslogtreecommitdiff
path: root/gr-blocks/python/blocks/qa_pack_k_bits.py
diff options
context:
space:
mode:
authorJason Uher <jason.uher@jhuapl.edu>2021-07-11 21:56:15 +0000
committermormj <34754695+mormj@users.noreply.github.com>2021-07-19 07:29:04 -0400
commit6529fb50840529f9f3a664d27ff5a8cf45f76ef4 (patch)
treeedfb8281789ee3860d8000ce23939dd20d55b72a /gr-blocks/python/blocks/qa_pack_k_bits.py
parent2b51d137e78f1e66b607652fd8bb24ca18f1c44c (diff)
digital: pack_k_bits propagate tags correctly
fixes #1111 Signed-off-by: Jason Uher <jason.uher@jhuapl.edu>
Diffstat (limited to 'gr-blocks/python/blocks/qa_pack_k_bits.py')
-rw-r--r--gr-blocks/python/blocks/qa_pack_k_bits.py42
1 files changed, 40 insertions, 2 deletions
diff --git a/gr-blocks/python/blocks/qa_pack_k_bits.py b/gr-blocks/python/blocks/qa_pack_k_bits.py
index b38f9c519d..c4cfd6545e 100644
--- a/gr-blocks/python/blocks/qa_pack_k_bits.py
+++ b/gr-blocks/python/blocks/qa_pack_k_bits.py
@@ -12,7 +12,7 @@
import random
from gnuradio import gr, gr_unittest, blocks
-
+import pmt
class test_pack(gr_unittest.TestCase):
@@ -41,7 +41,6 @@ class test_pack(gr_unittest.TestCase):
dst = blocks.vector_sink_b()
self.tb.connect(src, op, dst)
self.tb.run()
- #self.assertEqual(expected_results, dst.data())
self.assertEqual(expected_results, dst.data())
def test_003(self):
@@ -54,6 +53,45 @@ class test_pack(gr_unittest.TestCase):
self.tb.run()
self.assertEqual(list(expected_results), list(snk.data()))
+ def test_004(self):
+ # Test tags propagation
+
+ #Tags on the incoming bits
+ src_data = [1, 0, 1, 1, 0, 0, 0, 1]
+ #src_tag_offsets = [1, 2, 3, 5, 6]
+ src_tag_offsets = [1, 2, 3, 5, 6, 7]
+
+ #Ground Truth
+ expected_data= [2, 3, 0, 1]
+ expected_tag_offsets = [0, 1, 1, 2, 3, 3]
+
+ 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.pack_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_pack)