from test.test_support import TESTFN, run_unittest import os import wave import unittest WAVE_TYPE_PARMS=dict( NONE=dict(nchannels = 2, sampwidth = 2, framerate = 8000, nframes = 100, comptype = 'NONE'), ULAW=dict(nchannels = 1, sampwidth = 1, framerate = 8000, nframes = 100, comptype = 'ULAW'), ALAW=dict(nchannels = 2, sampwidth = 1, framerate = 8000, nframes = 100, comptype = 'ALAW') ) 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_pcm(self): self._test_type('NONE') def test_ulaw(self): self._test_type('ULAW') def test_alaw(self): self._test_type('ALAW') def _test_type(self, ctype): nchannels = WAVE_TYPE_PARMS[ctype]['nchannels'] sampwidth = WAVE_TYPE_PARMS[ctype]['sampwidth'] framerate = WAVE_TYPE_PARMS[ctype]['framerate'] nframes = WAVE_TYPE_PARMS[ctype]['nframes'] comptype = WAVE_TYPE_PARMS[ctype]['comptype'] self.f = wave.open(TESTFN, 'wb') self.f.setnchannels(nchannels) self.f.setsampwidth(sampwidth) self.f.setframerate(framerate) self.f.setnframes(nframes) self.f.setcomptype(comptype, '') output = '\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(comptype, self.f.getcomptype()) self.assertEqual(nframes, self.f.getnframes()) self.assertEqual(self.f.readframes(nframes), output) def test_main(): run_unittest(TestWave) if __name__ == '__main__': test_main()