summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_wave.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_wave.py')
-rw-r--r--Lib/test/test_wave.py29
1 files changed, 25 insertions, 4 deletions
diff --git a/Lib/test/test_wave.py b/Lib/test/test_wave.py
index 02f5fae..e0aace4 100644
--- a/Lib/test/test_wave.py
+++ b/Lib/test/test_wave.py
@@ -1,6 +1,7 @@
-from test.test_support import TESTFN, run_unittest
+from test.support import TESTFN, run_unittest
import os
import wave
+import struct
import unittest
nchannels = 2
@@ -21,13 +22,16 @@ class TestWave(unittest.TestCase):
except OSError:
pass
- def test_it(self):
+ def test_it(self, test_rounding=False):
self.f = wave.open(TESTFN, 'wb')
self.f.setnchannels(nchannels)
self.f.setsampwidth(sampwidth)
- self.f.setframerate(framerate)
+ if test_rounding:
+ self.f.setframerate(framerate - 0.1)
+ else:
+ self.f.setframerate(framerate)
self.f.setnframes(nframes)
- output = '\0' * nframes * nchannels * sampwidth
+ output = b'\0' * nframes * nchannels * sampwidth
self.f.writeframes(output)
self.f.close()
@@ -38,6 +42,23 @@ class TestWave(unittest.TestCase):
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_main():
run_unittest(TestWave)