blob: 535f84c2eaa8f6e6a1a3265159cba74cb3c44d11 [file] [log] [blame]
Moshe Zadka040c17f2000-08-04 13:26:03 +00001from test_support import verbose, findfile, TestFailed, TestSkipped
Jeremy Hyltone2b7c4d2000-10-06 19:39:55 +00002
Moshe Zadka323a5082000-08-04 12:59:40 +00003import errno
Jeremy Hyltone2b7c4d2000-10-06 19:39:55 +00004import fcntl
5import linuxaudiodev
Fred Drake1f2d4642000-06-10 04:22:57 +00006import os
Jeremy Hyltone2b7c4d2000-10-06 19:39:55 +00007import select
8import sunaudio
9import time
10
11SND_FORMAT_MULAW_8 = 1
Fred Drake1f2d4642000-06-10 04:22:57 +000012
13def play_sound_file(path):
14 fp = open(path, 'r')
Jeremy Hyltone2b7c4d2000-10-06 19:39:55 +000015 size, enc, rate, nchannels, extra = sunaudio.gethdr(fp)
Fred Drake1f2d4642000-06-10 04:22:57 +000016 data = fp.read()
17 fp.close()
Jeremy Hyltone2b7c4d2000-10-06 19:39:55 +000018
19 if enc != SND_FORMAT_MULAW_8:
20 print "Expect .au file with 8-bit mu-law samples"
21 return
22
Fred Drake1f2d4642000-06-10 04:22:57 +000023 try:
24 a = linuxaudiodev.open('w')
25 except linuxaudiodev.error, msg:
Moshe Zadka92a69132000-08-04 15:25:58 +000026 if msg[0] in (errno.EACCES, errno.ENODEV):
27 raise TestSkipped, msg
Fred Drake1f2d4642000-06-10 04:22:57 +000028 raise TestFailed, msg
Jeremy Hyltone2b7c4d2000-10-06 19:39:55 +000029
30 # at least check that these methods can be invoked
31 a.bufsize()
32 a.obufcount()
33 a.obuffree()
34 a.getptr()
35 a.fileno()
36
37 # set parameters based on .au file headers
38 a.setparameters(rate, 8, nchannels, linuxaudiodev.AFMT_MU_LAW, 1)
39 a.write(data)
40 a.flush()
41 a.close()
42
43def test_errors():
44 a = linuxaudiodev.open("w")
45 size = 8
46 fmt = linuxaudiodev.AFMT_U8
47 rate = 8000
48 nchannels = 1
49 try:
50 a.setparameters(-1, size, nchannels, fmt)
51 except ValueError, msg:
52 print msg
53 try:
54 a.setparameters(rate, -2, nchannels, fmt)
55 except ValueError, msg:
56 print msg
57 try:
58 a.setparameters(rate, size, 3, fmt)
59 except ValueError, msg:
60 print msg
61 try:
62 a.setparameters(rate, size, nchannels, 177)
63 except ValueError, msg:
64 print msg
65 try:
66 a.setparameters(rate, size, nchannels, linuxaudiodev.AFMT_U16_LE)
67 except ValueError, msg:
68 print msg
69 try:
70 a.setparameters(rate, 16, nchannels, fmt)
71 except ValueError, msg:
72 print msg
Fred Drake1f2d4642000-06-10 04:22:57 +000073
74def test():
75 play_sound_file(findfile('audiotest.au'))
Jeremy Hyltone2b7c4d2000-10-06 19:39:55 +000076 test_errors()
Fred Drake1f2d4642000-06-10 04:22:57 +000077
78test()