summaryrefslogtreecommitdiff
path: root/gr-blocks/python/blocks/qa_interleave.py
diff options
context:
space:
mode:
Diffstat (limited to 'gr-blocks/python/blocks/qa_interleave.py')
-rwxr-xr-xgr-blocks/python/blocks/qa_interleave.py71
1 files changed, 69 insertions, 2 deletions
diff --git a/gr-blocks/python/blocks/qa_interleave.py b/gr-blocks/python/blocks/qa_interleave.py
index 9eaf87c83c..526e4a4e6f 100755
--- a/gr-blocks/python/blocks/qa_interleave.py
+++ b/gr-blocks/python/blocks/qa_interleave.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2004,2007,2010,2012,2013 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010,2012-2014 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -49,6 +49,37 @@ class test_interleave (gr_unittest.TestCase):
result_data = dst.data ()
self.assertFloatTuplesAlmostEqual (expected_result, result_data)
+ def test_int_002 (self):
+ blksize = 4
+ lenx = 64
+ plusup_big = lambda a: a + (blksize * 4)
+ plusup_little = lambda a: a + blksize
+ a_vec = range(0,blksize)
+ for i in range(0,(lenx/(4 * blksize)) - 1):
+ a_vec += map(plusup_big, a_vec[len(a_vec) - blksize:])
+
+ b_vec = map(plusup_little, a_vec)
+ c_vec = map(plusup_little, b_vec)
+ d_vec = map(plusup_little, c_vec)
+
+ src0 = blocks.vector_source_f (a_vec)
+ src1 = blocks.vector_source_f (b_vec)
+ src2 = blocks.vector_source_f (c_vec)
+ src3 = blocks.vector_source_f (d_vec)
+ op = blocks.interleave (gr.sizeof_float, blksize)
+ dst = blocks.vector_sink_f ()
+
+ self.tb.connect (src0, (op, 0))
+ self.tb.connect (src1, (op, 1))
+ self.tb.connect (src2, (op, 2))
+ self.tb.connect (src3, (op, 3))
+ self.tb.connect (op, dst)
+ self.tb.run ()
+ expected_result = tuple (range (lenx))
+ result_data = dst.data ()
+
+ self.assertFloatTuplesAlmostEqual (expected_result, result_data)
+
def test_deint_001 (self):
lenx = 64
src = blocks.vector_source_f (range (lenx))
@@ -75,6 +106,42 @@ class test_interleave (gr_unittest.TestCase):
self.assertFloatTuplesAlmostEqual (expected_result2, dst2.data ())
self.assertFloatTuplesAlmostEqual (expected_result3, dst3.data ())
+ def test_deint_002 (self):
+ blksize = 4
+ lenx = 64
+ src = blocks.vector_source_f (range (lenx))
+ op = blocks.deinterleave (gr.sizeof_float, blksize)
+ dst0 = blocks.vector_sink_f ()
+ dst1 = blocks.vector_sink_f ()
+ dst2 = blocks.vector_sink_f ()
+ dst3 = blocks.vector_sink_f ()
+
+ self.tb.connect (src, op)
+ self.tb.connect ((op, 0), dst0)
+ self.tb.connect ((op, 1), dst1)
+ self.tb.connect ((op, 2), dst2)
+ self.tb.connect ((op, 3), dst3)
+ self.tb.run ()
+
+ plusup_big = lambda a: a + (blksize * 4)
+ plusup_little = lambda a: a + blksize
+ a_vec = range(0,blksize)
+ for i in range(0,(lenx/(4 * blksize)) - 1):
+ a_vec += map(plusup_big, a_vec[len(a_vec) - blksize:])
+
+ b_vec = map(plusup_little, a_vec)
+ c_vec = map(plusup_little, b_vec)
+ d_vec = map(plusup_little, c_vec)
+
+ expected_result0 = tuple (a_vec)
+ expected_result1 = tuple (b_vec)
+ expected_result2 = tuple (c_vec)
+ expected_result3 = tuple (d_vec)
+
+ self.assertFloatTuplesAlmostEqual (expected_result0, dst0.data ())
+ self.assertFloatTuplesAlmostEqual (expected_result1, dst1.data ())
+ self.assertFloatTuplesAlmostEqual (expected_result2, dst2.data ())
+ self.assertFloatTuplesAlmostEqual (expected_result3, dst3.data ())
+
if __name__ == '__main__':
gr_unittest.run(test_interleave, "test_interleave.xml")
-