17db96d56Sopenharmony_ciimport sys 27db96d56Sopenharmony_cifrom test.support import warnings_helper 37db96d56Sopenharmony_ciimport unittest 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciaudioop = warnings_helper.import_deprecated("audioop") 67db96d56Sopenharmony_ci 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_cidef pack(width, data): 97db96d56Sopenharmony_ci return b''.join(v.to_bytes(width, sys.byteorder, signed=True) for v in data) 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_cidef unpack(width, data): 127db96d56Sopenharmony_ci return [int.from_bytes(data[i: i + width], sys.byteorder, signed=True) 137db96d56Sopenharmony_ci for i in range(0, len(data), width)] 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_cipacks = {w: (lambda *data, width=w: pack(width, data)) for w in (1, 2, 3, 4)} 167db96d56Sopenharmony_cimaxvalues = {w: (1 << (8 * w - 1)) - 1 for w in (1, 2, 3, 4)} 177db96d56Sopenharmony_ciminvalues = {w: -1 << (8 * w - 1) for w in (1, 2, 3, 4)} 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_cidatas = { 207db96d56Sopenharmony_ci 1: b'\x00\x12\x45\xbb\x7f\x80\xff', 217db96d56Sopenharmony_ci 2: packs[2](0, 0x1234, 0x4567, -0x4567, 0x7fff, -0x8000, -1), 227db96d56Sopenharmony_ci 3: packs[3](0, 0x123456, 0x456789, -0x456789, 0x7fffff, -0x800000, -1), 237db96d56Sopenharmony_ci 4: packs[4](0, 0x12345678, 0x456789ab, -0x456789ab, 247db96d56Sopenharmony_ci 0x7fffffff, -0x80000000, -1), 257db96d56Sopenharmony_ci} 267db96d56Sopenharmony_ci 277db96d56Sopenharmony_ciINVALID_DATA = [ 287db96d56Sopenharmony_ci (b'abc', 0), 297db96d56Sopenharmony_ci (b'abc', 2), 307db96d56Sopenharmony_ci (b'ab', 3), 317db96d56Sopenharmony_ci (b'abc', 4), 327db96d56Sopenharmony_ci] 337db96d56Sopenharmony_ci 347db96d56Sopenharmony_ci 357db96d56Sopenharmony_ciclass TestAudioop(unittest.TestCase): 367db96d56Sopenharmony_ci 377db96d56Sopenharmony_ci def test_max(self): 387db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 397db96d56Sopenharmony_ci self.assertEqual(audioop.max(b'', w), 0) 407db96d56Sopenharmony_ci self.assertEqual(audioop.max(bytearray(), w), 0) 417db96d56Sopenharmony_ci self.assertEqual(audioop.max(memoryview(b''), w), 0) 427db96d56Sopenharmony_ci p = packs[w] 437db96d56Sopenharmony_ci self.assertEqual(audioop.max(p(5), w), 5) 447db96d56Sopenharmony_ci self.assertEqual(audioop.max(p(5, -8, -1), w), 8) 457db96d56Sopenharmony_ci self.assertEqual(audioop.max(p(maxvalues[w]), w), maxvalues[w]) 467db96d56Sopenharmony_ci self.assertEqual(audioop.max(p(minvalues[w]), w), -minvalues[w]) 477db96d56Sopenharmony_ci self.assertEqual(audioop.max(datas[w], w), -minvalues[w]) 487db96d56Sopenharmony_ci 497db96d56Sopenharmony_ci def test_minmax(self): 507db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 517db96d56Sopenharmony_ci self.assertEqual(audioop.minmax(b'', w), 527db96d56Sopenharmony_ci (0x7fffffff, -0x80000000)) 537db96d56Sopenharmony_ci self.assertEqual(audioop.minmax(bytearray(), w), 547db96d56Sopenharmony_ci (0x7fffffff, -0x80000000)) 557db96d56Sopenharmony_ci self.assertEqual(audioop.minmax(memoryview(b''), w), 567db96d56Sopenharmony_ci (0x7fffffff, -0x80000000)) 577db96d56Sopenharmony_ci p = packs[w] 587db96d56Sopenharmony_ci self.assertEqual(audioop.minmax(p(5), w), (5, 5)) 597db96d56Sopenharmony_ci self.assertEqual(audioop.minmax(p(5, -8, -1), w), (-8, 5)) 607db96d56Sopenharmony_ci self.assertEqual(audioop.minmax(p(maxvalues[w]), w), 617db96d56Sopenharmony_ci (maxvalues[w], maxvalues[w])) 627db96d56Sopenharmony_ci self.assertEqual(audioop.minmax(p(minvalues[w]), w), 637db96d56Sopenharmony_ci (minvalues[w], minvalues[w])) 647db96d56Sopenharmony_ci self.assertEqual(audioop.minmax(datas[w], w), 657db96d56Sopenharmony_ci (minvalues[w], maxvalues[w])) 667db96d56Sopenharmony_ci 677db96d56Sopenharmony_ci def test_maxpp(self): 687db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 697db96d56Sopenharmony_ci self.assertEqual(audioop.maxpp(b'', w), 0) 707db96d56Sopenharmony_ci self.assertEqual(audioop.maxpp(bytearray(), w), 0) 717db96d56Sopenharmony_ci self.assertEqual(audioop.maxpp(memoryview(b''), w), 0) 727db96d56Sopenharmony_ci self.assertEqual(audioop.maxpp(packs[w](*range(100)), w), 0) 737db96d56Sopenharmony_ci self.assertEqual(audioop.maxpp(packs[w](9, 10, 5, 5, 0, 1), w), 10) 747db96d56Sopenharmony_ci self.assertEqual(audioop.maxpp(datas[w], w), 757db96d56Sopenharmony_ci maxvalues[w] - minvalues[w]) 767db96d56Sopenharmony_ci 777db96d56Sopenharmony_ci def test_avg(self): 787db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 797db96d56Sopenharmony_ci self.assertEqual(audioop.avg(b'', w), 0) 807db96d56Sopenharmony_ci self.assertEqual(audioop.avg(bytearray(), w), 0) 817db96d56Sopenharmony_ci self.assertEqual(audioop.avg(memoryview(b''), w), 0) 827db96d56Sopenharmony_ci p = packs[w] 837db96d56Sopenharmony_ci self.assertEqual(audioop.avg(p(5), w), 5) 847db96d56Sopenharmony_ci self .assertEqual(audioop.avg(p(5, 8), w), 6) 857db96d56Sopenharmony_ci self.assertEqual(audioop.avg(p(5, -8), w), -2) 867db96d56Sopenharmony_ci self.assertEqual(audioop.avg(p(maxvalues[w], maxvalues[w]), w), 877db96d56Sopenharmony_ci maxvalues[w]) 887db96d56Sopenharmony_ci self.assertEqual(audioop.avg(p(minvalues[w], minvalues[w]), w), 897db96d56Sopenharmony_ci minvalues[w]) 907db96d56Sopenharmony_ci self.assertEqual(audioop.avg(packs[4](0x50000000, 0x70000000), 4), 917db96d56Sopenharmony_ci 0x60000000) 927db96d56Sopenharmony_ci self.assertEqual(audioop.avg(packs[4](-0x50000000, -0x70000000), 4), 937db96d56Sopenharmony_ci -0x60000000) 947db96d56Sopenharmony_ci 957db96d56Sopenharmony_ci def test_avgpp(self): 967db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 977db96d56Sopenharmony_ci self.assertEqual(audioop.avgpp(b'', w), 0) 987db96d56Sopenharmony_ci self.assertEqual(audioop.avgpp(bytearray(), w), 0) 997db96d56Sopenharmony_ci self.assertEqual(audioop.avgpp(memoryview(b''), w), 0) 1007db96d56Sopenharmony_ci self.assertEqual(audioop.avgpp(packs[w](*range(100)), w), 0) 1017db96d56Sopenharmony_ci self.assertEqual(audioop.avgpp(packs[w](9, 10, 5, 5, 0, 1), w), 10) 1027db96d56Sopenharmony_ci self.assertEqual(audioop.avgpp(datas[1], 1), 196) 1037db96d56Sopenharmony_ci self.assertEqual(audioop.avgpp(datas[2], 2), 50534) 1047db96d56Sopenharmony_ci self.assertEqual(audioop.avgpp(datas[3], 3), 12937096) 1057db96d56Sopenharmony_ci self.assertEqual(audioop.avgpp(datas[4], 4), 3311897002) 1067db96d56Sopenharmony_ci 1077db96d56Sopenharmony_ci def test_rms(self): 1087db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 1097db96d56Sopenharmony_ci self.assertEqual(audioop.rms(b'', w), 0) 1107db96d56Sopenharmony_ci self.assertEqual(audioop.rms(bytearray(), w), 0) 1117db96d56Sopenharmony_ci self.assertEqual(audioop.rms(memoryview(b''), w), 0) 1127db96d56Sopenharmony_ci p = packs[w] 1137db96d56Sopenharmony_ci self.assertEqual(audioop.rms(p(*range(100)), w), 57) 1147db96d56Sopenharmony_ci self.assertAlmostEqual(audioop.rms(p(maxvalues[w]) * 5, w), 1157db96d56Sopenharmony_ci maxvalues[w], delta=1) 1167db96d56Sopenharmony_ci self.assertAlmostEqual(audioop.rms(p(minvalues[w]) * 5, w), 1177db96d56Sopenharmony_ci -minvalues[w], delta=1) 1187db96d56Sopenharmony_ci self.assertEqual(audioop.rms(datas[1], 1), 77) 1197db96d56Sopenharmony_ci self.assertEqual(audioop.rms(datas[2], 2), 20001) 1207db96d56Sopenharmony_ci self.assertEqual(audioop.rms(datas[3], 3), 5120523) 1217db96d56Sopenharmony_ci self.assertEqual(audioop.rms(datas[4], 4), 1310854152) 1227db96d56Sopenharmony_ci 1237db96d56Sopenharmony_ci def test_cross(self): 1247db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 1257db96d56Sopenharmony_ci self.assertEqual(audioop.cross(b'', w), -1) 1267db96d56Sopenharmony_ci self.assertEqual(audioop.cross(bytearray(), w), -1) 1277db96d56Sopenharmony_ci self.assertEqual(audioop.cross(memoryview(b''), w), -1) 1287db96d56Sopenharmony_ci p = packs[w] 1297db96d56Sopenharmony_ci self.assertEqual(audioop.cross(p(0, 1, 2), w), 0) 1307db96d56Sopenharmony_ci self.assertEqual(audioop.cross(p(1, 2, -3, -4), w), 1) 1317db96d56Sopenharmony_ci self.assertEqual(audioop.cross(p(-1, -2, 3, 4), w), 1) 1327db96d56Sopenharmony_ci self.assertEqual(audioop.cross(p(0, minvalues[w]), w), 1) 1337db96d56Sopenharmony_ci self.assertEqual(audioop.cross(p(minvalues[w], maxvalues[w]), w), 1) 1347db96d56Sopenharmony_ci 1357db96d56Sopenharmony_ci def test_add(self): 1367db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 1377db96d56Sopenharmony_ci self.assertEqual(audioop.add(b'', b'', w), b'') 1387db96d56Sopenharmony_ci self.assertEqual(audioop.add(bytearray(), bytearray(), w), b'') 1397db96d56Sopenharmony_ci self.assertEqual(audioop.add(memoryview(b''), memoryview(b''), w), b'') 1407db96d56Sopenharmony_ci self.assertEqual(audioop.add(datas[w], b'\0' * len(datas[w]), w), 1417db96d56Sopenharmony_ci datas[w]) 1427db96d56Sopenharmony_ci self.assertEqual(audioop.add(datas[1], datas[1], 1), 1437db96d56Sopenharmony_ci b'\x00\x24\x7f\x80\x7f\x80\xfe') 1447db96d56Sopenharmony_ci self.assertEqual(audioop.add(datas[2], datas[2], 2), 1457db96d56Sopenharmony_ci packs[2](0, 0x2468, 0x7fff, -0x8000, 0x7fff, -0x8000, -2)) 1467db96d56Sopenharmony_ci self.assertEqual(audioop.add(datas[3], datas[3], 3), 1477db96d56Sopenharmony_ci packs[3](0, 0x2468ac, 0x7fffff, -0x800000, 1487db96d56Sopenharmony_ci 0x7fffff, -0x800000, -2)) 1497db96d56Sopenharmony_ci self.assertEqual(audioop.add(datas[4], datas[4], 4), 1507db96d56Sopenharmony_ci packs[4](0, 0x2468acf0, 0x7fffffff, -0x80000000, 1517db96d56Sopenharmony_ci 0x7fffffff, -0x80000000, -2)) 1527db96d56Sopenharmony_ci 1537db96d56Sopenharmony_ci def test_bias(self): 1547db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 1557db96d56Sopenharmony_ci for bias in 0, 1, -1, 127, -128, 0x7fffffff, -0x80000000: 1567db96d56Sopenharmony_ci self.assertEqual(audioop.bias(b'', w, bias), b'') 1577db96d56Sopenharmony_ci self.assertEqual(audioop.bias(bytearray(), w, bias), b'') 1587db96d56Sopenharmony_ci self.assertEqual(audioop.bias(memoryview(b''), w, bias), b'') 1597db96d56Sopenharmony_ci self.assertEqual(audioop.bias(datas[1], 1, 1), 1607db96d56Sopenharmony_ci b'\x01\x13\x46\xbc\x80\x81\x00') 1617db96d56Sopenharmony_ci self.assertEqual(audioop.bias(datas[1], 1, -1), 1627db96d56Sopenharmony_ci b'\xff\x11\x44\xba\x7e\x7f\xfe') 1637db96d56Sopenharmony_ci self.assertEqual(audioop.bias(datas[1], 1, 0x7fffffff), 1647db96d56Sopenharmony_ci b'\xff\x11\x44\xba\x7e\x7f\xfe') 1657db96d56Sopenharmony_ci self.assertEqual(audioop.bias(datas[1], 1, -0x80000000), 1667db96d56Sopenharmony_ci datas[1]) 1677db96d56Sopenharmony_ci self.assertEqual(audioop.bias(datas[2], 2, 1), 1687db96d56Sopenharmony_ci packs[2](1, 0x1235, 0x4568, -0x4566, -0x8000, -0x7fff, 0)) 1697db96d56Sopenharmony_ci self.assertEqual(audioop.bias(datas[2], 2, -1), 1707db96d56Sopenharmony_ci packs[2](-1, 0x1233, 0x4566, -0x4568, 0x7ffe, 0x7fff, -2)) 1717db96d56Sopenharmony_ci self.assertEqual(audioop.bias(datas[2], 2, 0x7fffffff), 1727db96d56Sopenharmony_ci packs[2](-1, 0x1233, 0x4566, -0x4568, 0x7ffe, 0x7fff, -2)) 1737db96d56Sopenharmony_ci self.assertEqual(audioop.bias(datas[2], 2, -0x80000000), 1747db96d56Sopenharmony_ci datas[2]) 1757db96d56Sopenharmony_ci self.assertEqual(audioop.bias(datas[3], 3, 1), 1767db96d56Sopenharmony_ci packs[3](1, 0x123457, 0x45678a, -0x456788, 1777db96d56Sopenharmony_ci -0x800000, -0x7fffff, 0)) 1787db96d56Sopenharmony_ci self.assertEqual(audioop.bias(datas[3], 3, -1), 1797db96d56Sopenharmony_ci packs[3](-1, 0x123455, 0x456788, -0x45678a, 1807db96d56Sopenharmony_ci 0x7ffffe, 0x7fffff, -2)) 1817db96d56Sopenharmony_ci self.assertEqual(audioop.bias(datas[3], 3, 0x7fffffff), 1827db96d56Sopenharmony_ci packs[3](-1, 0x123455, 0x456788, -0x45678a, 1837db96d56Sopenharmony_ci 0x7ffffe, 0x7fffff, -2)) 1847db96d56Sopenharmony_ci self.assertEqual(audioop.bias(datas[3], 3, -0x80000000), 1857db96d56Sopenharmony_ci datas[3]) 1867db96d56Sopenharmony_ci self.assertEqual(audioop.bias(datas[4], 4, 1), 1877db96d56Sopenharmony_ci packs[4](1, 0x12345679, 0x456789ac, -0x456789aa, 1887db96d56Sopenharmony_ci -0x80000000, -0x7fffffff, 0)) 1897db96d56Sopenharmony_ci self.assertEqual(audioop.bias(datas[4], 4, -1), 1907db96d56Sopenharmony_ci packs[4](-1, 0x12345677, 0x456789aa, -0x456789ac, 1917db96d56Sopenharmony_ci 0x7ffffffe, 0x7fffffff, -2)) 1927db96d56Sopenharmony_ci self.assertEqual(audioop.bias(datas[4], 4, 0x7fffffff), 1937db96d56Sopenharmony_ci packs[4](0x7fffffff, -0x6dcba989, -0x3a987656, 0x3a987654, 1947db96d56Sopenharmony_ci -2, -1, 0x7ffffffe)) 1957db96d56Sopenharmony_ci self.assertEqual(audioop.bias(datas[4], 4, -0x80000000), 1967db96d56Sopenharmony_ci packs[4](-0x80000000, -0x6dcba988, -0x3a987655, 0x3a987655, 1977db96d56Sopenharmony_ci -1, 0, 0x7fffffff)) 1987db96d56Sopenharmony_ci 1997db96d56Sopenharmony_ci def test_lin2lin(self): 2007db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 2017db96d56Sopenharmony_ci self.assertEqual(audioop.lin2lin(datas[w], w, w), datas[w]) 2027db96d56Sopenharmony_ci self.assertEqual(audioop.lin2lin(bytearray(datas[w]), w, w), 2037db96d56Sopenharmony_ci datas[w]) 2047db96d56Sopenharmony_ci self.assertEqual(audioop.lin2lin(memoryview(datas[w]), w, w), 2057db96d56Sopenharmony_ci datas[w]) 2067db96d56Sopenharmony_ci 2077db96d56Sopenharmony_ci self.assertEqual(audioop.lin2lin(datas[1], 1, 2), 2087db96d56Sopenharmony_ci packs[2](0, 0x1200, 0x4500, -0x4500, 0x7f00, -0x8000, -0x100)) 2097db96d56Sopenharmony_ci self.assertEqual(audioop.lin2lin(datas[1], 1, 3), 2107db96d56Sopenharmony_ci packs[3](0, 0x120000, 0x450000, -0x450000, 2117db96d56Sopenharmony_ci 0x7f0000, -0x800000, -0x10000)) 2127db96d56Sopenharmony_ci self.assertEqual(audioop.lin2lin(datas[1], 1, 4), 2137db96d56Sopenharmony_ci packs[4](0, 0x12000000, 0x45000000, -0x45000000, 2147db96d56Sopenharmony_ci 0x7f000000, -0x80000000, -0x1000000)) 2157db96d56Sopenharmony_ci self.assertEqual(audioop.lin2lin(datas[2], 2, 1), 2167db96d56Sopenharmony_ci b'\x00\x12\x45\xba\x7f\x80\xff') 2177db96d56Sopenharmony_ci self.assertEqual(audioop.lin2lin(datas[2], 2, 3), 2187db96d56Sopenharmony_ci packs[3](0, 0x123400, 0x456700, -0x456700, 2197db96d56Sopenharmony_ci 0x7fff00, -0x800000, -0x100)) 2207db96d56Sopenharmony_ci self.assertEqual(audioop.lin2lin(datas[2], 2, 4), 2217db96d56Sopenharmony_ci packs[4](0, 0x12340000, 0x45670000, -0x45670000, 2227db96d56Sopenharmony_ci 0x7fff0000, -0x80000000, -0x10000)) 2237db96d56Sopenharmony_ci self.assertEqual(audioop.lin2lin(datas[3], 3, 1), 2247db96d56Sopenharmony_ci b'\x00\x12\x45\xba\x7f\x80\xff') 2257db96d56Sopenharmony_ci self.assertEqual(audioop.lin2lin(datas[3], 3, 2), 2267db96d56Sopenharmony_ci packs[2](0, 0x1234, 0x4567, -0x4568, 0x7fff, -0x8000, -1)) 2277db96d56Sopenharmony_ci self.assertEqual(audioop.lin2lin(datas[3], 3, 4), 2287db96d56Sopenharmony_ci packs[4](0, 0x12345600, 0x45678900, -0x45678900, 2297db96d56Sopenharmony_ci 0x7fffff00, -0x80000000, -0x100)) 2307db96d56Sopenharmony_ci self.assertEqual(audioop.lin2lin(datas[4], 4, 1), 2317db96d56Sopenharmony_ci b'\x00\x12\x45\xba\x7f\x80\xff') 2327db96d56Sopenharmony_ci self.assertEqual(audioop.lin2lin(datas[4], 4, 2), 2337db96d56Sopenharmony_ci packs[2](0, 0x1234, 0x4567, -0x4568, 0x7fff, -0x8000, -1)) 2347db96d56Sopenharmony_ci self.assertEqual(audioop.lin2lin(datas[4], 4, 3), 2357db96d56Sopenharmony_ci packs[3](0, 0x123456, 0x456789, -0x45678a, 2367db96d56Sopenharmony_ci 0x7fffff, -0x800000, -1)) 2377db96d56Sopenharmony_ci 2387db96d56Sopenharmony_ci def test_adpcm2lin(self): 2397db96d56Sopenharmony_ci self.assertEqual(audioop.adpcm2lin(b'\x07\x7f\x7f', 1, None), 2407db96d56Sopenharmony_ci (b'\x00\x00\x00\xff\x00\xff', (-179, 40))) 2417db96d56Sopenharmony_ci self.assertEqual(audioop.adpcm2lin(bytearray(b'\x07\x7f\x7f'), 1, None), 2427db96d56Sopenharmony_ci (b'\x00\x00\x00\xff\x00\xff', (-179, 40))) 2437db96d56Sopenharmony_ci self.assertEqual(audioop.adpcm2lin(memoryview(b'\x07\x7f\x7f'), 1, None), 2447db96d56Sopenharmony_ci (b'\x00\x00\x00\xff\x00\xff', (-179, 40))) 2457db96d56Sopenharmony_ci self.assertEqual(audioop.adpcm2lin(b'\x07\x7f\x7f', 2, None), 2467db96d56Sopenharmony_ci (packs[2](0, 0xb, 0x29, -0x16, 0x72, -0xb3), (-179, 40))) 2477db96d56Sopenharmony_ci self.assertEqual(audioop.adpcm2lin(b'\x07\x7f\x7f', 3, None), 2487db96d56Sopenharmony_ci (packs[3](0, 0xb00, 0x2900, -0x1600, 0x7200, 2497db96d56Sopenharmony_ci -0xb300), (-179, 40))) 2507db96d56Sopenharmony_ci self.assertEqual(audioop.adpcm2lin(b'\x07\x7f\x7f', 4, None), 2517db96d56Sopenharmony_ci (packs[4](0, 0xb0000, 0x290000, -0x160000, 0x720000, 2527db96d56Sopenharmony_ci -0xb30000), (-179, 40))) 2537db96d56Sopenharmony_ci 2547db96d56Sopenharmony_ci # Very cursory test 2557db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 2567db96d56Sopenharmony_ci self.assertEqual(audioop.adpcm2lin(b'\0' * 5, w, None), 2577db96d56Sopenharmony_ci (b'\0' * w * 10, (0, 0))) 2587db96d56Sopenharmony_ci 2597db96d56Sopenharmony_ci def test_lin2adpcm(self): 2607db96d56Sopenharmony_ci self.assertEqual(audioop.lin2adpcm(datas[1], 1, None), 2617db96d56Sopenharmony_ci (b'\x07\x7f\x7f', (-221, 39))) 2627db96d56Sopenharmony_ci self.assertEqual(audioop.lin2adpcm(bytearray(datas[1]), 1, None), 2637db96d56Sopenharmony_ci (b'\x07\x7f\x7f', (-221, 39))) 2647db96d56Sopenharmony_ci self.assertEqual(audioop.lin2adpcm(memoryview(datas[1]), 1, None), 2657db96d56Sopenharmony_ci (b'\x07\x7f\x7f', (-221, 39))) 2667db96d56Sopenharmony_ci for w in 2, 3, 4: 2677db96d56Sopenharmony_ci self.assertEqual(audioop.lin2adpcm(datas[w], w, None), 2687db96d56Sopenharmony_ci (b'\x07\x7f\x7f', (31, 39))) 2697db96d56Sopenharmony_ci 2707db96d56Sopenharmony_ci # Very cursory test 2717db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 2727db96d56Sopenharmony_ci self.assertEqual(audioop.lin2adpcm(b'\0' * w * 10, w, None), 2737db96d56Sopenharmony_ci (b'\0' * 5, (0, 0))) 2747db96d56Sopenharmony_ci 2757db96d56Sopenharmony_ci def test_invalid_adpcm_state(self): 2767db96d56Sopenharmony_ci # state must be a tuple or None, not an integer 2777db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.adpcm2lin, b'\0', 1, 555) 2787db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.lin2adpcm, b'\0', 1, 555) 2797db96d56Sopenharmony_ci # Issues #24456, #24457: index out of range 2807db96d56Sopenharmony_ci self.assertRaises(ValueError, audioop.adpcm2lin, b'\0', 1, (0, -1)) 2817db96d56Sopenharmony_ci self.assertRaises(ValueError, audioop.adpcm2lin, b'\0', 1, (0, 89)) 2827db96d56Sopenharmony_ci self.assertRaises(ValueError, audioop.lin2adpcm, b'\0', 1, (0, -1)) 2837db96d56Sopenharmony_ci self.assertRaises(ValueError, audioop.lin2adpcm, b'\0', 1, (0, 89)) 2847db96d56Sopenharmony_ci # value out of range 2857db96d56Sopenharmony_ci self.assertRaises(ValueError, audioop.adpcm2lin, b'\0', 1, (-0x8001, 0)) 2867db96d56Sopenharmony_ci self.assertRaises(ValueError, audioop.adpcm2lin, b'\0', 1, (0x8000, 0)) 2877db96d56Sopenharmony_ci self.assertRaises(ValueError, audioop.lin2adpcm, b'\0', 1, (-0x8001, 0)) 2887db96d56Sopenharmony_ci self.assertRaises(ValueError, audioop.lin2adpcm, b'\0', 1, (0x8000, 0)) 2897db96d56Sopenharmony_ci 2907db96d56Sopenharmony_ci def test_lin2alaw(self): 2917db96d56Sopenharmony_ci self.assertEqual(audioop.lin2alaw(datas[1], 1), 2927db96d56Sopenharmony_ci b'\xd5\x87\xa4\x24\xaa\x2a\x5a') 2937db96d56Sopenharmony_ci self.assertEqual(audioop.lin2alaw(bytearray(datas[1]), 1), 2947db96d56Sopenharmony_ci b'\xd5\x87\xa4\x24\xaa\x2a\x5a') 2957db96d56Sopenharmony_ci self.assertEqual(audioop.lin2alaw(memoryview(datas[1]), 1), 2967db96d56Sopenharmony_ci b'\xd5\x87\xa4\x24\xaa\x2a\x5a') 2977db96d56Sopenharmony_ci for w in 2, 3, 4: 2987db96d56Sopenharmony_ci self.assertEqual(audioop.lin2alaw(datas[w], w), 2997db96d56Sopenharmony_ci b'\xd5\x87\xa4\x24\xaa\x2a\x55') 3007db96d56Sopenharmony_ci 3017db96d56Sopenharmony_ci def test_alaw2lin(self): 3027db96d56Sopenharmony_ci encoded = b'\x00\x03\x24\x2a\x51\x54\x55\x58\x6b\x71\x7f'\ 3037db96d56Sopenharmony_ci b'\x80\x83\xa4\xaa\xd1\xd4\xd5\xd8\xeb\xf1\xff' 3047db96d56Sopenharmony_ci src = [-688, -720, -2240, -4032, -9, -3, -1, -27, -244, -82, -106, 3057db96d56Sopenharmony_ci 688, 720, 2240, 4032, 9, 3, 1, 27, 244, 82, 106] 3067db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 3077db96d56Sopenharmony_ci decoded = packs[w](*(x << (w * 8) >> 13 for x in src)) 3087db96d56Sopenharmony_ci self.assertEqual(audioop.alaw2lin(encoded, w), decoded) 3097db96d56Sopenharmony_ci self.assertEqual(audioop.alaw2lin(bytearray(encoded), w), decoded) 3107db96d56Sopenharmony_ci self.assertEqual(audioop.alaw2lin(memoryview(encoded), w), decoded) 3117db96d56Sopenharmony_ci 3127db96d56Sopenharmony_ci encoded = bytes(range(256)) 3137db96d56Sopenharmony_ci for w in 2, 3, 4: 3147db96d56Sopenharmony_ci decoded = audioop.alaw2lin(encoded, w) 3157db96d56Sopenharmony_ci self.assertEqual(audioop.lin2alaw(decoded, w), encoded) 3167db96d56Sopenharmony_ci 3177db96d56Sopenharmony_ci def test_lin2ulaw(self): 3187db96d56Sopenharmony_ci self.assertEqual(audioop.lin2ulaw(datas[1], 1), 3197db96d56Sopenharmony_ci b'\xff\xad\x8e\x0e\x80\x00\x67') 3207db96d56Sopenharmony_ci self.assertEqual(audioop.lin2ulaw(bytearray(datas[1]), 1), 3217db96d56Sopenharmony_ci b'\xff\xad\x8e\x0e\x80\x00\x67') 3227db96d56Sopenharmony_ci self.assertEqual(audioop.lin2ulaw(memoryview(datas[1]), 1), 3237db96d56Sopenharmony_ci b'\xff\xad\x8e\x0e\x80\x00\x67') 3247db96d56Sopenharmony_ci for w in 2, 3, 4: 3257db96d56Sopenharmony_ci self.assertEqual(audioop.lin2ulaw(datas[w], w), 3267db96d56Sopenharmony_ci b'\xff\xad\x8e\x0e\x80\x00\x7e') 3277db96d56Sopenharmony_ci 3287db96d56Sopenharmony_ci def test_ulaw2lin(self): 3297db96d56Sopenharmony_ci encoded = b'\x00\x0e\x28\x3f\x57\x6a\x76\x7c\x7e\x7f'\ 3307db96d56Sopenharmony_ci b'\x80\x8e\xa8\xbf\xd7\xea\xf6\xfc\xfe\xff' 3317db96d56Sopenharmony_ci src = [-8031, -4447, -1471, -495, -163, -53, -18, -6, -2, 0, 3327db96d56Sopenharmony_ci 8031, 4447, 1471, 495, 163, 53, 18, 6, 2, 0] 3337db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 3347db96d56Sopenharmony_ci decoded = packs[w](*(x << (w * 8) >> 14 for x in src)) 3357db96d56Sopenharmony_ci self.assertEqual(audioop.ulaw2lin(encoded, w), decoded) 3367db96d56Sopenharmony_ci self.assertEqual(audioop.ulaw2lin(bytearray(encoded), w), decoded) 3377db96d56Sopenharmony_ci self.assertEqual(audioop.ulaw2lin(memoryview(encoded), w), decoded) 3387db96d56Sopenharmony_ci 3397db96d56Sopenharmony_ci # Current u-law implementation has two codes fo 0: 0x7f and 0xff. 3407db96d56Sopenharmony_ci encoded = bytes(range(127)) + bytes(range(128, 256)) 3417db96d56Sopenharmony_ci for w in 2, 3, 4: 3427db96d56Sopenharmony_ci decoded = audioop.ulaw2lin(encoded, w) 3437db96d56Sopenharmony_ci self.assertEqual(audioop.lin2ulaw(decoded, w), encoded) 3447db96d56Sopenharmony_ci 3457db96d56Sopenharmony_ci def test_mul(self): 3467db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 3477db96d56Sopenharmony_ci self.assertEqual(audioop.mul(b'', w, 2), b'') 3487db96d56Sopenharmony_ci self.assertEqual(audioop.mul(bytearray(), w, 2), b'') 3497db96d56Sopenharmony_ci self.assertEqual(audioop.mul(memoryview(b''), w, 2), b'') 3507db96d56Sopenharmony_ci self.assertEqual(audioop.mul(datas[w], w, 0), 3517db96d56Sopenharmony_ci b'\0' * len(datas[w])) 3527db96d56Sopenharmony_ci self.assertEqual(audioop.mul(datas[w], w, 1), 3537db96d56Sopenharmony_ci datas[w]) 3547db96d56Sopenharmony_ci self.assertEqual(audioop.mul(datas[1], 1, 2), 3557db96d56Sopenharmony_ci b'\x00\x24\x7f\x80\x7f\x80\xfe') 3567db96d56Sopenharmony_ci self.assertEqual(audioop.mul(datas[2], 2, 2), 3577db96d56Sopenharmony_ci packs[2](0, 0x2468, 0x7fff, -0x8000, 0x7fff, -0x8000, -2)) 3587db96d56Sopenharmony_ci self.assertEqual(audioop.mul(datas[3], 3, 2), 3597db96d56Sopenharmony_ci packs[3](0, 0x2468ac, 0x7fffff, -0x800000, 3607db96d56Sopenharmony_ci 0x7fffff, -0x800000, -2)) 3617db96d56Sopenharmony_ci self.assertEqual(audioop.mul(datas[4], 4, 2), 3627db96d56Sopenharmony_ci packs[4](0, 0x2468acf0, 0x7fffffff, -0x80000000, 3637db96d56Sopenharmony_ci 0x7fffffff, -0x80000000, -2)) 3647db96d56Sopenharmony_ci 3657db96d56Sopenharmony_ci def test_ratecv(self): 3667db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 3677db96d56Sopenharmony_ci self.assertEqual(audioop.ratecv(b'', w, 1, 8000, 8000, None), 3687db96d56Sopenharmony_ci (b'', (-1, ((0, 0),)))) 3697db96d56Sopenharmony_ci self.assertEqual(audioop.ratecv(bytearray(), w, 1, 8000, 8000, None), 3707db96d56Sopenharmony_ci (b'', (-1, ((0, 0),)))) 3717db96d56Sopenharmony_ci self.assertEqual(audioop.ratecv(memoryview(b''), w, 1, 8000, 8000, None), 3727db96d56Sopenharmony_ci (b'', (-1, ((0, 0),)))) 3737db96d56Sopenharmony_ci self.assertEqual(audioop.ratecv(b'', w, 5, 8000, 8000, None), 3747db96d56Sopenharmony_ci (b'', (-1, ((0, 0),) * 5))) 3757db96d56Sopenharmony_ci self.assertEqual(audioop.ratecv(b'', w, 1, 8000, 16000, None), 3767db96d56Sopenharmony_ci (b'', (-2, ((0, 0),)))) 3777db96d56Sopenharmony_ci self.assertEqual(audioop.ratecv(datas[w], w, 1, 8000, 8000, None)[0], 3787db96d56Sopenharmony_ci datas[w]) 3797db96d56Sopenharmony_ci self.assertEqual(audioop.ratecv(datas[w], w, 1, 8000, 8000, None, 1, 0)[0], 3807db96d56Sopenharmony_ci datas[w]) 3817db96d56Sopenharmony_ci 3827db96d56Sopenharmony_ci state = None 3837db96d56Sopenharmony_ci d1, state = audioop.ratecv(b'\x00\x01\x02', 1, 1, 8000, 16000, state) 3847db96d56Sopenharmony_ci d2, state = audioop.ratecv(b'\x00\x01\x02', 1, 1, 8000, 16000, state) 3857db96d56Sopenharmony_ci self.assertEqual(d1 + d2, b'\000\000\001\001\002\001\000\000\001\001\002') 3867db96d56Sopenharmony_ci 3877db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 3887db96d56Sopenharmony_ci d0, state0 = audioop.ratecv(datas[w], w, 1, 8000, 16000, None) 3897db96d56Sopenharmony_ci d, state = b'', None 3907db96d56Sopenharmony_ci for i in range(0, len(datas[w]), w): 3917db96d56Sopenharmony_ci d1, state = audioop.ratecv(datas[w][i:i + w], w, 1, 3927db96d56Sopenharmony_ci 8000, 16000, state) 3937db96d56Sopenharmony_ci d += d1 3947db96d56Sopenharmony_ci self.assertEqual(d, d0) 3957db96d56Sopenharmony_ci self.assertEqual(state, state0) 3967db96d56Sopenharmony_ci 3977db96d56Sopenharmony_ci expected = { 3987db96d56Sopenharmony_ci 1: packs[1](0, 0x0d, 0x37, -0x26, 0x55, -0x4b, -0x14), 3997db96d56Sopenharmony_ci 2: packs[2](0, 0x0da7, 0x3777, -0x2630, 0x5673, -0x4a64, -0x129a), 4007db96d56Sopenharmony_ci 3: packs[3](0, 0x0da740, 0x377776, -0x262fca, 4017db96d56Sopenharmony_ci 0x56740c, -0x4a62fd, -0x1298c0), 4027db96d56Sopenharmony_ci 4: packs[4](0, 0x0da740da, 0x37777776, -0x262fc962, 4037db96d56Sopenharmony_ci 0x56740da6, -0x4a62fc96, -0x1298bf26), 4047db96d56Sopenharmony_ci } 4057db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 4067db96d56Sopenharmony_ci self.assertEqual(audioop.ratecv(datas[w], w, 1, 8000, 8000, None, 3, 1)[0], 4077db96d56Sopenharmony_ci expected[w]) 4087db96d56Sopenharmony_ci self.assertEqual(audioop.ratecv(datas[w], w, 1, 8000, 8000, None, 30, 10)[0], 4097db96d56Sopenharmony_ci expected[w]) 4107db96d56Sopenharmony_ci 4117db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.ratecv, b'', 1, 1, 8000, 8000, 42) 4127db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.ratecv, 4137db96d56Sopenharmony_ci b'', 1, 1, 8000, 8000, (1, (42,))) 4147db96d56Sopenharmony_ci 4157db96d56Sopenharmony_ci def test_reverse(self): 4167db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 4177db96d56Sopenharmony_ci self.assertEqual(audioop.reverse(b'', w), b'') 4187db96d56Sopenharmony_ci self.assertEqual(audioop.reverse(bytearray(), w), b'') 4197db96d56Sopenharmony_ci self.assertEqual(audioop.reverse(memoryview(b''), w), b'') 4207db96d56Sopenharmony_ci self.assertEqual(audioop.reverse(packs[w](0, 1, 2), w), 4217db96d56Sopenharmony_ci packs[w](2, 1, 0)) 4227db96d56Sopenharmony_ci 4237db96d56Sopenharmony_ci def test_tomono(self): 4247db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 4257db96d56Sopenharmony_ci data1 = datas[w] 4267db96d56Sopenharmony_ci data2 = bytearray(2 * len(data1)) 4277db96d56Sopenharmony_ci for k in range(w): 4287db96d56Sopenharmony_ci data2[k::2*w] = data1[k::w] 4297db96d56Sopenharmony_ci self.assertEqual(audioop.tomono(data2, w, 1, 0), data1) 4307db96d56Sopenharmony_ci self.assertEqual(audioop.tomono(data2, w, 0, 1), b'\0' * len(data1)) 4317db96d56Sopenharmony_ci for k in range(w): 4327db96d56Sopenharmony_ci data2[k+w::2*w] = data1[k::w] 4337db96d56Sopenharmony_ci self.assertEqual(audioop.tomono(data2, w, 0.5, 0.5), data1) 4347db96d56Sopenharmony_ci self.assertEqual(audioop.tomono(bytearray(data2), w, 0.5, 0.5), 4357db96d56Sopenharmony_ci data1) 4367db96d56Sopenharmony_ci self.assertEqual(audioop.tomono(memoryview(data2), w, 0.5, 0.5), 4377db96d56Sopenharmony_ci data1) 4387db96d56Sopenharmony_ci 4397db96d56Sopenharmony_ci def test_tostereo(self): 4407db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 4417db96d56Sopenharmony_ci data1 = datas[w] 4427db96d56Sopenharmony_ci data2 = bytearray(2 * len(data1)) 4437db96d56Sopenharmony_ci for k in range(w): 4447db96d56Sopenharmony_ci data2[k::2*w] = data1[k::w] 4457db96d56Sopenharmony_ci self.assertEqual(audioop.tostereo(data1, w, 1, 0), data2) 4467db96d56Sopenharmony_ci self.assertEqual(audioop.tostereo(data1, w, 0, 0), b'\0' * len(data2)) 4477db96d56Sopenharmony_ci for k in range(w): 4487db96d56Sopenharmony_ci data2[k+w::2*w] = data1[k::w] 4497db96d56Sopenharmony_ci self.assertEqual(audioop.tostereo(data1, w, 1, 1), data2) 4507db96d56Sopenharmony_ci self.assertEqual(audioop.tostereo(bytearray(data1), w, 1, 1), data2) 4517db96d56Sopenharmony_ci self.assertEqual(audioop.tostereo(memoryview(data1), w, 1, 1), 4527db96d56Sopenharmony_ci data2) 4537db96d56Sopenharmony_ci 4547db96d56Sopenharmony_ci def test_findfactor(self): 4557db96d56Sopenharmony_ci self.assertEqual(audioop.findfactor(datas[2], datas[2]), 1.0) 4567db96d56Sopenharmony_ci self.assertEqual(audioop.findfactor(bytearray(datas[2]), 4577db96d56Sopenharmony_ci bytearray(datas[2])), 1.0) 4587db96d56Sopenharmony_ci self.assertEqual(audioop.findfactor(memoryview(datas[2]), 4597db96d56Sopenharmony_ci memoryview(datas[2])), 1.0) 4607db96d56Sopenharmony_ci self.assertEqual(audioop.findfactor(b'\0' * len(datas[2]), datas[2]), 4617db96d56Sopenharmony_ci 0.0) 4627db96d56Sopenharmony_ci 4637db96d56Sopenharmony_ci def test_findfit(self): 4647db96d56Sopenharmony_ci self.assertEqual(audioop.findfit(datas[2], datas[2]), (0, 1.0)) 4657db96d56Sopenharmony_ci self.assertEqual(audioop.findfit(bytearray(datas[2]), 4667db96d56Sopenharmony_ci bytearray(datas[2])), (0, 1.0)) 4677db96d56Sopenharmony_ci self.assertEqual(audioop.findfit(memoryview(datas[2]), 4687db96d56Sopenharmony_ci memoryview(datas[2])), (0, 1.0)) 4697db96d56Sopenharmony_ci self.assertEqual(audioop.findfit(datas[2], packs[2](1, 2, 0)), 4707db96d56Sopenharmony_ci (1, 8038.8)) 4717db96d56Sopenharmony_ci self.assertEqual(audioop.findfit(datas[2][:-2] * 5 + datas[2], datas[2]), 4727db96d56Sopenharmony_ci (30, 1.0)) 4737db96d56Sopenharmony_ci 4747db96d56Sopenharmony_ci def test_findmax(self): 4757db96d56Sopenharmony_ci self.assertEqual(audioop.findmax(datas[2], 1), 5) 4767db96d56Sopenharmony_ci self.assertEqual(audioop.findmax(bytearray(datas[2]), 1), 5) 4777db96d56Sopenharmony_ci self.assertEqual(audioop.findmax(memoryview(datas[2]), 1), 5) 4787db96d56Sopenharmony_ci 4797db96d56Sopenharmony_ci def test_getsample(self): 4807db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 4817db96d56Sopenharmony_ci data = packs[w](0, 1, -1, maxvalues[w], minvalues[w]) 4827db96d56Sopenharmony_ci self.assertEqual(audioop.getsample(data, w, 0), 0) 4837db96d56Sopenharmony_ci self.assertEqual(audioop.getsample(bytearray(data), w, 0), 0) 4847db96d56Sopenharmony_ci self.assertEqual(audioop.getsample(memoryview(data), w, 0), 0) 4857db96d56Sopenharmony_ci self.assertEqual(audioop.getsample(data, w, 1), 1) 4867db96d56Sopenharmony_ci self.assertEqual(audioop.getsample(data, w, 2), -1) 4877db96d56Sopenharmony_ci self.assertEqual(audioop.getsample(data, w, 3), maxvalues[w]) 4887db96d56Sopenharmony_ci self.assertEqual(audioop.getsample(data, w, 4), minvalues[w]) 4897db96d56Sopenharmony_ci 4907db96d56Sopenharmony_ci def test_byteswap(self): 4917db96d56Sopenharmony_ci swapped_datas = { 4927db96d56Sopenharmony_ci 1: datas[1], 4937db96d56Sopenharmony_ci 2: packs[2](0, 0x3412, 0x6745, -0x6646, -0x81, 0x80, -1), 4947db96d56Sopenharmony_ci 3: packs[3](0, 0x563412, -0x7698bb, 0x7798ba, -0x81, 0x80, -1), 4957db96d56Sopenharmony_ci 4: packs[4](0, 0x78563412, -0x547698bb, 0x557698ba, 4967db96d56Sopenharmony_ci -0x81, 0x80, -1), 4977db96d56Sopenharmony_ci } 4987db96d56Sopenharmony_ci for w in 1, 2, 3, 4: 4997db96d56Sopenharmony_ci self.assertEqual(audioop.byteswap(b'', w), b'') 5007db96d56Sopenharmony_ci self.assertEqual(audioop.byteswap(datas[w], w), swapped_datas[w]) 5017db96d56Sopenharmony_ci self.assertEqual(audioop.byteswap(swapped_datas[w], w), datas[w]) 5027db96d56Sopenharmony_ci self.assertEqual(audioop.byteswap(bytearray(datas[w]), w), 5037db96d56Sopenharmony_ci swapped_datas[w]) 5047db96d56Sopenharmony_ci self.assertEqual(audioop.byteswap(memoryview(datas[w]), w), 5057db96d56Sopenharmony_ci swapped_datas[w]) 5067db96d56Sopenharmony_ci 5077db96d56Sopenharmony_ci def test_negativelen(self): 5087db96d56Sopenharmony_ci # from issue 3306, previously it segfaulted 5097db96d56Sopenharmony_ci self.assertRaises(audioop.error, 5107db96d56Sopenharmony_ci audioop.findmax, bytes(range(256)), -2392392) 5117db96d56Sopenharmony_ci 5127db96d56Sopenharmony_ci def test_issue7673(self): 5137db96d56Sopenharmony_ci state = None 5147db96d56Sopenharmony_ci for data, size in INVALID_DATA: 5157db96d56Sopenharmony_ci size2 = size 5167db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.getsample, data, size, 0) 5177db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.max, data, size) 5187db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.minmax, data, size) 5197db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.avg, data, size) 5207db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.rms, data, size) 5217db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.avgpp, data, size) 5227db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.maxpp, data, size) 5237db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.cross, data, size) 5247db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.mul, data, size, 1.0) 5257db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.tomono, data, size, 0.5, 0.5) 5267db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.tostereo, data, size, 0.5, 0.5) 5277db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.add, data, data, size) 5287db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.bias, data, size, 0) 5297db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.reverse, data, size) 5307db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.lin2lin, data, size, size2) 5317db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.ratecv, data, size, 1, 1, 1, state) 5327db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.lin2ulaw, data, size) 5337db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.lin2alaw, data, size) 5347db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.lin2adpcm, data, size, state) 5357db96d56Sopenharmony_ci 5367db96d56Sopenharmony_ci def test_string(self): 5377db96d56Sopenharmony_ci data = 'abcd' 5387db96d56Sopenharmony_ci size = 2 5397db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.getsample, data, size, 0) 5407db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.max, data, size) 5417db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.minmax, data, size) 5427db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.avg, data, size) 5437db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.rms, data, size) 5447db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.avgpp, data, size) 5457db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.maxpp, data, size) 5467db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.cross, data, size) 5477db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.mul, data, size, 1.0) 5487db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.tomono, data, size, 0.5, 0.5) 5497db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.tostereo, data, size, 0.5, 0.5) 5507db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.add, data, data, size) 5517db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.bias, data, size, 0) 5527db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.reverse, data, size) 5537db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.lin2lin, data, size, size) 5547db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.ratecv, data, size, 1, 1, 1, None) 5557db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.lin2ulaw, data, size) 5567db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.lin2alaw, data, size) 5577db96d56Sopenharmony_ci self.assertRaises(TypeError, audioop.lin2adpcm, data, size, None) 5587db96d56Sopenharmony_ci 5597db96d56Sopenharmony_ci def test_wrongsize(self): 5607db96d56Sopenharmony_ci data = b'abcdefgh' 5617db96d56Sopenharmony_ci state = None 5627db96d56Sopenharmony_ci for size in (-1, 0, 5, 1024): 5637db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.ulaw2lin, data, size) 5647db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.alaw2lin, data, size) 5657db96d56Sopenharmony_ci self.assertRaises(audioop.error, audioop.adpcm2lin, data, size, state) 5667db96d56Sopenharmony_ci 5677db96d56Sopenharmony_ciif __name__ == '__main__': 5687db96d56Sopenharmony_ci unittest.main() 569