| 
									
										
										
										
											2009-04-29 20:40:42 +00:00
										 |  |  | from test.support import findfile, run_unittest, TESTFN | 
					
						
							| 
									
										
										
										
											2009-04-29 15:34:32 +00:00
										 |  |  | import unittest | 
					
						
							| 
									
										
										
										
											2009-04-29 20:40:42 +00:00
										 |  |  | import os | 
					
						
							| 
									
										
										
										
											2009-04-29 15:34:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | import aifc | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AIFCTest(unittest.TestCase): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def setUp(self): | 
					
						
							| 
									
										
										
										
											2009-04-29 20:40:42 +00:00
										 |  |  |         self.f = self.fout = None | 
					
						
							| 
									
										
										
										
											2009-04-29 15:34:32 +00:00
										 |  |  |         self.sndfilepath = findfile('Sine-1000Hz-300ms.aif') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-29 20:40:42 +00:00
										 |  |  |     def tearDown(self): | 
					
						
							|  |  |  |         if self.f is not None: | 
					
						
							|  |  |  |             self.f.close() | 
					
						
							|  |  |  |         if self.fout is not None: | 
					
						
							|  |  |  |             try: | 
					
						
							|  |  |  |                 self.fout.close() | 
					
						
							|  |  |  |             except (aifc.Error, AttributeError): | 
					
						
							|  |  |  |                 pass | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             os.remove(TESTFN) | 
					
						
							|  |  |  |         except OSError: | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-29 15:34:32 +00:00
										 |  |  |     def test_skipunknown(self): | 
					
						
							|  |  |  |         #Issue 2245 | 
					
						
							|  |  |  |         #This file contains chunk types aifc doesn't recognize. | 
					
						
							| 
									
										
											  
											
												Merged revisions 70768,71657,71721,71729,71794,71976,72036-72037,72079,72085,72131-72134,72191,72197-72198,72219,72221,72225,72303,72434,72467,72476 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r70768 | andrew.kuchling | 2009-03-30 17:29:15 -0500 (Mon, 30 Mar 2009) | 1 line
  Typo fixes
........
  r71657 | vinay.sajip | 2009-04-16 14:07:37 -0500 (Thu, 16 Apr 2009) | 1 line
  Issue #5768: Change to Unicode output logic and test case for same.
........
  r71721 | benjamin.peterson | 2009-04-18 14:26:19 -0500 (Sat, 18 Apr 2009) | 1 line
  fix a few nits in unittest.py #5771
........
  r71729 | benjamin.peterson | 2009-04-18 16:03:10 -0500 (Sat, 18 Apr 2009) | 1 line
  move test to a more appropiate one
........
  r71794 | vinay.sajip | 2009-04-22 07:10:47 -0500 (Wed, 22 Apr 2009) | 2 lines
  Issue #5170: Fixed regression caused when fixing #5768.
........
  r71976 | mark.dickinson | 2009-04-26 14:54:55 -0500 (Sun, 26 Apr 2009) | 2 lines
  Fix typo in function name
........
  r72036 | georg.brandl | 2009-04-27 12:04:23 -0500 (Mon, 27 Apr 2009) | 1 line
  #5848: small unittest doc patch.
........
  r72037 | georg.brandl | 2009-04-27 12:09:53 -0500 (Mon, 27 Apr 2009) | 1 line
  #5840: dont claim we dont support TLS.
........
  r72079 | r.david.murray | 2009-04-28 14:02:55 -0500 (Tue, 28 Apr 2009) | 2 lines
  Remove spurious 'u'.
........
  r72085 | georg.brandl | 2009-04-28 16:48:35 -0500 (Tue, 28 Apr 2009) | 1 line
  Make the doctests in the docs pass, except for those in the turtle module.
........
  r72131 | benjamin.peterson | 2009-04-29 17:43:35 -0500 (Wed, 29 Apr 2009) | 1 line
  fix test_shutil on ZFS #5676
........
  r72132 | georg.brandl | 2009-04-29 17:44:07 -0500 (Wed, 29 Apr 2009) | 1 line
  #5878: fix repr of re object.
........
  r72133 | benjamin.peterson | 2009-04-29 17:44:15 -0500 (Wed, 29 Apr 2009) | 1 line
  make sure mode is removable while cleaning up test droppings
........
  r72134 | benjamin.peterson | 2009-04-29 19:06:33 -0500 (Wed, 29 Apr 2009) | 1 line
  make sure to close file
