| 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_main(): | 
 |     run_unittest(TestWave) | 
 |  | 
 | if __name__ == '__main__': | 
 |     test_main() |