blob: e9668338536f151c5f6143a6870a489619f07e95 [file] [log] [blame]
Guido van Rossumfa7fcb91994-01-12 09:55:11 +00001# Test audioop.
2import audioop
Roger E. Masse7a61f871997-01-03 19:20:17 +00003from test_support import verbose
Guido van Rossumfa7fcb91994-01-12 09:55:11 +00004
5def gendata1():
Roger E. Masse7a61f871997-01-03 19:20:17 +00006 return '\0\1\2'
Guido van Rossumfa7fcb91994-01-12 09:55:11 +00007
8def gendata2():
Roger E. Masse7a61f871997-01-03 19:20:17 +00009 if verbose:
10 print 'getsample'
11 if audioop.getsample('\0\1', 2, 0) == 1:
12 return '\0\0\0\1\0\2'
13 else:
14 return '\0\0\1\0\2\0'
Guido van Rossumfa7fcb91994-01-12 09:55:11 +000015
16def gendata4():
Roger E. Masse7a61f871997-01-03 19:20:17 +000017 if verbose:
18 print 'getsample'
19 if audioop.getsample('\0\0\0\1', 4, 0) == 1:
20 return '\0\0\0\0\0\0\0\1\0\0\0\2'
21 else:
22 return '\0\0\0\0\1\0\0\0\2\0\0\0'
Guido van Rossumfa7fcb91994-01-12 09:55:11 +000023
24def testmax(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +000025 if verbose:
26 print 'max'
27 if audioop.max(data[0], 1) <> 2 or \
28 audioop.max(data[1], 2) <> 2 or \
29 audioop.max(data[2], 4) <> 2:
30 return 0
31 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +000032
Guido van Rossum4fdb7441996-12-20 03:13:06 +000033def testminmax(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +000034 if verbose:
35 print 'minmax'
36 if audioop.minmax(data[0], 1) <> (0, 2) or \
37 audioop.minmax(data[1], 2) <> (0, 2) or \
38 audioop.minmax(data[2], 4) <> (0, 2):
39 return 0
40 return 1
Guido van Rossum4fdb7441996-12-20 03:13:06 +000041
Guido van Rossumfa7fcb91994-01-12 09:55:11 +000042def testmaxpp(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +000043 if verbose:
44 print 'maxpp'
45 if audioop.maxpp(data[0], 1) <> 0 or \
46 audioop.maxpp(data[1], 2) <> 0 or \
47 audioop.maxpp(data[2], 4) <> 0:
48 return 0
49 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +000050
51def testavg(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +000052 if verbose:
53 print 'avg'
54 if audioop.avg(data[0], 1) <> 1 or \
55 audioop.avg(data[1], 2) <> 1 or \
56 audioop.avg(data[2], 4) <> 1:
57 return 0
58 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +000059
60def testavgpp(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +000061 if verbose:
62 print 'avgpp'
63 if audioop.avgpp(data[0], 1) <> 0 or \
64 audioop.avgpp(data[1], 2) <> 0 or \
65 audioop.avgpp(data[2], 4) <> 0:
66 return 0
67 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +000068
69def testrms(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +000070 if audioop.rms(data[0], 1) <> 1 or \
71 audioop.rms(data[1], 2) <> 1 or \
72 audioop.rms(data[2], 4) <> 1:
73 return 0
74 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +000075
76def testcross(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +000077 if verbose:
78 print 'cross'
79 if audioop.cross(data[0], 1) <> 0 or \
80 audioop.cross(data[1], 2) <> 0 or \
81 audioop.cross(data[2], 4) <> 0:
82 return 0
83 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +000084
85def testadd(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +000086 if verbose:
87 print 'add'
88 data2 = []
89 for d in data:
90 str = ''
91 for s in d:
92 str = str + chr(ord(s)*2)
93 data2.append(str)
94 if audioop.add(data[0], data[0], 1) <> data2[0] or \
95 audioop.add(data[1], data[1], 2) <> data2[1] or \
96 audioop.add(data[2], data[2], 4) <> data2[2]:
97 return 0
98 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +000099
100def testbias(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +0000101 if verbose:
102 print 'bias'
103 # Note: this test assumes that avg() works
104 d1 = audioop.bias(data[0], 1, 100)
105 d2 = audioop.bias(data[1], 2, 100)
106 d4 = audioop.bias(data[2], 4, 100)
107 if audioop.avg(d1, 1) <> 101 or \
108 audioop.avg(d2, 2) <> 101 or \
109 audioop.avg(d4, 4) <> 101:
110 return 0
111 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000112
113def testlin2lin(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +0000114 if verbose:
115 print 'lin2lin'
116 # too simple: we test only the size
117 for d1 in data:
118 for d2 in data:
119 got = len(d1)/3
120 wtd = len(d2)/3
121 if len(audioop.lin2lin(d1, got, wtd)) <> len(d2):
122 return 0
123 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000124
125def testadpcm2lin(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +0000126 # Very cursory test
127 if audioop.adpcm2lin('\0\0', 1, None) <> ('\0\0\0\0', (0,0)):
128 return 0
129 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000130
131def testlin2adpcm(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +0000132 if verbose:
133 print 'lin2adpcm'
134 # Very cursory test
135 if audioop.lin2adpcm('\0\0\0\0', 1, None) <> ('\0\0', (0,0)):
136 return 0
137 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000138
139def testlin2ulaw(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +0000140 if verbose:
141 print 'lin2ulaw'
142 if audioop.lin2ulaw(data[0], 1) <> '\377\347\333' or \
143 audioop.lin2ulaw(data[1], 2) <> '\377\377\377' or \
144 audioop.lin2ulaw(data[2], 4) <> '\377\377\377':
145 return 0
146 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000147
148def testulaw2lin(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +0000149 if verbose:
150 print 'ulaw2lin'
151 # Cursory
152 d = audioop.lin2ulaw(data[0], 1)
153 if audioop.ulaw2lin(d, 1) <> data[0]:
154 return 0
155 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000156
157def testmul(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +0000158 if verbose:
159 print 'mul'
160 data2 = []
161 for d in data:
162 str = ''
163 for s in d:
164 str = str + chr(ord(s)*2)
165 data2.append(str)
166 if audioop.mul(data[0], 1, 2) <> data2[0] or \
167 audioop.mul(data[1],2, 2) <> data2[1] or \
168 audioop.mul(data[2], 4, 2) <> data2[2]:
169 return 0
170 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000171
Guido van Rossumc8504e21997-02-14 15:58:00 +0000172def testratecv(data):
173 if verbose:
174 print 'ratecv'
175 state = (-8000, ((256, 512),))
176 if audioop.ratecv(data[0], 1, 1, 8000, 16000, state) != \
177 ('\001\000\000\001\001\002', state):
178 return 0
179 return 1
180
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000181def testreverse(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +0000182 if verbose:
183 print 'reverse'
184 if audioop.reverse(data[0], 1) <> '\2\1\0':
185 return 0
186 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000187
188def testtomono(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +0000189 if verbose:
190 print 'tomono'
191 data2 = ''
192 for d in data[0]:
193 data2 = data2 + d + d
194 if audioop.tomono(data2, 1, 0.5, 0.5) <> data[0]:
195 return 0
196 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000197
198def testtostereo(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +0000199 if verbose:
200 print 'tostereo'
201 data2 = ''
202 for d in data[0]:
203 data2 = data2 + d + d
204 if audioop.tostereo(data[0], 1, 1, 1) <> data2:
205 return 0
206 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000207
208def testfindfactor(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +0000209 if verbose:
210 print 'findfactor'
211 if audioop.findfactor(data[1], data[1]) <> 1.0:
212 return 0
213 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000214
215def testfindfit(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +0000216 if verbose:
217 print 'findfit'
218 if audioop.findfit(data[1], data[1]) <> (0, 1.0):
219 return 0
220 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000221
222def testfindmax(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +0000223 if verbose:
224 print 'findmax'
225 if audioop.findmax(data[1], 1) <> 2:
226 return 0
227 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000228
229def testgetsample(data):
Roger E. Masse7a61f871997-01-03 19:20:17 +0000230 if verbose:
231 print 'getsample'
232 for i in range(3):
233 if audioop.getsample(data[0], 1, i) <> i or \
234 audioop.getsample(data[1], 2, i) <> i or \
235 audioop.getsample(data[2], 4, i) <> i:
236 return 0
237 return 1
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000238
239def testone(name, data):
Roger E. Masse7a61f871997-01-03 19:20:17 +0000240 try:
241 func = eval('test'+name)
242 except NameError:
243 print 'No test found for audioop.'+name+'()'
244 return
245 try:
246 rv = func(data)
247 except 'xx':
248 print 'Test FAILED for audioop.'+name+'() (with an exception)'
249 return
250 if not rv:
251 print 'Test FAILED for audioop.'+name+'()'
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000252
253def testall():
Roger E. Masse7a61f871997-01-03 19:20:17 +0000254 data = [gendata1(), gendata2(), gendata4()]
255 names = dir(audioop)
256 # We know there is a routine 'add'
257 routines = []
258 for n in names:
259 if type(eval('audioop.'+n)) == type(audioop.add):
260 routines.append(n)
261 for n in routines:
262 testone(n, data)
Guido van Rossumfa7fcb91994-01-12 09:55:11 +0000263testall()