| import audioop | 
 | import unittest | 
 | from test.support import run_unittest | 
 |  | 
 |  | 
 | def gendata1(): | 
 |     return b'\0\1\2' | 
 |  | 
 | def gendata2(): | 
 |     if audioop.getsample(b'\0\1', 2, 0) == 1: | 
 |         return b'\0\0\0\1\0\2' | 
 |     else: | 
 |         return b'\0\0\1\0\2\0' | 
 |  | 
 | def gendata4(): | 
 |     if audioop.getsample(b'\0\0\0\1', 4, 0) == 1: | 
 |         return b'\0\0\0\0\0\0\0\1\0\0\0\2' | 
 |     else: | 
 |         return b'\0\0\0\0\1\0\0\0\2\0\0\0' | 
 |  | 
 | data = [gendata1(), gendata2(), gendata4()] | 
 |  | 
 |  | 
 | class TestAudioop(unittest.TestCase): | 
 |  | 
 |     def test_max(self): | 
 |         self.assertEqual(audioop.max(data[0], 1), 2) | 
 |         self.assertEqual(audioop.max(data[1], 2), 2) | 
 |         self.assertEqual(audioop.max(data[2], 4), 2) | 
 |  | 
 |     def test_minmax(self): | 
 |         self.assertEqual(audioop.minmax(data[0], 1), (0, 2)) | 
 |         self.assertEqual(audioop.minmax(data[1], 2), (0, 2)) | 
 |         self.assertEqual(audioop.minmax(data[2], 4), (0, 2)) | 
 |  | 
 |     def test_maxpp(self): | 
 |         self.assertEqual(audioop.maxpp(data[0], 1), 0) | 
 |         self.assertEqual(audioop.maxpp(data[1], 2), 0) | 
 |         self.assertEqual(audioop.maxpp(data[2], 4), 0) | 
 |  | 
 |     def test_avg(self): | 
 |         self.assertEqual(audioop.avg(data[0], 1), 1) | 
 |         self.assertEqual(audioop.avg(data[1], 2), 1) | 
 |         self.assertEqual(audioop.avg(data[2], 4), 1) | 
 |  | 
 |     def test_avgpp(self): | 
 |         self.assertEqual(audioop.avgpp(data[0], 1), 0) | 
 |         self.assertEqual(audioop.avgpp(data[1], 2), 0) | 
 |         self.assertEqual(audioop.avgpp(data[2], 4), 0) | 
 |  | 
 |     def test_rms(self): | 
 |         self.assertEqual(audioop.rms(data[0], 1), 1) | 
 |         self.assertEqual(audioop.rms(data[1], 2), 1) | 
 |         self.assertEqual(audioop.rms(data[2], 4), 1) | 
 |  | 
 |     def test_cross(self): | 
 |         self.assertEqual(audioop.cross(data[0], 1), 0) | 
 |         self.assertEqual(audioop.cross(data[1], 2), 0) | 
 |         self.assertEqual(audioop.cross(data[2], 4), 0) | 
 |  | 
 |     def test_add(self): | 
 |         data2 = [] | 
 |         for d in data: | 
 |             str = bytearray(len(d)) | 
 |             for i,b in enumerate(d): | 
 |                 str[i] = 2*b | 
 |             data2.append(str) | 
 |         self.assertEqual(audioop.add(data[0], data[0], 1), data2[0]) | 
 |         self.assertEqual(audioop.add(data[1], data[1], 2), data2[1]) | 
 |         self.assertEqual(audioop.add(data[2], data[2], 4), data2[2]) | 
 |  | 
 |     def test_bias(self): | 
 |         # Note: this test assumes that avg() works | 
 |         d1 = audioop.bias(data[0], 1, 100) | 
 |         d2 = audioop.bias(data[1], 2, 100) | 
 |         d4 = audioop.bias(data[2], 4, 100) | 
 |         self.assertEqual(audioop.avg(d1, 1), 101) | 
 |         self.assertEqual(audioop.avg(d2, 2), 101) | 
 |         self.assertEqual(audioop.avg(d4, 4), 101) | 
 |  | 
 |     def test_lin2lin(self): | 
 |         # too simple: we test only the size | 
 |         for d1 in data: | 
 |             for d2 in data: | 
 |                 got = len(d1)//3 | 
 |                 wtd = len(d2)//3 | 
 |                 self.assertEqual(len(audioop.lin2lin(d1, got, wtd)), len(d2)) | 
 |  | 
 |     def test_adpcm2lin(self): | 
 |         # Very cursory test | 
 |         self.assertEqual(audioop.adpcm2lin(b'\0\0', 1, None), (b'\0\0\0\0', (0,0))) | 
 |  | 
 |     def test_lin2adpcm(self): | 
 |         # Very cursory test | 
 |         self.assertEqual(audioop.lin2adpcm(b'\0\0\0\0', 1, None), (b'\0\0', (0,0))) | 
 |  | 
 |     def test_lin2alaw(self): | 
 |         self.assertEqual(audioop.lin2alaw(data[0], 1), b'\xd5\xc5\xf5') | 
 |         self.assertEqual(audioop.lin2alaw(data[1], 2), b'\xd5\xd5\xd5') | 
 |         self.assertEqual(audioop.lin2alaw(data[2], 4), b'\xd5\xd5\xd5') | 
 |  | 
 |     def test_alaw2lin(self): | 
 |         # Cursory | 
 |         d = audioop.lin2alaw(data[0], 1) | 
 |         self.assertEqual(audioop.alaw2lin(d, 1), data[0]) | 
 |  | 
 |     def test_lin2ulaw(self): | 
 |         self.assertEqual(audioop.lin2ulaw(data[0], 1), b'\xff\xe7\xdb') | 
 |         self.assertEqual(audioop.lin2ulaw(data[1], 2), b'\xff\xff\xff') | 
 |         self.assertEqual(audioop.lin2ulaw(data[2], 4), b'\xff\xff\xff') | 
 |  | 
 |     def test_ulaw2lin(self): | 
 |         # Cursory | 
 |         d = audioop.lin2ulaw(data[0], 1) | 
 |         self.assertEqual(audioop.ulaw2lin(d, 1), data[0]) | 
 |  | 
 |     def test_mul(self): | 
 |         data2 = [] | 
 |         for d in data: | 
 |             str = bytearray(len(d)) | 
 |             for i,b in enumerate(d): | 
 |                 str[i] = 2*b | 
 |             data2.append(str) | 
 |         self.assertEqual(audioop.mul(data[0], 1, 2), data2[0]) | 
 |         self.assertEqual(audioop.mul(data[1],2, 2), data2[1]) | 
 |         self.assertEqual(audioop.mul(data[2], 4, 2), data2[2]) | 
 |  | 
 |     def test_ratecv(self): | 
 |         state = None | 
 |         d1, state = audioop.ratecv(data[0], 1, 1, 8000, 16000, state) | 
 |         d2, state = audioop.ratecv(data[0], 1, 1, 8000, 16000, state) | 
 |         self.assertEqual(d1 + d2, b'\000\000\001\001\002\001\000\000\001\001\002') | 
 |  | 
 |     def test_reverse(self): | 
 |         self.assertEqual(audioop.reverse(data[0], 1), b'\2\1\0') | 
 |  | 
 |     def test_tomono(self): | 
 |         data2 = bytearray() | 
 |         for d in data[0]: | 
 |             data2.append(d) | 
 |             data2.append(d) | 
 |         self.assertEqual(audioop.tomono(data2, 1, 0.5, 0.5), data[0]) | 
 |  | 
 |     def test_tostereo(self): | 
 |         data2 = bytearray() | 
 |         for d in data[0]: | 
 |             data2.append(d) | 
 |             data2.append(d) | 
 |         self.assertEqual(audioop.tostereo(data[0], 1, 1, 1), data2) | 
 |  | 
 |     def test_findfactor(self): | 
 |         self.assertEqual(audioop.findfactor(data[1], data[1]), 1.0) | 
 |  | 
 |     def test_findfit(self): | 
 |         self.assertEqual(audioop.findfit(data[1], data[1]), (0, 1.0)) | 
 |  | 
 |     def test_findmax(self): | 
 |         self.assertEqual(audioop.findmax(data[1], 1), 2) | 
 |  | 
 |     def test_getsample(self): | 
 |         for i in range(3): | 
 |             self.assertEqual(audioop.getsample(data[0], 1, i), i) | 
 |             self.assertEqual(audioop.getsample(data[1], 2, i), i) | 
 |             self.assertEqual(audioop.getsample(data[2], 4, i), i) | 
 |  | 
 |     def test_negativelen(self): | 
 |         # from issue 3306, previously it segfaulted | 
 |         self.assertRaises(audioop.error, | 
 |             audioop.findmax, ''.join(chr(x) for x in range(256)), -2392392) | 
 |  | 
 | def test_main(): | 
 |     run_unittest(TestAudioop) | 
 |  | 
 | if __name__ == '__main__': | 
 |     test_main() |