blob: 1bcaa242c01864e466d3b0447176dd539ff26d54 [file] [log] [blame]
Benjamin Petersonee8712c2008-05-20 21:35:26 +00001from test.support import TESTFN, run_unittest
Guido van Rossum3b0a3292002-08-09 16:38:32 +00002import os
Guido van Rossuma00afc12000-10-09 20:05:59 +00003import wave
Benjamin Peterson5efea042010-01-13 03:49:50 +00004import struct
Christian Heimes2202f872008-02-06 14:31:34 +00005import unittest
Guido van Rossuma00afc12000-10-09 20:05:59 +00006
7nchannels = 2
8sampwidth = 2
9framerate = 8000
10nframes = 100
11
Christian Heimes2202f872008-02-06 14:31:34 +000012class TestWave(unittest.TestCase):
Guido van Rossuma00afc12000-10-09 20:05:59 +000013
Christian Heimes2202f872008-02-06 14:31:34 +000014 def setUp(self):
15 self.f = None
Guido van Rossuma00afc12000-10-09 20:05:59 +000016
Christian Heimes2202f872008-02-06 14:31:34 +000017 def tearDown(self):
18 if self.f is not None:
19 self.f.close()
20 try:
21 os.remove(TESTFN)
22 except OSError:
23 pass
24
25 def test_it(self):
26 self.f = wave.open(TESTFN, 'wb')
27 self.f.setnchannels(nchannels)
28 self.f.setsampwidth(sampwidth)
29 self.f.setframerate(framerate)
30 self.f.setnframes(nframes)
31 output = b'\0' * nframes * nchannels * sampwidth
32 self.f.writeframes(output)
33 self.f.close()
34
35 self.f = wave.open(TESTFN, 'rb')
36 self.assertEqual(nchannels, self.f.getnchannels())
37 self.assertEqual(sampwidth, self.f.getsampwidth())
38 self.assertEqual(framerate, self.f.getframerate())
39 self.assertEqual(nframes, self.f.getnframes())
40 self.assertEqual(self.f.readframes(nframes), output)
41
Benjamin Peterson5efea042010-01-13 03:49:50 +000042 def test_issue7681(self):
43 self.f = wave.open(TESTFN, 'wb')
44 self.f.setnchannels(nchannels)
45 self.f.setsampwidth(sampwidth)
46 self.f.setframerate(framerate)
47 # Don't call setnframes, make _write_header divide to figure it out
48 output = b'\0' * nframes * nchannels * sampwidth
49 self.f.writeframes(output)
50
51
Christian Heimes2202f872008-02-06 14:31:34 +000052def test_main():
53 run_unittest(TestWave)
54
55if __name__ == '__main__':
56 test_main()