3ba5dfbce68a28a69902db633207736105746c59
[debian/gnuradio] / gnuradio-core / src / python / gnuradio / gr / qa_wavefile.py
1 #!/usr/bin/env python
2 #
3 # Copyright 2008 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 import os
26 from os.path import getsize
27
28 g_in_file = os.path.join (os.getenv ("srcdir"), "test_16bit_1chunk.wav")
29
30 class qa_wavefile(gr_unittest.TestCase):
31
32     def setUp (self):
33         self.tb = gr.top_block ()
34
35     def tearDown (self):
36         self.tb = None
37
38     def test_001_checkwavread (self):
39         wf = gr.wavfile_source(g_in_file)
40         self.assertEqual(wf.sample_rate(), 8000)
41
42     def test_002_checkwavcopy (self):
43         infile  = g_in_file
44         outfile = "test_out.wav"
45
46         wf_in  = gr.wavfile_source(infile)
47         wf_out = gr.wavfile_sink(outfile,
48                                  wf_in.channels(),
49                                  wf_in.sample_rate(),
50                                  wf_in.bits_per_sample())
51         self.tb.connect(wf_in, wf_out)
52         self.tb.run()
53         wf_out.close()
54
55         self.assertEqual(getsize(infile), getsize(outfile))
56
57         in_f  = file(infile,  'rb')
58         out_f = file(outfile, 'rb')
59
60         in_data  = in_f.read()
61         out_data = out_f.read()
62         out_f.close()
63         os.remove(outfile)
64         
65         self.assertEqual(in_data, out_data)
66
67
68 if __name__ == '__main__':
69     gr_unittest.main ()