annotate Lib/test/test_linuxaudiodev.py @ 25838:8540887bcec6 2.2

Backport of 2.183: Fix memory leak in add_subclass() found by NealN with valgrind.
author Guido van Rossum <guido@python.org>
date Fri, 18 Oct 2002 13:42:21 +0000
parents f51d1a2d4a4a
children aa0d2d51fbde
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13857
a296ff55221f Raise TestSkipped, not ImportError.
Moshe Zadka <moshez@math.huji.ac.il>
parents: 13855
diff changeset
1 from test_support import verbose, findfile, TestFailed, TestSkipped
15062
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
2
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
3 import errno
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
4 import fcntl
12908
1e784b879039 Added test for linnuxaudiodev module; directly adapted from sunaudiodev
Fred Drake <fdrake@acm.org>
parents:
diff changeset
5 import linuxaudiodev
1e784b879039 Added test for linnuxaudiodev module; directly adapted from sunaudiodev
Fred Drake <fdrake@acm.org>
parents:
diff changeset
6 import os
15093
1b34c475da87 It seems our sound cards can't play mulaw data. Use native-format
Guido van Rossum <guido@python.org>
parents: 15062
diff changeset
7 import sys
15062
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
8 import select
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
9 import sunaudio
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
10 import time
15093
1b34c475da87 It seems our sound cards can't play mulaw data. Use native-format
Guido van Rossum <guido@python.org>
parents: 15062
diff changeset
11 import audioop
15062
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
12
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
13 SND_FORMAT_MULAW_8 = 1
12908
1e784b879039 Added test for linnuxaudiodev module; directly adapted from sunaudiodev
Fred Drake <fdrake@acm.org>
parents:
diff changeset
14
1e784b879039 Added test for linnuxaudiodev module; directly adapted from sunaudiodev
Fred Drake <fdrake@acm.org>
parents:
diff changeset
15 def play_sound_file(path):
1e784b879039 Added test for linnuxaudiodev module; directly adapted from sunaudiodev
Fred Drake <fdrake@acm.org>
parents:
diff changeset
16 fp = open(path, 'r')
15062
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
17 size, enc, rate, nchannels, extra = sunaudio.gethdr(fp)
12908
1e784b879039 Added test for linnuxaudiodev module; directly adapted from sunaudiodev
Fred Drake <fdrake@acm.org>
parents:
diff changeset
18 data = fp.read()
1e784b879039 Added test for linnuxaudiodev module; directly adapted from sunaudiodev
Fred Drake <fdrake@acm.org>
parents:
diff changeset
19 fp.close()
15062
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
20
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
21 if enc != SND_FORMAT_MULAW_8:
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
22 print "Expect .au file with 8-bit mu-law samples"
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
23 return
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
24
12908
1e784b879039 Added test for linnuxaudiodev module; directly adapted from sunaudiodev
Fred Drake <fdrake@acm.org>
parents:
diff changeset
25 try:
1e784b879039 Added test for linnuxaudiodev module; directly adapted from sunaudiodev
Fred Drake <fdrake@acm.org>
parents:
diff changeset
26 a = linuxaudiodev.open('w')
1e784b879039 Added test for linnuxaudiodev module; directly adapted from sunaudiodev
Fred Drake <fdrake@acm.org>
parents:
diff changeset
27 except linuxaudiodev.error, msg:
23236
f51d1a2d4a4a backport:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 15093
diff changeset
28 if msg[0] in (errno.EACCES, errno.ENODEV, errno.EBUSY):
13860
d74a4a43f45f Oooopsss.....tab and space mismatch corrected.
Moshe Zadka <moshez@math.huji.ac.il>
parents: 13857
diff changeset
29 raise TestSkipped, msg
12908
1e784b879039 Added test for linnuxaudiodev module; directly adapted from sunaudiodev
Fred Drake <fdrake@acm.org>
parents:
diff changeset
30 raise TestFailed, msg
15062
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
31
15093
1b34c475da87 It seems our sound cards can't play mulaw data. Use native-format
Guido van Rossum <guido@python.org>
parents: 15062
diff changeset
32 # convert the data to 16-bit signed
1b34c475da87 It seems our sound cards can't play mulaw data. Use native-format
Guido van Rossum <guido@python.org>
parents: 15062
diff changeset
33 data = audioop.ulaw2lin(data, 2)
1b34c475da87 It seems our sound cards can't play mulaw data. Use native-format
Guido van Rossum <guido@python.org>
parents: 15062
diff changeset
34
1b34c475da87 It seems our sound cards can't play mulaw data. Use native-format
Guido van Rossum <guido@python.org>
parents: 15062
diff changeset
35 # set the data format
1b34c475da87 It seems our sound cards can't play mulaw data. Use native-format
Guido van Rossum <guido@python.org>
parents: 15062
diff changeset
36 if sys.byteorder == 'little':
1b34c475da87 It seems our sound cards can't play mulaw data. Use native-format
Guido van Rossum <guido@python.org>
parents: 15062
diff changeset
37 fmt = linuxaudiodev.AFMT_S16_LE
1b34c475da87 It seems our sound cards can't play mulaw data. Use native-format
Guido van Rossum <guido@python.org>
parents: 15062
diff changeset
38 else:
1b34c475da87 It seems our sound cards can't play mulaw data. Use native-format
Guido van Rossum <guido@python.org>
parents: 15062
diff changeset
39 fmt = linuxaudiodev.AFMT_S16_BE
1b34c475da87 It seems our sound cards can't play mulaw data. Use native-format
Guido van Rossum <guido@python.org>
parents: 15062
diff changeset
40
15062
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
41 # at least check that these methods can be invoked
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
42 a.bufsize()
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
43 a.obufcount()
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
44 a.obuffree()
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
45 a.getptr()
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
46 a.fileno()
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
47
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
48 # set parameters based on .au file headers
15093
1b34c475da87 It seems our sound cards can't play mulaw data. Use native-format
Guido van Rossum <guido@python.org>
parents: 15062
diff changeset
49 a.setparameters(rate, 16, nchannels, fmt)
15062
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
50 a.write(data)
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
51 a.flush()
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
52 a.close()
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
53
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
54 def test_errors():
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
55 a = linuxaudiodev.open("w")
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
56 size = 8
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
57 fmt = linuxaudiodev.AFMT_U8
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
58 rate = 8000
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
59 nchannels = 1
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
60 try:
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
61 a.setparameters(-1, size, nchannels, fmt)
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
62 except ValueError, msg:
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
63 print msg
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
64 try:
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
65 a.setparameters(rate, -2, nchannels, fmt)
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
66 except ValueError, msg:
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
67 print msg
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
68 try:
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
69 a.setparameters(rate, size, 3, fmt)
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
70 except ValueError, msg:
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
71 print msg
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
72 try:
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
73 a.setparameters(rate, size, nchannels, 177)
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
74 except ValueError, msg:
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
75 print msg
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
76 try:
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
77 a.setparameters(rate, size, nchannels, linuxaudiodev.AFMT_U16_LE)
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
78 except ValueError, msg:
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
79 print msg
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
80 try:
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
81 a.setparameters(rate, 16, nchannels, fmt)
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
82 except ValueError, msg:
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
83 print msg
12908
1e784b879039 Added test for linnuxaudiodev module; directly adapted from sunaudiodev
Fred Drake <fdrake@acm.org>
parents:
diff changeset
84
1e784b879039 Added test for linnuxaudiodev module; directly adapted from sunaudiodev
Fred Drake <fdrake@acm.org>
parents:
diff changeset
85 def test():
1e784b879039 Added test for linnuxaudiodev module; directly adapted from sunaudiodev
Fred Drake <fdrake@acm.org>
parents:
diff changeset
86 play_sound_file(findfile('audiotest.au'))
15062
675748378c81 test_linuxaudio:
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 13860
diff changeset
87 test_errors()
12908
1e784b879039 Added test for linnuxaudiodev module; directly adapted from sunaudiodev
Fred Drake <fdrake@acm.org>
parents:
diff changeset
88
1e784b879039 Added test for linnuxaudiodev module; directly adapted from sunaudiodev
Fred Drake <fdrake@acm.org>
parents:
diff changeset
89 test()