blob: 5132f6afde4063b27a470c468ed65996f1a2fc76 [file] [log] [blame]
Guido van Rossumfa7fcb91994-01-12 09:55:11 +00001# Test audioop.
2import audioop
3
4def gendata1():
5 return '\0\1\2'
6
7def gendata2():
8 if audioop.getsample('\0\1', 2, 0) == 1:
9 return '\0\0\0\1\0\2'
10 else:
11 return '\0\0\1\0\2\0'
12
13def gendata4():
14 if audioop.getsample('\0\0\0\1', 4, 0) == 1:
15 return '\0\0\0\0\0\0\0\1\0\0\0\2'
16 else:
17 return '\0\0\0\0\1\0\0\0\2\0\0\0'
18
19def testmax(data):
20 if audioop.max(data[0], 1) <> 2 or \
21 audioop.max(data[1], 2) <> 2 or \
22 audioop.max(data[2], 4) <> 2:
23 return 0
24 return 1
25
Guido van Rossum4fdb7441996-12-20 03:13:06 +000026def testminmax(data):
27 if audioop.minmax(data[0], 1) <> (0, 2) or \
28 audioop.minmax(data[1], 2) <> (0, 2) or \
29 audioop.minmax(data[2], 4) <> (0, 2):
30 return 0
31 return 1
32
Guido van Rossumfa7fcb91994-01-12 09:55:11 +000033def testmaxpp(data):
34 if audioop.maxpp(data[0], 1) <> 0 or \
35 audioop.maxpp(data[1], 2) <> 0 or \
36 audioop.maxpp(data[2], 4) <> 0:
37 return 0
38 return 1
39
40def testavg(data):
41 if audioop.avg(data[0], 1) <> 1 or \
42 audioop.avg(data[1], 2) <> 1 or \
43 audioop.avg(data[2], 4) <> 1:
44 return 0
45 return 1
46
47def testavgpp(data):
48 if audioop.avgpp(data[0], 1) <> 0 or \
49 audioop.avgpp(data[1], 2) <> 0 or \
50 audioop.avgpp(data[2], 4) <> 0:
51 return 0
52 return 1
53
54def testrms(data):
55 if audioop.rms(data[0], 1) <> 1 or \
56 audioop.rms(data[1], 2) <> 1 or \
57 audioop.rms(data[2], 4) <> 1:
58 return 0
59 return 1
60
61def testcross(data):
62 if audioop.cross(data[0], 1) <> 0 or \
63 audioop.cross(data[1], 2) <> 0 or \
64 audioop.cross(data[2], 4) <> 0:
65 return 0
66 return 1
67
68def testadd(data):
69 data2 = []
70 for d in data:
71 str = ''
72 for s in d:
73 str = str + chr(ord(s)*2)
74 data2.append(str)
75 if audioop.add(data[0], data[0], 1) <> data2[0] or \
76 audioop.add(data[1], data[1], 2) <> data2[1] or \
77 audioop.add(data[2], data[2], 4) <> data2[2]:
78 return 0
79 return 1
80
81def testbias(data):
82 # Note: this test assumes that avg() works
83 d1 = audioop.bias(data[0], 1, 100)
84 d2 = audioop.bias(data[1], 2, 100)
85 d4 = audioop.bias(data[2], 4, 100)
86 if audioop.avg(d1, 1) <> 101 or \
87 audioop.avg(d2, 2) <> 101 or \
88 audioop.avg(d4, 4) <> 101:
89 return 0
90 return 1
91
92def testlin2lin(data):
93 # too simple: we test only the size
94 for d1 in data:
95 for d2 in data:
96 got = len(d1)/3
97 wtd = len(d2)/3
98 if len(audioop.lin2lin(d1, got, wtd)) <> len(d2):
99 return 0
100 return 1
101
102def testadpcm2lin(data):
103 # Very cursory test
104 if audioop.adpcm2lin('\0\0', 1, None) <> ('\0\0\0\0', (0,0)):
105 return 0
106 return 1
107
108def testlin2adpcm(data):
109 # Very cursory test
110 if audioop.lin2adpcm('\0\0\0\0', 1, None) <> ('\0\0', (0,0)):
111 return 0
112 return 1
113
114def testlin2ulaw(data):
115 if audioop.lin2ulaw(data[0], 1) <> '\377\347\333' or \
116 audioop.lin2ulaw(data[1], 2) <> '\377\377\377' or \
117 audioop.lin2ulaw(data[2], 4) <> '\377\377\377':
118 return 0
119 return 1
120
121def testulaw2lin(data):
122 # Cursory
123 d = audioop.lin2ulaw(data[0], 1)
124 if audioop.ulaw2lin(d, 1) <> data[0]:
125 return 0
126 return 1
127
128def testmul(data):
129 data2 = []
130 for d in data:
131 str = ''
132 for s in d:
133 str = str + chr(ord(s)*2)
134 data2.append(str)
135 if audioop.mul(data[0], 1, 2) <> data2[0] or \
136 audioop.mul(data[1],2, 2) <> data2[1] or \
137 audioop.mul(data[2], 4, 2) <> data2[2]:
138 return 0
139 return 1
140
141def testreverse(data):
142 if audioop.reverse(data[0], 1) <> '\2\1\0':
143 return 0
144 return 1
145
146def testtomono(data):
147 data2 = ''
148 for d in data[0]:
149 data2 = data2 + d + d
150 if audioop.tomono(data2, 1, 0.5, 0.5) <> data[0]:
151 return 0
152 return 1
153
154def testtostereo(data):
155 data2 = ''
156 for d in data[0]:
157 data2 = data2 + d + d
158 if audioop.tostereo(data[0], 1, 1, 1) <> data2:
159 return 0
160 return 1
161
162def testfindfactor(data):
163 if audioop.findfactor(data[1], data[1]) <> 1.0:
164 return 0
165 return 1
166
167def testfindfit(data):
168 if audioop.findfit(data[1], data[1]) <> (0, 1.0):
169 return 0
170 return 1
171
172def testfindmax(data):
173 if audioop.findmax(data[1], 1) <> 2:
174 return 0
175 return 1
176
177def testgetsample(data):
178 for i in range(3):
179 if audioop.getsample(data[0], 1, i) <> i or \
180 audioop.getsample(data[1], 2, i) <> i or \
181 audioop.getsample(data[2], 4, i) <> i:
182 return 0
183 return 1
184
185def testone(name, data):
186 try:
187 func = eval('test'+name)
188 except NameError:
189 print 'No test found for audioop.'+name+'()'
190 return
191 try:
192 rv = func(data)
193 except 'xx':
194 print 'Test FAILED for audioop.'+name+'() (with an exception)'
195 return
196 if not rv:
197 print 'Test FAILED for audioop.'+name+'()'
198
199def testall():
200 data = [gendata1(), gendata2(), gendata4()]
201 names = dir(audioop)
202 # We know there is a routine 'add'
203 routines = []
204 for n in names:
205 if type(eval('audioop.'+n)) == type(audioop.add):
206 routines.append(n)
207 for n in routines:
208 testone(n, data)
209testall()