Imported Upstream version 3.2.2
[debian/gnuradio] / gnuradio-core / src / python / gnuradio / gr / qa_add_v_and_friends.py
1 #!/usr/bin/env python
2 #
3 # Copyright 2004,2007 Free Software Foundation, Inc.
4
5 # This file is part of GNU Radio
6
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)
10 # any later version.
11
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.
16
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.
21
22
23 from gnuradio import gr, gr_unittest
24
25 class test_add_v_and_friends(gr_unittest.TestCase):
26
27     def setUp(self):
28         self.tb = gr.top_block()
29
30     def tearDown(self):
31         self.tb = None
32
33     def help_ss(self, size, src_data, exp_data, op):
34         for s in zip(range (len (src_data)), src_data):
35             src = gr.vector_source_s(s[1])
36             srcv = gr.stream_to_vector(gr.sizeof_short, size)
37             self.tb.connect(src, srcv)
38             self.tb.connect(srcv, (op, s[0]))
39         rhs = gr.vector_to_stream(gr.sizeof_short, size)
40         dst = gr.vector_sink_s()
41         self.tb.connect(op, rhs, dst)
42         self.tb.run()
43         result_data = dst.data()
44         self.assertEqual(exp_data, result_data)
45
46     def help_ii(self, size, src_data, exp_data, op):
47         for s in zip(range (len (src_data)), src_data):
48             src = gr.vector_source_i(s[1])
49             srcv = gr.stream_to_vector(gr.sizeof_int, size)
50             self.tb.connect(src, srcv)
51             self.tb.connect(srcv, (op, s[0]))
52         rhs = gr.vector_to_stream(gr.sizeof_int, size)
53         dst = gr.vector_sink_i()
54         self.tb.connect(op, rhs, dst)
55         self.tb.run()
56         result_data = dst.data()
57         self.assertEqual(exp_data, result_data)
58
59     def help_ff(self, size, src_data, exp_data, op):
60         for s in zip(range (len (src_data)), src_data):
61             src = gr.vector_source_f(s[1])
62             srcv = gr.stream_to_vector(gr.sizeof_float, size)
63             self.tb.connect(src, srcv)
64             self.tb.connect(srcv, (op, s[0]))
65         rhs = gr.vector_to_stream(gr.sizeof_float, size)
66         dst = gr.vector_sink_f()
67         self.tb.connect(op, rhs, dst)
68         self.tb.run()
69         result_data = dst.data()
70         self.assertEqual(exp_data, result_data)
71
72     def help_cc(self, size, src_data, exp_data, op):
73         for s in zip(range (len (src_data)), src_data):
74             src = gr.vector_source_c(s[1])
75             srcv = gr.stream_to_vector(gr.sizeof_gr_complex, size)
76             self.tb.connect(src, srcv)
77             self.tb.connect(srcv, (op, s[0]))
78         rhs = gr.vector_to_stream(gr.sizeof_gr_complex, size)
79         dst = gr.vector_sink_c()
80         self.tb.connect(op, rhs, dst)
81         self.tb.run()
82         result_data = dst.data()
83         self.assertEqual(exp_data, result_data)
84
85     def help_const_ss(self, src_data, exp_data, op):
86         src = gr.vector_source_s(src_data)
87         srcv = gr.stream_to_vector(gr.sizeof_short, len(src_data))
88         rhs = gr.vector_to_stream(gr.sizeof_short, len(src_data))
89         dst = gr.vector_sink_s()
90         self.tb.connect(src, srcv, op, rhs, dst)
91         self.tb.run()
92         result_data = dst.data()
93         self.assertEqual(exp_data, result_data)
94         
95     def help_const_ii(self, src_data, exp_data, op):
96         src = gr.vector_source_i(src_data)
97         srcv = gr.stream_to_vector(gr.sizeof_int, len(src_data))
98         rhs = gr.vector_to_stream(gr.sizeof_int, len(src_data))
99         dst = gr.vector_sink_i()
100         self.tb.connect(src, srcv, op, rhs, dst)
101         self.tb.run()
102         result_data = dst.data()
103         self.assertEqual(exp_data, result_data)
104         
105     def help_const_ff(self, src_data, exp_data, op):
106         src = gr.vector_source_f(src_data)
107         srcv = gr.stream_to_vector(gr.sizeof_float, len(src_data))
108         rhs = gr.vector_to_stream(gr.sizeof_float, len(src_data))
109         dst = gr.vector_sink_f()
110         self.tb.connect(src, srcv, op, rhs, dst)
111         self.tb.run()
112         result_data = dst.data()
113         self.assertEqual(exp_data, result_data)
114         
115     def help_const_cc(self, src_data, exp_data, op):
116         src = gr.vector_source_c(src_data)
117         srcv = gr.stream_to_vector(gr.sizeof_gr_complex, len(src_data))
118         rhs = gr.vector_to_stream(gr.sizeof_gr_complex, len(src_data))
119         dst = gr.vector_sink_c()
120         self.tb.connect(src, srcv, op, rhs, dst)
121         self.tb.run()
122         result_data = dst.data()
123         self.assertEqual(exp_data, result_data)
124         
125
126     def test_add_vss_one(self):
127         src1_data = (1,)
128         src2_data = (2,)
129         src3_data = (3,)
130         expected_result = (6,)
131         op = gr.add_vss(1)
132         self.help_ss(1, (src1_data, src2_data, src3_data), expected_result, op)
133         
134     def test_add_vss_five(self):
135         src1_data = (1, 2, 3, 4, 5)
136         src2_data = (6, 7, 8, 9, 10)
137         src3_data = (11, 12, 13, 14, 15)
138         expected_result = (18, 21, 24, 27, 30)
139         op = gr.add_vss(5)
140         self.help_ss(5, (src1_data, src2_data, src3_data), expected_result, op)
141
142     def test_add_vii_one(self):
143         src1_data = (1,)
144         src2_data = (2,)
145         src3_data = (3,)
146         expected_result = (6,)
147         op = gr.add_vii(1)
148         self.help_ii(1, (src1_data, src2_data, src3_data), expected_result, op)
149         
150     def test_add_vii_five(self):
151         src1_data = (1, 2, 3, 4, 5)
152         src2_data = (6, 7, 8, 9, 10)
153         src3_data = (11, 12, 13, 14, 15)
154         expected_result = (18, 21, 24, 27, 30)
155         op = gr.add_vii(5)
156         self.help_ii(5, (src1_data, src2_data, src3_data), expected_result, op)
157
158     def test_add_vff_one(self):
159         src1_data = (1.0,)
160         src2_data = (2.0,)
161         src3_data = (3.0,)
162         expected_result = (6.0,)
163         op = gr.add_vff(1)
164         self.help_ff(1, (src1_data, src2_data, src3_data), expected_result, op)
165         
166     def test_add_vff_five(self):
167         src1_data = (1.0, 2.0, 3.0, 4.0, 5.0)
168         src2_data = (6.0, 7.0, 8.0, 9.0, 10.0)
169         src3_data = (11.0, 12.0, 13.0, 14.0, 15.0)
170         expected_result = (18.0, 21.0, 24.0, 27.0, 30.0)
171         op = gr.add_vff(5)
172         self.help_ff(5, (src1_data, src2_data, src3_data), expected_result, op)
173
174     def test_add_vcc_one(self):
175         src1_data = (1.0+2.0j,)
176         src2_data = (3.0+4.0j,)
177         src3_data = (5.0+6.0j,)
178         expected_result = (9.0+12j,)
179         op = gr.add_vcc(1)
180         self.help_cc(1, (src1_data, src2_data, src3_data), expected_result, op)
181         
182     def test_add_vcc_five(self):
183         src1_data = (1.0+2.0j, 3.0+4.0j, 5.0+6.0j, 7.0+8.0j, 9.0+10.0j)
184         src2_data = (11.0+12.0j, 13.0+14.0j, 15.0+16.0j, 17.0+18.0j, 19.0+20.0j)
185         src3_data = (21.0+22.0j, 23.0+24.0j, 25.0+26.0j, 27.0+28.0j, 29.0+30.0j)
186         expected_result = (33.0+36.0j, 39.0+42.0j, 45.0+48.0j, 51.0+54.0j, 57.0+60.0j)
187         op = gr.add_vcc(5)
188         self.help_cc(5, (src1_data, src2_data, src3_data), expected_result, op)
189
190     def test_add_const_vss_one(self):
191         src_data = (1,)
192         op = gr.add_const_vss((2,))
193         exp_data = (3,)
194         self.help_const_ss(src_data, exp_data, op)
195
196     def test_add_const_vss_five(self):
197         src_data = (1, 2, 3, 4, 5)
198         op = gr.add_const_vss((6, 7, 8, 9, 10))
199         exp_data = (7, 9, 11, 13, 15)
200         self.help_const_ss(src_data, exp_data, op)
201
202     def test_add_const_vii_one(self):
203         src_data = (1,)
204         op = gr.add_const_vii((2,))
205         exp_data = (3,)
206         self.help_const_ii(src_data, exp_data, op)
207
208     def test_add_const_vii_five(self):
209         src_data = (1, 2, 3, 4, 5)
210         op = gr.add_const_vii((6, 7, 8, 9, 10))
211         exp_data = (7, 9, 11, 13, 15)
212         self.help_const_ii(src_data, exp_data, op)
213
214     def test_add_const_vff_one(self):
215         src_data = (1.0,)
216         op = gr.add_const_vff((2.0,))
217         exp_data = (3.0,)
218         self.help_const_ff(src_data, exp_data, op)
219
220     def test_add_const_vff_five(self):
221         src_data = (1.0, 2.0, 3.0, 4.0, 5.0)
222         op = gr.add_const_vff((6.0, 7.0, 8.0, 9.0, 10.0))
223         exp_data = (7.0, 9.0, 11.0, 13.0, 15.0)
224         self.help_const_ff(src_data, exp_data, op)
225
226     def test_add_const_vcc_one(self):
227         src_data = (1.0+2.0j,)
228         op = gr.add_const_vcc((2.0+3.0j,))
229         exp_data = (3.0+5.0j,)
230         self.help_const_cc(src_data, exp_data, op)
231
232     def test_add_const_vcc_five(self):
233         src_data = (1.0+2.0j, 3.0+4.0j, 5.0+6.0j, 7.0+8.0j, 9.0+10.0j)
234         op = gr.add_const_vcc((11.0+12.0j, 13.0+14.0j, 15.0+16.0j, 17.0+18.0j, 19.0+20.0j))
235         exp_data = (12.0+14.0j, 16.0+18.0j, 20.0+22.0j, 24.0+26.0j, 28.0+30.0j)
236         self.help_const_cc(src_data, exp_data, op)
237
238
239     def test_multiply_vss_one(self):
240         src1_data = (1,)
241         src2_data = (2,)
242         src3_data = (3,)
243         expected_result = (6,)
244         op = gr.multiply_vss(1)
245         self.help_ss(1, (src1_data, src2_data, src3_data), expected_result, op)
246         
247     def test_multiply_vss_five(self):
248         src1_data = (1, 2, 3, 4, 5)
249         src2_data = (6, 7, 8, 9, 10)
250         src3_data = (11, 12, 13, 14, 15)
251         expected_result = (66, 168, 312, 504, 750)
252         op = gr.multiply_vss(5)
253         self.help_ss(5, (src1_data, src2_data, src3_data), expected_result, op)
254
255     def test_multiply_vii_one(self):
256         src1_data = (1,)
257         src2_data = (2,)
258         src3_data = (3,)
259         expected_result = (6,)
260         op = gr.multiply_vii(1)
261         self.help_ii(1, (src1_data, src2_data, src3_data), expected_result, op)
262         
263     def test_multiply_vii_five(self):
264         src1_data = (1, 2, 3, 4, 5)
265         src2_data = (6, 7, 8, 9, 10)
266         src3_data = (11, 12, 13, 14, 15)
267         expected_result = (66, 168, 312, 504, 750)
268         op = gr.multiply_vii(5)
269         self.help_ii(5, (src1_data, src2_data, src3_data), expected_result, op)
270
271     def test_multiply_vff_one(self):
272         src1_data = (1.0,)
273         src2_data = (2.0,)
274         src3_data = (3.0,)
275         expected_result = (6.0,)
276         op = gr.multiply_vff(1)
277         self.help_ff(1, (src1_data, src2_data, src3_data), expected_result, op)
278         
279     def test_multiply_vff_five(self):
280         src1_data = (1.0, 2.0, 3.0, 4.0, 5.0)
281         src2_data = (6.0, 7.0, 8.0, 9.0, 10.0)
282         src3_data = (11.0, 12.0, 13.0, 14.0, 15.0)
283         expected_result = (66.0, 168.0, 312.0, 504.0, 750.0)
284         op = gr.multiply_vff(5)
285         self.help_ff(5, (src1_data, src2_data, src3_data), expected_result, op)
286
287     def test_multiply_vcc_one(self):
288         src1_data = (1.0+2.0j,)
289         src2_data = (3.0+4.0j,)
290         src3_data = (5.0+6.0j,)
291         expected_result = (-85+20j,)
292         op = gr.multiply_vcc(1)
293         self.help_cc(1, (src1_data, src2_data, src3_data), expected_result, op)
294         
295     def test_multiply_vcc_five(self):
296         src1_data = (1.0+2.0j, 3.0+4.0j, 5.0+6.0j, 7.0+8.0j, 9.0+10.0j)
297         src2_data = (11.0+12.0j, 13.0+14.0j, 15.0+16.0j, 17.0+18.0j, 19.0+20.0j)
298         src3_data = (21.0+22.0j, 23.0+24.0j, 25.0+26.0j, 27.0+28.0j, 29.0+30.0j)
299         expected_result = (-1021.0+428.0j, -2647.0+1754.0j, -4945.0+3704.0j, -8011.0+6374.0j, -11941.0+9860.0j)
300         op = gr.multiply_vcc(5)
301         self.help_cc(5, (src1_data, src2_data, src3_data), expected_result, op)
302
303     def test_multiply_const_vss_one(self):
304         src_data = (2,)
305         op = gr.multiply_const_vss((3,))
306         exp_data = (6,)
307         self.help_const_ss(src_data, exp_data, op)
308
309     def test_multiply_const_vss_five(self):
310         src_data = (1, 2, 3, 4, 5)
311         op = gr.multiply_const_vss((6, 7, 8, 9, 10))
312         exp_data = (6, 14, 24, 36, 50)
313         self.help_const_ss(src_data, exp_data, op)
314
315     def test_multiply_const_vii_one(self):
316         src_data = (2,)
317         op = gr.multiply_const_vii((3,))
318         exp_data = (6,)
319         self.help_const_ii(src_data, exp_data, op)
320
321     def test_multiply_const_vii_five(self):
322         src_data = (1, 2, 3, 4, 5)
323         op = gr.multiply_const_vii((6, 7, 8, 9, 10))
324         exp_data = (6, 14, 24, 36, 50)
325         self.help_const_ii(src_data, exp_data, op)
326
327     def test_multiply_const_vff_one(self):
328         src_data = (2.0,)
329         op = gr.multiply_const_vff((3.0,))
330         exp_data = (6.0,)
331         self.help_const_ff(src_data, exp_data, op)
332
333     def test_multiply_const_vff_five(self):
334         src_data = (1.0, 2.0, 3.0, 4.0, 5.0)
335         op = gr.multiply_const_vff((6.0, 7.0, 8.0, 9.0, 10.0))
336         exp_data = (6.0, 14.0, 24.0, 36.0, 50.0)
337         self.help_const_ff(src_data, exp_data, op)
338
339     def test_multiply_const_vcc_one(self):
340         src_data = (1.0+2.0j,)
341         op = gr.multiply_const_vcc((2.0+3.0j,))
342         exp_data = (-4.0+7.0j,)
343         self.help_const_cc(src_data, exp_data, op)
344
345     def test_multiply_const_vcc_five(self):
346         src_data = (1.0+2.0j, 3.0+4.0j, 5.0+6.0j, 7.0+8.0j, 9.0+10.0j)
347         op = gr.multiply_const_vcc((11.0+12.0j, 13.0+14.0j, 15.0+16.0j, 17.0+18.0j, 19.0+20.0j))
348         exp_data = (-13.0+34.0j, -17.0+94.0j, -21.0+170.0j, -25.0+262.0j, -29.0+370.0j)
349         self.help_const_cc(src_data, exp_data, op)
350
351
352 if __name__ == '__main__':
353     gr_unittest.main ()