Kaydet (Commit) 7f3652e3 authored tarafından Victor Stinner's avatar Victor Stinner

Issue #8897: Fix sunau module, use bytes to write the header. Patch written by

Thomas Jollans.
üst 7eeb5b5e
...@@ -299,7 +299,7 @@ class Au_write: ...@@ -299,7 +299,7 @@ class Au_write:
self._nframeswritten = 0 self._nframeswritten = 0
self._datawritten = 0 self._datawritten = 0
self._datalength = 0 self._datalength = 0
self._info = '' self._info = b''
self._comptype = 'ULAW' # default is U-law self._comptype = 'ULAW' # default is U-law
def setnchannels(self, nchannels): def setnchannels(self, nchannels):
......
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()
...@@ -389,6 +389,7 @@ Orjan Johansen ...@@ -389,6 +389,7 @@ Orjan Johansen
Fredrik Johansson Fredrik Johansson
Gregory K. Johnson Gregory K. Johnson
Simon Johnston Simon Johnston
Thomas Jollans
Evan Jones Evan Jones
Jeremy Jones Jeremy Jones
Richard Jones Richard Jones
......
...@@ -398,6 +398,9 @@ C-API ...@@ -398,6 +398,9 @@ C-API
Library Library
------- -------
- Issue #8897: Fix sunau module, use bytes to write the header. Patch written
by Thomas Jollans.
- Issue #8899: time.struct_time now has class and atribute docstrings. - Issue #8899: time.struct_time now has class and atribute docstrings.
- Issue #6470: Drop UNC prefix in FixTk. - Issue #6470: Drop UNC prefix in FixTk.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment