3 # Copyright 2005 Free Software Foundation, Inc.
5 # This file is part of GNU Radio
7 # GNU Radio is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3, or (at your option)
12 # GNU Radio is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with GNU Radio; see the file COPYING. If not, write to
19 # the Free Software Foundation, Inc., 51 Franklin Street,
20 # Boston, MA 02110-1301, USA.
23 from gnuradio import gr, gr_unittest
26 class test_packing(gr_unittest.TestCase):
29 self.fg = gr.flow_graph ()
36 Test stream_to_streams.
39 expected_results = (1,0,0,0,0,0,0,0)
40 src = gr.vector_source_b(src_data,False)
41 op = gr.packed_to_unpacked_bb(1, gr.GR_MSB_FIRST)
42 self.fg.connect(src, op)
44 dst = gr.vector_sink_b()
45 self.fg.connect(op, dst)
49 self.assertEqual(expected_results, dst.data())
53 Test stream_to_streams.
56 expected_results = (0,0,0,0,0,0,0, 1)
57 src = gr.vector_source_b(src_data,False)
58 op = gr.packed_to_unpacked_bb(1, gr.GR_LSB_FIRST)
59 self.fg.connect(src, op)
61 dst = gr.vector_sink_b()
62 self.fg.connect(op, dst)
66 self.assertEqual(expected_results, dst.data())
70 Test stream_to_streams.
73 expected_results = (4, 2)
74 src = gr.vector_source_b(src_data,False)
75 op = gr.packed_to_unpacked_bb(3, gr.GR_LSB_FIRST)
76 self.fg.connect(src, op)
78 dst = gr.vector_sink_b()
79 self.fg.connect(op, dst)
83 self.assertEqual(expected_results, dst.data())
87 Test stream_to_streams.
90 expected_results = (0, 4)
91 src = gr.vector_source_b(src_data,False)
92 op = gr.packed_to_unpacked_bb(3, gr.GR_MSB_FIRST)
93 self.fg.connect(src, op)
95 dst = gr.vector_sink_b()
96 self.fg.connect(op, dst)
100 self.assertEqual(expected_results, dst.data())
104 Test stream_to_streams.
106 src_data = (1,0,0,0,0,0,1,0,0,1,0,1,1,0,1,0)
107 expected_results = (0x82,0x5a)
108 src = gr.vector_source_b(src_data,False)
109 op = gr.unpacked_to_packed_bb(1, gr.GR_MSB_FIRST)
110 self.fg.connect(src, op)
112 dst = gr.vector_sink_b()
113 self.fg.connect(op, dst)
117 self.assertEqual(expected_results, dst.data())
121 Test stream_to_streams.
123 src_data = (0,1,0,0,0,0,0,1,0,1,0,1,1,0,1,0)
124 expected_results = (0x82,0x5a)
125 src = gr.vector_source_b(src_data,False)
126 op = gr.unpacked_to_packed_bb(1, gr.GR_LSB_FIRST)
127 self.fg.connect(src, op)
129 dst = gr.vector_sink_b()
130 self.fg.connect(op, dst)
134 self.assertEqual(expected_results, dst.data())
139 Test stream_to_streams.
141 src_data = (4, 2, 0,0,0)
142 expected_results = (0x11,)
143 src = gr.vector_source_b(src_data,False)
144 op = gr.unpacked_to_packed_bb(3, gr.GR_LSB_FIRST)
145 self.fg.connect(src, op)
147 dst = gr.vector_sink_b()
148 self.fg.connect(op, dst)
152 self.assertEqual(expected_results, dst.data())
156 Test stream_to_streams.
158 src_data = (0, 4, 2,0,0)
159 expected_results = (0x11,)
160 src = gr.vector_source_b(src_data,False)
161 op = gr.unpacked_to_packed_bb(3, gr.GR_MSB_FIRST)
162 self.fg.connect(src, op)
164 dst = gr.vector_sink_b()
165 self.fg.connect(op, dst)
169 self.assertEqual(expected_results, dst.data())
173 Test stream_to_streams.
178 for i in xrange(202):
179 src_data.append((random.randint(0,255)))
180 src_data = tuple(src_data)
181 expected_results = src_data
183 src = gr.vector_source_b(tuple(src_data),False)
184 op1 = gr.packed_to_unpacked_bb(3, gr.GR_MSB_FIRST)
185 op2 = gr.unpacked_to_packed_bb(3, gr.GR_MSB_FIRST)
186 self.fg.connect(src, op1, op2)
188 dst = gr.vector_sink_b()
189 self.fg.connect(op2, dst)
193 self.assertEqual(expected_results[0:201], dst.data())
197 Test stream_to_streams.
203 src_data.append((random.randint(0,255)))
204 src_data = tuple(src_data)
205 expected_results = src_data
206 src = gr.vector_source_b(tuple(src_data),False)
207 op1 = gr.packed_to_unpacked_bb(7, gr.GR_MSB_FIRST)
208 op2 = gr.unpacked_to_packed_bb(7, gr.GR_MSB_FIRST)
209 self.fg.connect(src, op1, op2)
210 dst = gr.vector_sink_b()
211 self.fg.connect(op2, dst)
214 self.assertEqual(expected_results[0:201], dst.data())
218 Test stream_to_streams.
224 src_data.append((random.randint(0,255)))
225 src_data = tuple(src_data)
226 expected_results = src_data
227 src = gr.vector_source_b(tuple(src_data),False)
228 op1 = gr.packed_to_unpacked_bb(7, gr.GR_LSB_FIRST)
229 op2 = gr.unpacked_to_packed_bb(7, gr.GR_LSB_FIRST)
230 self.fg.connect(src, op1, op2)
231 dst = gr.vector_sink_b()
232 self.fg.connect(op2, dst)
235 self.assertEqual(expected_results[0:201], dst.data())
246 for i in xrange(100):
247 src_data.append((random.randint(-2**15,2**15-1)))
248 src_data = tuple(src_data)
249 expected_results = src_data
250 src = gr.vector_source_s(tuple(src_data),False)
251 op1 = gr.packed_to_unpacked_ss(1, gr.GR_MSB_FIRST)
252 op2 = gr.unpacked_to_packed_ss(1, gr.GR_MSB_FIRST)
253 self.fg.connect(src, op1, op2)
254 dst = gr.vector_sink_s()
255 self.fg.connect(op2, dst)
258 self.assertEqual(expected_results, dst.data())
266 for i in xrange(100):
267 src_data.append((random.randint(-2**15,2**15-1)))
268 src_data = tuple(src_data)
269 expected_results = src_data
270 src = gr.vector_source_s(tuple(src_data),False)
271 op1 = gr.packed_to_unpacked_ss(1, gr.GR_LSB_FIRST)
272 op2 = gr.unpacked_to_packed_ss(1, gr.GR_LSB_FIRST)
273 self.fg.connect(src, op1, op2)
274 dst = gr.vector_sink_s()
275 self.fg.connect(op2, dst)
278 self.assertEqual(expected_results, dst.data())
286 for i in xrange(100):
287 src_data.append((random.randint(-2**15,2**15-1)))
288 src_data = tuple(src_data)
289 expected_results = src_data
290 src = gr.vector_source_s(tuple(src_data),False)
291 op1 = gr.packed_to_unpacked_ss(8, gr.GR_MSB_FIRST)
292 op2 = gr.unpacked_to_packed_ss(8, gr.GR_MSB_FIRST)
293 self.fg.connect(src, op1, op2)
294 dst = gr.vector_sink_s()
295 self.fg.connect(op2, dst)
298 self.assertEqual(expected_results, dst.data())
306 for i in xrange(100):
307 src_data.append((random.randint(-2**15,2**15-1)))
308 src_data = tuple(src_data)
309 expected_results = src_data
310 src = gr.vector_source_s(tuple(src_data),False)
311 op1 = gr.packed_to_unpacked_ss(8, gr.GR_LSB_FIRST)
312 op2 = gr.unpacked_to_packed_ss(8, gr.GR_LSB_FIRST)
313 self.fg.connect(src, op1, op2)
314 dst = gr.vector_sink_s()
315 self.fg.connect(op2, dst)
318 self.assertEqual(expected_results, dst.data())
328 for i in xrange(100):
329 src_data.append((random.randint(-2**31,2**31-1)))
330 src_data = tuple(src_data)
331 expected_results = src_data
332 src = gr.vector_source_i(tuple(src_data),False)
333 op1 = gr.packed_to_unpacked_ii(1, gr.GR_MSB_FIRST)
334 op2 = gr.unpacked_to_packed_ii(1, gr.GR_MSB_FIRST)
335 self.fg.connect(src, op1, op2)
336 dst = gr.vector_sink_i()
337 self.fg.connect(op2, dst)
340 self.assertEqual(expected_results, dst.data())
348 for i in xrange(100):
349 src_data.append((random.randint(-2**31,2**31-1)))
350 src_data = tuple(src_data)
351 expected_results = src_data
352 src = gr.vector_source_i(tuple(src_data),False)
353 op1 = gr.packed_to_unpacked_ii(1, gr.GR_LSB_FIRST)
354 op2 = gr.unpacked_to_packed_ii(1, gr.GR_LSB_FIRST)
355 self.fg.connect(src, op1, op2)
356 dst = gr.vector_sink_i()
357 self.fg.connect(op2, dst)
360 self.assertEqual(expected_results, dst.data())
368 for i in xrange(100):
369 src_data.append((random.randint(-2**31,2**31-1)))
370 src_data = tuple(src_data)
371 expected_results = src_data
372 src = gr.vector_source_i(tuple(src_data),False)
373 op1 = gr.packed_to_unpacked_ii(8, gr.GR_MSB_FIRST)
374 op2 = gr.unpacked_to_packed_ii(8, gr.GR_MSB_FIRST)
375 self.fg.connect(src, op1, op2)
376 dst = gr.vector_sink_i()
377 self.fg.connect(op2, dst)
380 self.assertEqual(expected_results, dst.data())
388 for i in xrange(100):
389 src_data.append((random.randint(-2**31,2**31-1)))
390 src_data = tuple(src_data)
391 expected_results = src_data
392 src = gr.vector_source_i(tuple(src_data),False)
393 op1 = gr.packed_to_unpacked_ii(8, gr.GR_LSB_FIRST)
394 op2 = gr.unpacked_to_packed_ii(8, gr.GR_LSB_FIRST)
395 self.fg.connect(src, op1, op2)
396 dst = gr.vector_sink_i()
397 self.fg.connect(op2, dst)
400 self.assertEqual(expected_results, dst.data())
403 if __name__ == '__main__':