........
  r72191 | michael.foord | 2009-05-02 06:43:06 -0500 (Sat, 02 May 2009) | 9 lines
  Adds an exit parameter to unittest.main(). If False main no longer
  calls sys.exit.
  Closes issue 3379.
  Michael Foord
........
  r72197 | benjamin.peterson | 2009-05-02 11:24:37 -0500 (Sat, 02 May 2009) | 1 line
  don't let sys.argv be used in the tests
........
  r72198 | andrew.kuchling | 2009-05-02 12:12:15 -0500 (Sat, 02 May 2009) | 1 line
  Add items
........
  r72219 | michael.foord | 2009-05-02 15:15:05 -0500 (Sat, 02 May 2009) | 8 lines
  Add addCleanup and doCleanups to unittest.TestCase.
  Closes issue 5679.
  Michael Foord
........
  r72221 | benjamin.peterson | 2009-05-02 15:26:53 -0500 (Sat, 02 May 2009) | 1 line
  add myself
........
  r72225 | michael.foord | 2009-05-02 17:43:34 -0500 (Sat, 02 May 2009) | 1 line
........
  r72303 | benjamin.peterson | 2009-05-04 19:55:24 -0500 (Mon, 04 May 2009) | 1 line
  using sys._getframe(x), where x > 0 doesnt' work on IronPython
........
  r72434 | r.david.murray | 2009-05-07 13:09:58 -0500 (Thu, 07 May 2009) | 2 lines
  Pre-opened test file needs to be opened in binary mode.
........
  r72467 | georg.brandl | 2009-05-08 07:17:34 -0500 (Fri, 08 May 2009) | 1 line
  Fix name.
........
  r72476 | thomas.heller | 2009-05-08 15:09:40 -0500 (Fri, 08 May 2009) | 4 lines
  Add a file that contains diffs between offical libffi files and the
  files in this repository.  Should make it easier to merge new libffi
  versions.
