]> git.proxmox.com Git - mirror_edk2.git/blame - AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_linuxaudiodev.py
EmbeddedPkg: Extend NvVarStoreFormattedLib LIBRARY_CLASS
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Lib / test / test_linuxaudiodev.py
CommitLineData
4710c53d 1from test import test_support\r
2test_support.requires('audio')\r
3\r
4from test.test_support import findfile, run_unittest\r
5\r
6import errno\r
7import sys\r
8import audioop\r
9import unittest\r
10\r
11linuxaudiodev = test_support.import_module('linuxaudiodev', deprecated=True)\r
12sunaudio = test_support.import_module('sunaudio', deprecated=True)\r
13\r
14SND_FORMAT_MULAW_8 = 1\r
15\r
16class LinuxAudioDevTests(unittest.TestCase):\r
17\r
18 def setUp(self):\r
19 self.dev = linuxaudiodev.open('w')\r
20\r
21 def tearDown(self):\r
22 self.dev.close()\r
23\r
24 def test_methods(self):\r
25 # at least check that these methods can be invoked\r
26 self.dev.bufsize()\r
27 self.dev.obufcount()\r
28 self.dev.obuffree()\r
29 self.dev.getptr()\r
30 self.dev.fileno()\r
31\r
32 def test_play_sound_file(self):\r
33 path = findfile("audiotest.au")\r
34 fp = open(path, 'r')\r
35 size, enc, rate, nchannels, extra = sunaudio.gethdr(fp)\r
36 data = fp.read()\r
37 fp.close()\r
38\r
39 if enc != SND_FORMAT_MULAW_8:\r
40 self.fail("Expect .au file with 8-bit mu-law samples")\r
41\r
42 # convert the data to 16-bit signed\r
43 data = audioop.ulaw2lin(data, 2)\r
44\r
45 # set the data format\r
46 if sys.byteorder == 'little':\r
47 fmt = linuxaudiodev.AFMT_S16_LE\r
48 else:\r
49 fmt = linuxaudiodev.AFMT_S16_BE\r
50\r
51 # set parameters based on .au file headers\r
52 self.dev.setparameters(rate, 16, nchannels, fmt)\r
53 self.dev.write(data)\r
54 self.dev.flush()\r
55\r
56 def test_errors(self):\r
57 size = 8\r
58 fmt = linuxaudiodev.AFMT_U8\r
59 rate = 8000\r
60 nchannels = 1\r
61 try:\r
62 self.dev.setparameters(-1, size, nchannels, fmt)\r
63 except ValueError, err:\r
64 self.assertEqual(err.args[0], "expected rate >= 0, not -1")\r
65 try:\r
66 self.dev.setparameters(rate, -2, nchannels, fmt)\r
67 except ValueError, err:\r
68 self.assertEqual(err.args[0], "expected sample size >= 0, not -2")\r
69 try:\r
70 self.dev.setparameters(rate, size, 3, fmt)\r
71 except ValueError, err:\r
72 self.assertEqual(err.args[0], "nchannels must be 1 or 2, not 3")\r
73 try:\r
74 self.dev.setparameters(rate, size, nchannels, 177)\r
75 except ValueError, err:\r
76 self.assertEqual(err.args[0], "unknown audio encoding: 177")\r
77 try:\r
78 self.dev.setparameters(rate, size, nchannels, linuxaudiodev.AFMT_U16_LE)\r
79 except ValueError, err:\r
80 self.assertEqual(err.args[0], "for linear unsigned 16-bit little-endian "\r
81 "audio, expected sample size 16, not 8")\r
82 try:\r
83 self.dev.setparameters(rate, 16, nchannels, fmt)\r
84 except ValueError, err:\r
85 self.assertEqual(err.args[0], "for linear unsigned 8-bit audio, expected "\r
86 "sample size 8, not 16")\r
87\r
88def test_main():\r
89 try:\r
90 dsp = linuxaudiodev.open('w')\r
91 except linuxaudiodev.error, msg:\r
92 if msg.args[0] in (errno.EACCES, errno.ENOENT, errno.ENODEV, errno.EBUSY):\r
93 raise unittest.SkipTest(msg)\r
94 raise\r
95 dsp.close()\r
96 run_unittest(LinuxAudioDevTests)\r
97\r
98if __name__ == '__main__':\r
99 test_main()\r