/Lib/test/test_audioop.py

http://unladen-swallow.googlecode.com/ · Python · 173 lines · 131 code · 35 blank · 7 comment · 15 complexity · 0b0020a20086d393786154be9694bcdb MD5 · raw file

  1. import audioop
  2. import unittest
  3. from test.test_support import run_unittest
  4. def gendata1():
  5. return '\0\1\2'
  6. def gendata2():
  7. if audioop.getsample('\0\1', 2, 0) == 1:
  8. return '\0\0\0\1\0\2'
  9. else:
  10. return '\0\0\1\0\2\0'
  11. def gendata4():
  12. if audioop.getsample('\0\0\0\1', 4, 0) == 1:
  13. return '\0\0\0\0\0\0\0\1\0\0\0\2'
  14. else:
  15. return '\0\0\0\0\1\0\0\0\2\0\0\0'
  16. data = [gendata1(), gendata2(), gendata4()]
  17. class TestAudioop(unittest.TestCase):
  18. def test_max(self):
  19. self.assertEqual(audioop.max(data[0], 1), 2)
  20. self.assertEqual(audioop.max(data[1], 2), 2)
  21. self.assertEqual(audioop.max(data[2], 4), 2)
  22. def test_minmax(self):
  23. self.assertEqual(audioop.minmax(data[0], 1), (0, 2))
  24. self.assertEqual(audioop.minmax(data[1], 2), (0, 2))
  25. self.assertEqual(audioop.minmax(data[2], 4), (0, 2))
  26. def test_maxpp(self):
  27. self.assertEqual(audioop.maxpp(data[0], 1), 0)
  28. self.assertEqual(audioop.maxpp(data[1], 2), 0)
  29. self.assertEqual(audioop.maxpp(data[2], 4), 0)
  30. def test_avg(self):
  31. self.assertEqual(audioop.avg(data[0], 1), 1)
  32. self.assertEqual(audioop.avg(data[1], 2), 1)
  33. self.assertEqual(audioop.avg(data[2], 4), 1)
  34. def test_avgpp(self):
  35. self.assertEqual(audioop.avgpp(data[0], 1), 0)
  36. self.assertEqual(audioop.avgpp(data[1], 2), 0)
  37. self.assertEqual(audioop.avgpp(data[2], 4), 0)
  38. def test_rms(self):
  39. self.assertEqual(audioop.rms(data[0], 1), 1)
  40. self.assertEqual(audioop.rms(data[1], 2), 1)
  41. self.assertEqual(audioop.rms(data[2], 4), 1)
  42. def test_cross(self):
  43. self.assertEqual(audioop.cross(data[0], 1), 0)
  44. self.assertEqual(audioop.cross(data[1], 2), 0)
  45. self.assertEqual(audioop.cross(data[2], 4), 0)
  46. def test_add(self):
  47. data2 = []
  48. for d in data:
  49. str = ''
  50. for s in d:
  51. str = str + chr(ord(s)*2)
  52. data2.append(str)
  53. self.assertEqual(audioop.add(data[0], data[0], 1), data2[0])
  54. self.assertEqual(audioop.add(data[1], data[1], 2), data2[1])
  55. self.assertEqual(audioop.add(data[2], data[2], 4), data2[2])
  56. def test_bias(self):
  57. # Note: this test assumes that avg() works
  58. d1 = audioop.bias(data[0], 1, 100)
  59. d2 = audioop.bias(data[1], 2, 100)
  60. d4 = audioop.bias(data[2], 4, 100)
  61. self.assertEqual(audioop.avg(d1, 1), 101)
  62. self.assertEqual(audioop.avg(d2, 2), 101)
  63. self.assertEqual(audioop.avg(d4, 4), 101)
  64. def test_lin2lin(self):
  65. # too simple: we test only the size
  66. for d1 in data:
  67. for d2 in data:
  68. got = len(d1)//3
  69. wtd = len(d2)//3
  70. self.assertEqual(len(audioop.lin2lin(d1, got, wtd)), len(d2))
  71. def test_adpcm2lin(self):
  72. # Very cursory test
  73. self.assertEqual(audioop.adpcm2lin('\0\0', 1, None), ('\0\0\0\0', (0,0)))
  74. def test_lin2adpcm(self):
  75. # Very cursory test
  76. self.assertEqual(audioop.lin2adpcm('\0\0\0\0', 1, None), ('\0\0', (0,0)))
  77. def test_lin2alaw(self):
  78. self.assertEqual(audioop.lin2alaw(data[0], 1), '\xd5\xc5\xf5')
  79. self.assertEqual(audioop.lin2alaw(data[1], 2), '\xd5\xd5\xd5')
  80. self.assertEqual(audioop.lin2alaw(data[2], 4), '\xd5\xd5\xd5')
  81. def test_alaw2lin(self):
  82. # Cursory
  83. d = audioop.lin2alaw(data[0], 1)
  84. self.assertEqual(audioop.alaw2lin(d, 1), data[0])
  85. def test_lin2ulaw(self):
  86. self.assertEqual(audioop.lin2ulaw(data[0], 1), '\xff\xe7\xdb')
  87. self.assertEqual(audioop.lin2ulaw(data[1], 2), '\xff\xff\xff')
  88. self.assertEqual(audioop.lin2ulaw(data[2], 4), '\xff\xff\xff')
  89. def test_ulaw2lin(self):
  90. # Cursory
  91. d = audioop.lin2ulaw(data[0], 1)
  92. self.assertEqual(audioop.ulaw2lin(d, 1), data[0])
  93. def test_mul(self):
  94. data2 = []
  95. for d in data:
  96. str = ''
  97. for s in d:
  98. str = str + chr(ord(s)*2)
  99. data2.append(str)
  100. self.assertEqual(audioop.mul(data[0], 1, 2), data2[0])
  101. self.assertEqual(audioop.mul(data[1],2, 2), data2[1])
  102. self.assertEqual(audioop.mul(data[2], 4, 2), data2[2])
  103. def test_ratecv(self):
  104. state = None
  105. d1, state = audioop.ratecv(data[0], 1, 1, 8000, 16000, state)
  106. d2, state = audioop.ratecv(data[0], 1, 1, 8000, 16000, state)
  107. self.assertEqual(d1 + d2, '\000\000\001\001\002\001\000\000\001\001\002')
  108. def test_reverse(self):
  109. self.assertEqual(audioop.reverse(data[0], 1), '\2\1\0')
  110. def test_tomono(self):
  111. data2 = ''
  112. for d in data[0]:
  113. data2 = data2 + d + d
  114. self.assertEqual(audioop.tomono(data2, 1, 0.5, 0.5), data[0])
  115. def test_tostereo(self):
  116. data2 = ''
  117. for d in data[0]:
  118. data2 = data2 + d + d
  119. self.assertEqual(audioop.tostereo(data[0], 1, 1, 1), data2)
  120. def test_findfactor(self):
  121. self.assertEqual(audioop.findfactor(data[1], data[1]), 1.0)
  122. def test_findfit(self):
  123. self.assertEqual(audioop.findfit(data[1], data[1]), (0, 1.0))
  124. def test_findmax(self):
  125. self.assertEqual(audioop.findmax(data[1], 1), 2)
  126. def test_getsample(self):
  127. for i in range(3):
  128. self.assertEqual(audioop.getsample(data[0], 1, i), i)
  129. self.assertEqual(audioop.getsample(data[1], 2, i), i)
  130. self.assertEqual(audioop.getsample(data[2], 4, i), i)
  131. def test_negativelen(self):
  132. # from issue 3306, previously it segfaulted
  133. self.assertRaises(audioop.error,
  134. audioop.findmax, ''.join( chr(x) for x in xrange(256)), -2392392)
  135. def test_main():
  136. run_unittest(TestAudioop)
  137. if __name__ == '__main__':
  138. test_main()