........
											
										 
											2009-05-08 20:42:26 +00:00
										 |  |  |         self.f = aifc.open(self.sndfilepath) | 
					
						
							| 
									
										
										
										
											2009-04-29 15:34:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_params(self): | 
					
						
							| 
									
										
										
										
											2009-04-29 20:40:42 +00:00
										 |  |  |         f = self.f = aifc.open(self.sndfilepath) | 
					
						
							| 
									
										
										
										
											2009-04-29 15:34:32 +00:00
										 |  |  |         self.assertEqual(f.getnchannels(), 2) | 
					
						
							|  |  |  |         self.assertEqual(f.getsampwidth(), 2) | 
					
						
							|  |  |  |         self.assertEqual(f.getframerate(), 48000) | 
					
						
							|  |  |  |         self.assertEqual(f.getnframes(), 14400) | 
					
						
							|  |  |  |         self.assertEqual(f.getcomptype(), b'NONE') | 
					
						
							|  |  |  |         self.assertEqual(f.getcompname(), b'not compressed') | 
					
						
							|  |  |  |         self.assertEqual( | 
					
						
							|  |  |  |             f.getparams(), | 
					
						
							|  |  |  |             (2, 2, 48000, 14400, b'NONE', b'not compressed'), | 
					
						
							|  |  |  |             ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_read(self): | 
					
						
							| 
									
										
										
										
											2009-04-29 20:40:42 +00:00
										 |  |  |         f = self.f = aifc.open(self.sndfilepath) | 
					
						
							| 
									
										
										
										
											2009-04-29 15:34:32 +00:00
										 |  |  |         self.assertEqual(f.tell(), 0) | 
					
						
							|  |  |  |         self.assertEqual(f.readframes(2), b'\x00\x00\x00\x00\x0b\xd4\x0b\xd4') | 
					
						
							|  |  |  |         f.rewind() | 
					
						
							|  |  |  |         pos0 = f.tell() | 
					
						
							|  |  |  |         self.assertEqual(pos0, 0) | 
					
						
							|  |  |  |         self.assertEqual(f.readframes(2), b'\x00\x00\x00\x00\x0b\xd4\x0b\xd4') | 
					
						
							|  |  |  |         pos2 = f.tell() | 
					
						
							|  |  |  |         self.assertEqual(pos2, 2) | 
					
						
							|  |  |  |         self.assertEqual(f.readframes(2), b'\x17t\x17t"\xad"\xad') | 
					
						
							|  |  |  |         f.setpos(pos2) | 
					
						
							|  |  |  |         self.assertEqual(f.readframes(2), b'\x17t\x17t"\xad"\xad') | 
					
						
							|  |  |  |         f.setpos(pos0) | 
					
						
							|  |  |  |         self.assertEqual(f.readframes(2), b'\x00\x00\x00\x00\x0b\xd4\x0b\xd4') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-29 20:40:42 +00:00
										 |  |  |     def test_write(self): | 
					
						
							|  |  |  |         f = self.f = aifc.open(self.sndfilepath) | 
					
						
							|  |  |  |         fout = self.fout = aifc.open(TESTFN, 'wb') | 
					
						
							|  |  |  |         fout.aifc() | 
					
						
							|  |  |  |         fout.setparams(f.getparams()) | 
					
						
							|  |  |  |         for frame in range(f.getnframes()): | 
					
						
							|  |  |  |             fout.writeframes(f.readframes(1)) | 
					
						
							|  |  |  |         fout.close() | 
					
						
							|  |  |  |         fout = self.fout = aifc.open(TESTFN, 'rb') | 
					
						
							|  |  |  |         f.rewind() | 
					
						
							|  |  |  |         self.assertEqual(f.getparams(), fout.getparams()) | 
					
						
							|  |  |  |         self.assertEqual(f.readframes(5), fout.readframes(5)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_compress(self): | 
					
						
							|  |  |  |         f = self.f = aifc.open(self.sndfilepath) | 
					
						
							|  |  |  |         fout = self.fout = aifc.open(TESTFN, 'wb') | 
					
						
							|  |  |  |         fout.aifc() | 
					
						
							|  |  |  |         fout.setnchannels(f.getnchannels()) | 
					
						
							|  |  |  |         fout.setsampwidth(f.getsampwidth()) | 
					
						
							|  |  |  |         fout.setframerate(f.getframerate()) | 
					
						
							|  |  |  |         fout.setcomptype(b'ULAW', b'foo') | 
					
						
							|  |  |  |         for frame in range(f.getnframes()): | 
					
						
							|  |  |  |             fout.writeframes(f.readframes(1)) | 
					
						
							|  |  |  |         fout.close() | 
					
						
							|  |  |  |         self.assertLess( | 
					
						
							|  |  |  |             os.stat(TESTFN).st_size, | 
					
						
							|  |  |  |             os.stat(self.sndfilepath).st_size*0.75, | 
					
						
							|  |  |  |             ) | 
					
						
							|  |  |  |         fout = self.fout = aifc.open(TESTFN, 'rb') | 
					
						
							|  |  |  |         f.rewind() | 
					
						
							|  |  |  |         self.assertEqual(f.getparams()[0:3], fout.getparams()[0:3]) | 
					
						
							|  |  |  |         self.assertEqual(fout.getcomptype(), b'ULAW') | 
					
						
							|  |  |  |         self.assertEqual(fout.getcompname(), b'foo') | 
					
						
							|  |  |  |         # XXX: this test fails, not sure if it should succeed or not | 
					
						
							|  |  |  |         # self.assertEqual(f.readframes(5), fout.readframes(5)) | 
					
						
							| 
									
										
										
										
											2009-04-29 15:34:32 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-07 18:24:38 +00:00
										 |  |  |     def test_close(self): | 
					
						
							|  |  |  |         class Wrapfile(object): | 
					
						
							|  |  |  |             def __init__(self, file): | 
					
						
							|  |  |  |                 self.file = open(file, 'rb') | 
					
						
							|  |  |  |                 self.closed = False | 
					
						
							|  |  |  |             def close(self): | 
					
						
							|  |  |  |                 self.file.close() | 
					
						
							|  |  |  |                 self.closed = True | 
					
						
							|  |  |  |             def __getattr__(self, attr): return getattr(self.file, attr) | 
					
						
							|  |  |  |         testfile = Wrapfile(self.sndfilepath) | 
					
						
							|  |  |  |         f = self.f = aifc.open(testfile) | 
					
						
							|  |  |  |         self.assertEqual(testfile.closed, False) | 
					
						
							|  |  |  |         f.close() | 
					
						
							|  |  |  |         self.assertEqual(testfile.closed, True) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-29 15:34:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def test_main(): | 
					
						
							|  |  |  |     run_unittest(AIFCTest) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     unittest.main() |