Exceptions raised during renaming in rotating file handlers are now passed to handleE...
[python.git] / Lib / test / test_linuxaudiodev.py
blobfe902b5a0319d2a6bdac3f69425dfc837d7ee2f8
1 from test import test_support
2 test_support.requires('audio')
4 from test.test_support import verbose, findfile, TestFailed, TestSkipped
6 import errno
7 import fcntl
8 import linuxaudiodev
9 import os
10 import sys
11 import select
12 import sunaudio
13 import time
14 import audioop
16 SND_FORMAT_MULAW_8 = 1
18 def play_sound_file(path):
19 fp = open(path, 'r')
20 size, enc, rate, nchannels, extra = sunaudio.gethdr(fp)
21 data = fp.read()
22 fp.close()
24 if enc != SND_FORMAT_MULAW_8:
25 print "Expect .au file with 8-bit mu-law samples"
26 return
28 try:
29 a = linuxaudiodev.open('w')
30 except linuxaudiodev.error, msg:
31 if msg[0] in (errno.EACCES, errno.ENOENT, errno.ENODEV, errno.EBUSY):
32 raise TestSkipped, msg
33 raise TestFailed, msg
35 # convert the data to 16-bit signed
36 data = audioop.ulaw2lin(data, 2)
38 # set the data format
39 if sys.byteorder == 'little':
40 fmt = linuxaudiodev.AFMT_S16_LE
41 else:
42 fmt = linuxaudiodev.AFMT_S16_BE
44 # at least check that these methods can be invoked
45 a.bufsize()
46 a.obufcount()
47 a.obuffree()
48 a.getptr()
49 a.fileno()
51 # set parameters based on .au file headers
52 a.setparameters(rate, 16, nchannels, fmt)
53 a.write(data)
54 a.flush()
55 a.close()
57 def test_errors():
58 a = linuxaudiodev.open("w")
59 size = 8
60 fmt = linuxaudiodev.AFMT_U8
61 rate = 8000
62 nchannels = 1
63 try:
64 a.setparameters(-1, size, nchannels, fmt)
65 except ValueError, msg:
66 print msg
67 try:
68 a.setparameters(rate, -2, nchannels, fmt)
69 except ValueError, msg:
70 print msg
71 try:
72 a.setparameters(rate, size, 3, fmt)
73 except ValueError, msg:
74 print msg
75 try:
76 a.setparameters(rate, size, nchannels, 177)
77 except ValueError, msg:
78 print msg
79 try:
80 a.setparameters(rate, size, nchannels, linuxaudiodev.AFMT_U16_LE)
81 except ValueError, msg:
82 print msg
83 try:
84 a.setparameters(rate, 16, nchannels, fmt)
85 except ValueError, msg:
86 print msg
88 def test():
89 play_sound_file(findfile('audiotest.au'))
90 test_errors()
92 test()