| from test.support import run_unittest, TESTFN |
| import unittest |
| import os |
| |
| import sunau |
| |
| nchannels = 2 |
| sampwidth = 2 |
| framerate = 8000 |
| nframes = 100 |
| |
| class SunAUTest(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_lin(self): |
| self.f = sunau.open(TESTFN, 'w') |
| self.f.setnchannels(nchannels) |
| self.f.setsampwidth(sampwidth) |
| self.f.setframerate(framerate) |
| self.f.setcomptype('NONE', 'not compressed') |
| output = b'\xff\x00\x12\xcc' * (nframes * nchannels * sampwidth // 4) |
| self.f.writeframes(output) |
| self.f.close() |
| |
| self.f = sunau.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('NONE', self.f.getcomptype()) |
| self.assertEqual(self.f.readframes(nframes), output) |
| self.f.close() |
| |
| def test_ulaw(self): |
| self.f = sunau.open(TESTFN, 'w') |
| self.f.setnchannels(nchannels) |
| self.f.setsampwidth(sampwidth) |
| self.f.setframerate(framerate) |
| self.f.setcomptype('ULAW', '') |
| # u-law compression is lossy, therefore we can't expect non-zero data |
| # to come back unchanged. |
| output = b'\0' * nframes * nchannels * sampwidth |
| self.f.writeframes(output) |
| self.f.close() |
| |
| self.f = sunau.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('ULAW', self.f.getcomptype()) |
| self.assertEqual(self.f.readframes(nframes), output) |
| self.f.close() |
| |
| |
| def test_main(): |
| run_unittest(SunAUTest) |
| |
| if __name__ == "__main__": |
| unittest.main() |