| from test.support import TESTFN, run_unittest |
| import os |
| import wave |
| import struct |
| import unittest |
| |
| nchannels = 2 |
| sampwidth = 2 |
| framerate = 8000 |
| nframes = 100 |
| |
| class TestWave(unittest.TestCase): |
| |
| def setUp(self): |
| self.f = None |
| |
| def tearDown(self): |
| if self.f is not None: |
| self.f.close() |
| try: |
| os.remove(TESTFN) |
| except OSError: |
| pass |
| |
| def test_it(self, test_rounding=False): |
| self.f = wave.open(TESTFN, 'wb') |
| self.f.setnchannels(nchannels) |
| self.f.setsampwidth(sampwidth) |
| if test_rounding: |
| self.f.setframerate(framerate - 0.1) |
| else: |
| self.f.setframerate(framerate) |
| self.f.setnframes(nframes) |
| output = b'\0' * nframes * nchannels * sampwidth |
| self.f.writeframes(output) |
| self.f.close() |
| |
| self.f = wave.open(TESTFN, 'rb') |
| self.assertEqual(nchannels, self.f.getnchannels()) |
| self.assertEqual(sampwidth, self.f.getsampwidth()) |
| self.assertEqual(framerate, self.f.getframerate()) |
| self.assertEqual(nframes, self.f.getnframes()) |
| self.assertEqual(self.f.readframes(nframes), output) |
| |
| def test_fractional_framerate(self): |
| """ |
| Addresses [ 1512791 ] module wave does no rounding |
| Floating point framerates should be rounded, rather than truncated. |
| """ |
| self.test_it(test_rounding=True) |
| |
| def test_issue7681(self): |
| self.f = wave.open(TESTFN, 'wb') |
| self.f.setnchannels(nchannels) |
| self.f.setsampwidth(sampwidth) |
| self.f.setframerate(framerate) |
| # Don't call setnframes, make _write_header divide to figure it out |
| output = b'\0' * nframes * nchannels * sampwidth |
| self.f.writeframes(output) |
| |
| def test_getparams(self): |
| self.f = wave.open(TESTFN, 'wb') |
| self.f.setnchannels(nchannels) |
| self.f.setsampwidth(sampwidth) |
| self.f.setframerate(framerate) |
| self.f.close() |
| |
| self.f = wave.open(TESTFN, 'rb') |
| params = self.f.getparams() |
| self.assertEqual(params.nchannels, self.f.getnchannels()) |
| self.assertEqual(params.nframes, self.f.getnframes()) |
| self.assertEqual(params.sampwidth, self.f.getsampwidth()) |
| self.assertEqual(params.framerate, self.f.getframerate()) |
| self.assertEqual(params.comptype, self.f.getcomptype()) |
| self.assertEqual(params.compname, self.f.getcompname()) |
| |
| |
| def test_main(): |
| run_unittest(TestWave) |
| |
| if __name__ == '__main__': |
| test_main() |